IronRuby: внутренности и примеры использования
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 1,324 views

По материалам конференции .NET разработчиков - www.dotnetconf.ru

По материалам конференции .NET разработчиков - www.dotnetconf.ru

Statistics

Views

Total Views
1,324
Views on SlideShare
1,060
Embed Views
264

Actions

Likes
0
Downloads
3
Comments
0

5 Embeds 264

http://www.dotnetconf.ru 184
http://dotnetconf.ru 72
http://localhost:2452 4
http://localhost 3
http://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • 3-я конференция .NET разработчиков
    25 сентября 2011
    IronRuby:внутренности и примеры использования
    Рахматиллаев Тимур
    IndyCode
    http://muyou.koumakan.jp
  • Ruby – он такой…
    • Динамический
    • Рефлективный
    • Интерпретируемый
    • Объектно-ориентированный
    • С динамической и утиной типизациями
    • Развитые механизмы метапрограммирования
  • Железные рубиныиз копей Microsoft
    IronRuby– реализация языка программирования Ruby на платформе Microsoft .NET, основанная на использовании библиотеки DLR.
  • Нужно больше динамики!
    Dynamic Language Runtime(DLR) – библиотека, предоставляющая сервисы для реализации спецификации любого языка программирования. Основана на подходе представления функциональности конструкций языка с помощью узлов абстрактного синтаксического дерева.
  • DLR и IronRuby
    IronRuby
    DLR
    Текст
    AST
    Программа на Ruby
    Синтаксический
    разбор текста
    Binder
    CIL-код
    FCL/BCL
    ВМ CLR
    Выполнение
    CIL-кода
  • Возможности DLR
  • Взгляд на Ruby со стороны
  • Вызов кода на IronRubyиз .NET (C#)
    • Создание экземпляра среды исполнения IronRuby
    • Загрузка файлов с кодом (и их выполнение) или выполнение строк кода
    • Операции вызова методов, получения объектов, работы с переменными (локальными и глобальными)
  • Можно все!
  • А если наоборот?
    • Загружаем необходимую сборку (сборки)
    • Создаем экземпляры CLR-классови вызываем их методы
    • ?????
    • PROFIT
    • Можно использовать методы расширения и грабить корованы
  • Когда использовать IronRuby
  • Рост сложности программной системы
    • На начальном этапе разработки всю систему легко удержать в голове
    • Объем кода, реализующего логику бизнес-процессов, растет
    • Выделение новых слоев абстракции не дает четкого видения логики из-за недостаточности выразительных средств
  • Головокружительная абстракция
  • Domain Specific Language
    • Позволяет задавать правила поведения объектов в соответствии с бизнес-логикой в декларативном представлении
    • Качественно новый уровень абстракции
    • Сложность/простота определения решения задачи, стоящей перед DSL, полностью зависит от выразительности его синтаксических средств
  • IronRubyкак SDK для создания DSL
    • Процесс написания DSL (с нуля):
    Определение абстрактного синтаксиса
    Определение конкретного синтаксиса
    Определение правил горизонтальной и вертикальной трансформации
    Написание синтаксического анализатора и транслятора
    Возможно, написание интерпретатора
  • IronRubyкак SDK для создания DSL
    • Написание DSL с помощью IronRuby
    Определение конкретного синтаксиса
  • Описываем ферму
    ферма {
    морковка 2.шт
    баклажан 2.кг
    свинья уровень: 80
    }
  • Итоги
    IronRubyпозволяет быстро создавать языки предметной области
    Предоставляет механизмы синтаксического разбора исходного кода
    Осуществляет вертикальную трансформацию
    Имеет поддержку во многих редакторах
    Используя метапрограммированиеможно добиться высокой гибкости и разнообразия языковых конструкций DSL
  • Это работает!
  • Проект Gestalt
    Silverlight-приложение, использующее DLR для предоставления возможности использовать IronRubyкак замену JavaScript в качестве языка для работы с DOM-деревом
  • 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>
  • Немного алхимии
    Используем Gestalt
  • Ссылки
    • Сайт проекта IronRubyhttp://ironruby.net/
    • Сайт проекта Gestalthttp://visitmix.com/labs/gestalt/
    • Раздел IronRubyна Ruby Forumhttp://www.ruby-forum.com/forum/ironruby
  • Спасибо за внимание
    Тимур Рахматиллаев
    IndyCode
    muyou.prj@gmail.com
    twitter.com/eskat0n