InfoWorld, США

В корпорации хотят? чтобы платформа .Net заняла ведущее место в отрасли в части поддержки языков подобного рода
Джейсон Макконнелл: «Мы всегда, приветствуем развитие языковой экосистемы, инициируемое независимыми разработчиками»

Решение задачи адаптации динамических языков к особенностям среды .Net Framework в Microsoft решили возложить на сообщество разработчиков в целом. Старший редактор еженедельника InfoWorld Пол Крил взял интервью у менеджера Microsoft по продуктам Visual Studio Джейсона Макконнелла, отвечающего в корпорации за все языки программирования, и постарался выяснить, как в Microsoft оценивают перспективы динамических языков в рамках платформы .Net.

Какова официальная пози?ция Microsoft в отношении переноса динамических языков PHP, Perl, Python, Ruby и JavaScript на платформу .Net и в среду CLR (Common Language Runtime)?

Мы всегда хотели обеспечить поддержку в среде .Net Framework как можно большего количества языков, особенно тех из них, которые востребованы нашими клиентами. Упомянутые вами динамические языки в последнее время приобрели достаточно высокую популярность, поэтому мы готовы заявить, что рассматриваем возможность использования положительного опыта, накопленного сторонниками этих языков, при создании программного обеспечения для платформы .Net.

Какие практические шаги может предпринять Microsoft? Вы ведь поддерживаете контакты с клиентами и разработчиками, которые хотели бы получить соответствующие инструменты?

Безусловно. Мы внимательно следим за новыми языками. В частности, реализуется проект IronPython, результатам которого недавно был присвоен статус Release Candidate. Это проект сообщества в целом, отражающий стремление перенести динамические языки на платформу .Net. Если хотите, его можно назвать визитной карточкой нашей стратегии.

Обладают ли, на ваш взгляд, традиционно используемые Microsoft языки типа Visual Basic или C# какими-то преимуществами перед динамическими языками?

Они относятся совсем к иному классу. В частности, C# — это строго типизированный статический язык. Visual Basic можно рассматривать как некую разновидность динамического языка, ему всегда были присущи определенные динамические черты. Динамические языки больше подходят для быстрой разработки приложений, в то время как статические типизированные языки предназначены для построения крупных систем с хорошо продуманными интерфейсами. По сути, речь идет о выборе оптимального средства для решения конкретной задачи. Думаю, сравнивать статические типизированные языки с динамическими попросту некорректно.

Какое определение дали бы вы динамическим языкам программирования?

Динамический язык позволяет определять типы данных и осуществлять синтаксический анализ и компиляцию «на лету», непосредственно на этапе выполнения — в этом смысле он действительно весьма динамичен. В отличие от этого у статического языка соответствующие задачи решаются на этапе компиляции.

С чем вы связываете растущую популярность новых языков? Может быть, все дело в преимуществах, которые они предоставляют разработчикам при создании Web-приложений?

Безусловно, распространение Web-технологий способствовало этому. Думаю, что следует упомянуть еще и о Web-сервисах, а не только о Web-сайтах, сценариях типа Jscript и механизмах, встроенных в браузеры. Кроме того, речь идет и о возможности объединения в рамках Web различных компонентов по аналогии с Web-сервисами. Оглядываясь на середину и конец 90-х годов, можно заметить, что языки сценариев приобрели популярность в качестве средства написания макросов, расширявших возможности офисных приложений. Начиная со времени появления модели Component Object Model, мы связывали компоненты, построенные на базе Windows, и интегрировали их для создания новых приложений. Та же самая тенденция наблюдается сегодня в области Web-технологий.

Что в Microsoft думают о разработке независимыми организациями средств поддержки динамических языков для .Net, например, о Ruby in Steel или о проекте Phalanger для PHP?

Мы, как и всегда, приветствуем развитие языковой экосистемы, инициируемое независимыми разработчиками. Корпорация заняла такую позицию еще в 2001 году, анонсировав среду CLR. Мы поддерживаем подобные начинания, а в ходе недавнего симпозиума Lang.Net нами была предпринята попытка обобщить некоторые из витающих в воздухе идей и привлечь сообщество к созданию новых языковых средств для платформы .Net.

И каковы результаты симпозиума?

Я бы назвал их весьма позитивными. На симпозиуме выступали как профессионалы, так и люди, которые рассматривают этот род занятий для себя в качестве хобби. Было много интеллектуальных дискуссий. Симпозиум заставил всех всерьез задуматься о технологиях нового поколения.

Была ли по его итогам сформулирована какая-то определенная позиция Microsoft?

Нет. Между представителями отрасли, собравшимися вместе, состоялась, если хотите, непринужденная беседа. В ней приняли участие и кабинетные теоретики, и люди практической направленности. Были очерчены существующие тенденции. Кое-что из этого мы собираемся взять на вооружение.

Можно ли в свете растущей популярности динамических языков говорить о том, что дни традиционных для Microsoft языков, а также языка Java сочтены?

Я бы охарактеризовал Java, C# и C++ как языки системного программирования, а таким языкам всегда найдется место в этом мире, потому что они очень хорошо подходят для написания строгих, четко определенных программных систем промышленного уровня. Языки системного программирования будут «выталкивать на поверхность» функционал макросов. Появится большой набор рабочих элементов, а связи между ними будут формироваться с помощью сценариев. И здесь позиции динамических языков действительно весьма сильны.

Вы согласны с тем, что среда CLR является недостаточно дружественной по отношению к динамическим языкам?

В .Net Framework 2.0 появились усовершенствования, позволяющие осуществлять динамические вызовы. Мы ищем пути улучшения своих платформ с целью более полной поддержки динамических языков, но это не значит, что пока наша среда остается недружественной по отношению к ним. Посмотрите на IronPython, и вы увидите, что проект добился очень хороших результатов. Это служит еще одним доказательством того, что о недружественной среде говорить не стоит.

Будут ли сотрудники Microsoft принимать активное участие в реализации проектов Phalanger и IronPython?

Нет, мы не собираемся этого делать. Данные проекты реализуются сообществом разработчиков. (Проект IronPython был инициирован сообществом, но затем в Microsoft взяли его под свое крыло. — П.К.)

Существует ли краткий перечень динамических языков, над расширением поддержки которых и упрощением выполнения соответствующих конструкций на платформе .Net вы сейчас работаете?

Не сейчас. Мы изучаем, как можно улучшить работу динамических языков в целом. Все здесь должно делаться единообразно, ведь среда CLR является общей для самых разных языков. Аналогичные работы мы проводим (или планируем провести) для среды времени выполнения.

Следовательно, все улучшения, вносимые в технологию CLR для динамических языков, можно отнести к произвольному динамическому языку?

Да.

Значит, выпуск корпорацией версии PHP, Perl или чего-то еще не планируется? Вы собираетесь отдать все на откуп независимым разработчикам?

Пока у нас нет каких-то определенных намерений на этот счет. Платформа .Net должна занять ведущее место в отрасли в части поддержки языков подобного рода. Мы постоянно совершенствуем эту платформу.

На сегодняшний день выпущена версия .Net Framework 2.0, а версия 3.0 должна появиться вместе с Windows Vista. Очередной набор инструментальных средств будет интегрирован в версию 3.5.

Таким образом, мы постоянно улучшаем свои продукты, внимательно следя за переменами, которые происходят в технологиях, и за новыми потребностями наших клиентов.