Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Среда времени выполнения динамических языков и языки Iron

Глава 8 из книги "Архитектура приложений с открытым исходным кодом", том 2.

Оригинал: The Dynamic Language Runtime and the Iron Languages
Автор: Jeff Hardy
Перевод: Н.Ромоданов

8.11. Усвоенные уроки

Среда DLR является полезным примером языково-нейтральной платформы для динамических языков, создаваемых поверх статический среды времени выполнения. Технологии, требующиеся для достижение высокой производительности динамического кода, достаточно нетривиальны при их надлежащей реализации, поэтому они были реализованы в среде DLR и были сделаны доступными для каждой реализации динамического языка.

IronPython и IronRuby являются хорошими примерами того, как создавать язык поверх среды DLR. Реализации очень похожи друг на друга, т.к. они разрабатывались в одно и то же время тесно сотрудничающими командами, но в реализации есть существенные различия. Совместная разработка нескольких разных языков (IronPython, IronRuby, прототип JavaScript и таинственный VBx - полностью динамическая версия VB), а также динамических возможностей языков C# и VB позволили во время разработки достаточно хорошо протестировать проект DLR.

Реальная разработка IronPython, IronRuby и DLR выполнялась совсем не так, как это было в то время в большинстве проектов Microsoft - с первого дня использовалась интерактивная модель agile-разработки с непрерывной интеграцией. Это позволило вносить измениться очень быстро, сразу, как это становилось необходимым, что было очень хорошо, поскольку уже на ранних стадиях разработки среда DLR стала разрабатываться в связке с динамическими возможностями языка С#. Хотя тесты среды DLR проходили очень быстро, всего лишь десятки секунд или около того, запуск тестов языка занимал слишком много времени (комплект тестов IronPython выполнялся в течение приблизительно 45 минут даже при использовании распараллеливания); улучшение этой ситуации смогло бы повысить скорость итераций. В конечном счете, эти итерации сходились к текущей разработке DLR, что, если это рассматривать по отдельности, выглядит чрезвычайно сложно, но когда это собиралось вместе, то, в общем, выглядело достаточно хорошо.

Разработка среды DLR в связке с языком C# была исключительно важным решением, поскольку это убедило, что у DLR есть сфера применения и «целевое назначение», но когда динамические возможности языка C# были реализованы, изменился политический климат (совпадающий с экономическим спадом) и с стороны компании была прекращена поддержка языков Iron. Например, интерфейс API хостинга никогда не входил в состав фреймворка .NET (и маловероятно, что это когда-нибудь произойдет); что означает, что, хотя все объекты все еще могут взаимодействовать так, как описано выше, в PowerShell 3, который также основан на среде DLR, используется набор интерфейсов API хостинга, абсолютно отличающийся от используемых в IronPython и IronRuby. Некоторые из членов команды, разрабатывающей DLR, продолжали работать над библиотекой «компилятор как сервис» языка C#, имеющей кодовое название «Roslyn» и поразительно похожей на интерфейс API хостинга IronPython и IronRuby. Но, благодаря чуду лицензирования открытого исходного кода, языки Iron продолжают выживать и даже процветают.


Вернуться к началу статьи.