3-я конференция .NET разработчиков25 сентября 2011IronRuby:внутренности и примеры использованияРахматиллаев ТимурIndyCodehttp://muyou.koumakan.jp
Ruby – он такой…Динамический
Рефлективный
Интерпретируемый
Объектно-ориентированный
С динамической и утиной типизациями
Развитые механизмы метапрограммированияЖелезные рубиныиз копей MicrosoftIronRuby– реализация языка программирования Ruby на платформе Microsoft .NET, основанная на использовании библиотеки DLR.
Нужно больше динамики!Dynamic Language Runtime(DLR) –  библиотека, предоставляющая сервисы для реализации спецификации любого языка программирования. Основана на подходе представления функциональности конструкций языка с помощью узлов абстрактного синтаксического дерева.
DLR и IronRubyIronRubyDLRТекстASTПрограмма на RubyСинтаксический разбор текстаBinderCIL-кодFCL/BCLВМ CLRВыполнение CIL-кода
Возможности DLR
Взгляд на Ruby со стороны
Вызов кода на IronRubyиз .NET (C#)Создание экземпляра среды исполнения IronRuby
Загрузка файлов с кодом (и их выполнение) или выполнение строк кода
Операции вызова методов, получения объектов, работы с переменными (локальными и глобальными)Можно все!
А если наоборот?Загружаем необходимую сборку (сборки)
Создаем экземпляры CLR-классови вызываем их методы
?????
PROFIT
Можно использовать методы расширения и грабить корованыКогда использовать IronRuby
Рост сложности программной системыНа начальном этапе разработки всю систему легко удержать в голове
Объем кода, реализующего логику бизнес-процессов, растет
Выделение новых слоев абстракции не дает четкого видения логики из-за недостаточности выразительных средствГоловокружительная абстракция
Domain Specific LanguageПозволяет задавать правила поведения объектов в соответствии с бизнес-логикой в декларативном представлении
Качественно новый уровень абстракции

IronRuby: внутренности и примеры использования