1 / 24

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

3 -я конференция .NET разработчиков 2 5 сентября 2011. IronRuby : внутренности и примеры использования. Рахматиллаев Тимур IndyCode http://muyou.koumakan.jp. Ruby – он такой…. Динамический Рефлективный Интерпретируемый Объектно-ориентированный С динамической и утиной типизациями

ataret
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 3-я конференция .NET разработчиков 25 сентября 2011 IronRuby:внутренности и примеры использования Рахматиллаев Тимур IndyCode http://muyou.koumakan.jp

  2. Ruby – он такой… • Динамический • Рефлективный • Интерпретируемый • Объектно-ориентированный • С динамической и утиной типизациями • Развитые механизмы метапрограммирования

  3. Железные рубиныиз копей Microsoft • IronRuby– реализация языка программирования Ruby на платформе Microsoft .NET, основанная на использовании библиотеки DLR.

  4. Нужно больше динамики! • Dynamic Language Runtime(DLR) – библиотека, предоставляющая сервисы для реализации спецификации любого языка программирования. Основана на подходе представления функциональности конструкций языка с помощью узлов абстрактного синтаксического дерева.

  5. DLR и IronRuby IronRuby DLR Текст AST Программа на Ruby Синтаксический разбор текста Binder CIL-код ВМ CLR FCL/BCL Выполнение CIL-кода

  6. Возможности DLR

  7. Взгляд на Ruby со стороны

  8. Вызов кода на IronRubyиз .NET (C#) • Создание экземпляра среды исполнения IronRuby • Загрузка файлов с кодом (и их выполнение) или выполнение строк кода • Операции вызова методов, получения объектов, работы с переменными (локальными и глобальными)

  9. Можно все!

  10. А если наоборот? • Загружаем необходимую сборку (сборки) • Создаем экземпляры CLR-классови вызываем их методы • ????? • PROFIT • Можно использовать методы расширения и грабить корованы

  11. Когда использовать IronRuby

  12. Рост сложности программной системы • На начальном этапе разработки всю систему легко удержать в голове • Объем кода, реализующего логику бизнес-процессов, растет • Выделение новых слоев абстракции не дает четкого видения логики из-за недостаточности выразительных средств

  13. Головокружительная абстракция

  14. Domain Specific Language • Позволяет задавать правила поведения объектов в соответствии с бизнес-логикой в декларативном представлении • Качественно новый уровень абстракции • Сложность/простота определения решения задачи, стоящей перед DSL, полностью зависит от выразительности его синтаксических средств

  15. IronRubyкак SDK для создания DSL • Процесс написания DSL (с нуля): • Определение абстрактного синтаксиса • Определение конкретного синтаксиса • Определение правил горизонтальной и вертикальной трансформации • Написание синтаксического анализатора и транслятора • Возможно, написание интерпретатора

  16. IronRubyкак SDK для создания DSL • Написание DSL с помощью IronRuby • Определение конкретного синтаксиса

  17. Описываем ферму • ферма { • морковка 2.шт • баклажан 2.кг • свинья уровень: 80 • }

  18. Итоги • IronRubyпозволяет быстро создавать языки предметной области • Предоставляет механизмы синтаксического разбора исходного кода • Осуществляет вертикальную трансформацию • Имеет поддержку во многих редакторах • Используя метапрограммированиеможно добиться высокой гибкости и разнообразия языковых конструкций DSL

  19. Это работает!

  20. Проект Gestalt • Silverlight-приложение, использующее DLR для предоставления возможности использовать IronRubyкак замену JavaScript в качестве языка для работы с DOM-деревом

  21. Ruby… в теге script?! • <inputid="sayhello"type="button"value="Say, Hello!"/> • <scripttype="text/ruby"> • defonclick(s,e) • window.alert"Hello, World!" • end • document.sayhello.attach_event('onclick', • System::EventHandler[ • System::Windows::Browser::HtmlEventArgs • ].new(method(:onclick)) • ) • </script>

  22. Немного алхимии Используем Gestalt

  23. Ссылки • Сайт проекта IronRubyhttp://ironruby.net/ • Сайт проекта Gestalthttp://visitmix.com/labs/gestalt/ • Раздел IronRubyна Ruby Forumhttp://www.ruby-forum.com/forum/ironruby

  24. Спасибо за внимание • Тимур Рахматиллаев • IndyCode • muyou.prj@gmail.com • twitter.com/eskat0n

More Related