В конце мая пообщался я с Владиславом Шершульским - менеджером по стратегии платформ Microsoft Russia (на конференции НИТ-2010 в Судаке, на круглом столе у проф. Воскова).
Поспрашивал на разные темы, восстанавливаю по памяти и блокноту.
1. Какова судьба ОС Singularity? (
viewtopic.php?f=60&t=904)
Это интересный и важный для компании проект, который (остановлен? - этого я не понял..), но очень много решений из него пошло в Windows 7 и в "облако"- Azure.
Некоторые высокоуровневые декларативные описания оттуда (в частности, протоколы взаимодействий) тоже пошли в дело, но, вот тут интересно, цитирую: "Те средства, которые были введены в языке Sing#, оказались переусложнёнными относительно реальных потребностей".
2. Про методы, которые MS применяет сейчас.
Рассказ Шершульского - про методы при разработке ОС. Про другие проекты, в какой мере в них - неясно.
Всюду в W7 и Azure проводится политика безопасного программирования (насколько я понимаю, специальные варианты C# - как Sing# в Singularity). Про промежуточный код (MSIL) речи не шло, мне крайне сомнительно, что они его используют в ОС.
Шершульский описал политику по надёжности так: сейчас произошёл кардинальный сдвиг в ситуации - если раньше атаки шли на саму операционную систему, то сейчас, после радикального повышения её надёжности, атаки на комп. системы идут обычно через верхний прикладной софт (аськи и проч.). Соответственно, Microsoft заинтересована в пропаганде и распространении методов безопасного программирования в сообществе разработчиков, чтобы повысить общую надёжность систем на основе Windows.
MS интенсивно применяет DSL (Domain-Specific Languages), высокоуровневые описания (в том числе графические), из которых автоматически генерирует код.
Всюду, тотально специфицируются контракты на функции (пред- и пост-условия), которые затем частично контролируются автоматическими верификаторами.
Я специально уточнил, делается ли это на уровне ядра ОС - да, именно там в первую очередь.
3. Какова роль Клеменса Шиперски в создании .NET?
Шершульский сказал, что точно ответить на этот вопрос не может, но вообще - "кто-то говорит, что работы Вирта сильно повлияли на эти технологии MS, кто-то говорит, что нет; я лично склоняюсь к последнему мнению. Однако постоянно идут совместные проекты MS с виртовскими коллективами из ETH, но это не mainstream".
4. Было упомянута серьёзная ориентация на GPU-процессоры. В новые версии ОС закладывается повсеместное использование их для ускорения обычных вычислений. Сказано про какой-то новый браузер от MS, который "в 40 раз быстрее Google Chrome" - и, вроде, как раз за счёт использования GPU (для Java Script, что ли? именно за скорость его выполнения идёт основная борьба сейчас).
5. Я задал вопрос про то, есть ли некий центральный, пусть коллективный, "мозг", который определяет стратегию технологического развития компании.
Ответ: технологии развиваются достаточно естественным, эволюционным, итеративным путём, "как вырастает"; однако есть так называемый "архитектурный офис", возглавляемый Реем Ози, который отвечает "за правильность развития архитектуры в продуктах MS", и вообще, Рей Ози - центральная фигура в этих вопросах.
Однако в целом в компании очень свободное принятие технологических решений. "Если вы - компетентный в данном вопросе специалист, то нет никаких административных способов помешать вам сделать именно так, как вы считаете нужным".
Microsoft Research - это департамент чистых исследований; есть продуктовые группы, развивающие продукты компании, есть теперь Microsoft Lab - промежуточная структура между MS Research и продуктовыми группами (отвечает за внедрение НИОКРов).
Также MS периодически выпускает Future Vision - "что видится лет на 10 вперёд" - и последнее время большое внимание уделяется Natural-User-Interface-ам.
6. Наконец, было рассказано о новой инициативе MS (внимание для И21!).
Создана новая продуктовая группа - Technical Computing. Её возглавил Кирилл Фаенов.
Цель - создать некий "офис для инженеров и научных работников", который бы позволил им решать свои задачи, с программированием, расчётами, лёгким использованием разного внешнего оборудования, кластеров, вычисления на графических процессорах, работу с базами данных научной ориентации, и т.п.