Опубліковані 21-01-2010 01:49 від Polhovskiy
Зареєстрований як , ,

DLR. Введение.

   Итак, с приближением даты выхода .NET 4.0 все чаще и чаще возникает вопрос о том, что же такое этот DLR? Итак, постараюсь дать ответ и описать что же это.

The Dynamic Language Runtime (DLR) is a set of libraries built on the CLR to support dynamic language implementations on .NET. The DLR's mission is to enable an ecosystem of dynamic languages on .NET. A key value proposition of the .NET CLR is supporting multiple languages and allowing them to interoperate with each other.

Это первые строки в overview DLR. Они как  нельзя лучше описывают нам DLR и  цель его создания.  Но мы пойдем дальше. Поговорим о структуре и возможностях DLR. Впервые упомянули о DLR в 2007 году на MIX'07. В тот же день Scott Hanselman опубликовал в своем блоге эту картинку:

 

Первоначально языки писались поверх CLR, но потом DLR совместилось с CoreCLR и они стали почти одним целым. В .NET 4 у нас будут динамические возможности, которые предоставит DLR.

 

Итак, DLR необходим нам, прежде всего для того, что бы мы могли реализовывать свои динамические языки на .NET. Чем же DLR так хорош при создании свого языка? Ну, давайте подумаем, что же необходимо для создания своего языка?

 

1.                 Лексический анализатор

2.                 Семантический анализатор

3.                 Оптимизатор

4.                 Генератор кода

5.                 Парсер

6.                 Среду исполнения

7.                 Библиотеку компонентов

 

С появлением виртуальных машин этот список сократился до 5 пунктов:

 

1.                 Лексический анализатор

2.                 Семантический анализатор

3.                 Оптимизатор

4.                 Генератор кода

5.                 Парсер

 

Что же предоставляет нам DLR? Итак, с помощью DLR этот список сокращается до 4-х пунктов:

 

1.                 Лексический анализатор

2.                 Семантический анализатор

3.                 Генератор Expression Trees

4.                 Парсер

 

Т.е. DLR предоставляет нам остальные 4 пункта, а так же добавляет к ним возможность работать с кодом, написанным на других языках. Об этом позже, а сей час посмотрим на  Expression Trees. Они были разработаны в .NET Framework 3.5 для реализации LINQ, были ограничены только для целей LINQ(т.е. определенный набор типов, покрывающих цели LINQ). Expression Trees 2 будут частично включены в .NET 4.0 и они предназначены для того, что бы стать основным строительным механизмом кода. Так же во второй версии расширился набор типов (ForEachExpression, BlockExpession, GotoExpression).

Есть 4 плюса в том, что бы выбрать DLR для разработки динамического языка:

 

·                    Garbage collector (GC)

·                    Just-in-time compilator (JIT)

·                    Sandbox Security Model («Песочница»)

·                    Утилиты (Visual Studio, SQL Server)

 

Так же все создатели языка могут использовать уже готовые утилиты, разработанные для .NET. Для нас же, разработчиков на .NET, существует возможность использовать код, написанный на IronPython или IronRuby.

 

 

Эта картинка показывает, как же все это увязывается вместе и показывает нам что через DLR мы можем из любого языка обратиться к Office, Silverlight и т.п., а нас интересуют эти надписи в розовых прямоугольниках.

Expression Trees – это семантика.

Call site cashing – это кеширование выполняемых действий. Т.е. среда в режиме выполнения определяет типы переменных и смысл действия произведенного над ними и запоминает это. Если мы позже будем работать с переменными таких же типов и выполнять то же действие. То оно будет взято из кеша.

Dynamic Object Interop – точка взаимодействия. Это объект который включает в себя операции для взаимодействия с объектами не .NET среды.

 

В итоге: Мы получаем мощный инструмент для написания и использования динамических языков программирования, получаем возможность делать это все без особых сложностей. Как же это все использовать?…

 

Коментарі

igoris said:

а дальше? =)

February 18, 2010 10:14 AM
Polhovskiy said:

Хе-хе :)

February 21, 2010 12:22 PM
barashkov said:

Понравился первый график...

February 23, 2010 7:07 AM
Sergiy Baydachnyy said:

И кто же из Вас использовал DLR в Silverlight? Да - фантастический полет мысли, но пользы...

March 5, 2010 5:10 AM
Анонімні коментарі деактивовані. Увійдіть або Зареєструйтесь щоб мати доступ до ресурсів Спільноти.