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

Презентация:



Advertisements
Похожие презентации
Dynamic Language Runtime Евгений Рыбак. Tieto. Содержание Часть IВведение Часть IIАрхитектура Часть IIIЯдро DLR Часть IVCommon Hosting Часть VВопросы.
Advertisements

Java-script – обзор и возможности.. JavaScript объектно-ориентированный скриптовый язык программирования. JavaScript обычно используется как встраиваемый.
Текстовый язык автоматного программирования В. С. Гуров, М. А. Мазин, А. А. Шалыто.
Объектно-ориентированное программирование Карпов В.Э. Смолток. Лекция 4. Байт-код.
Исполнитель: Утяшева И.А. Научный руководитель: к.ф.-м.н. Винокур В.В.
Автоматизация сборки и модификации разнородной компьютерной документации: разработка графического интерфейса приложения и формата файлов проекта. Исполнитель:
Автоматизация сборки и модификации разнородной компьютерной документации: разработка графического интерфейса приложения и формата файлов проекта. Исполнитель:
Трехслойная архитектура приложений, основанных на использовании баз данных.
Автоматизация сборки и модификации разнородной компьютерной документации: разработка графического интерфейса приложения и формата файлов проекта. Исполнитель:
Fuse8.DomainFramework – библиотека для работы с данными Арсен Фазылзянов fuse8 3-я конференция.NET разработчиков 25 сентября 2011.
Системы программирования Средства создания программ Интегрированные системы программированияИнтегрированные системы программирования Среды быстрого проектирования.
Алгоритмический трейдинг c Python Денис Колодин ген. директор AlgoMarkets LLC Денис Колодин ген. директор AlgoMarkets LLC.
Расширение функциональности с использованием метаданных и аспектно-ориентированного программирования Александр Межов ОАО ЧЭМК
Конференция «Платформа 2011» Онлайн-выставка решений партнеров.
Автоматизация сборки и модификации разнородной компьютерной документации: разработка графического интерфейса приложения и формата файлов проекта. Исполнитель:
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
ФИЛОСОФИЯ.NET Любому современному программисту, который желает идти в ногу с последними веяниями, каждые несколько лет приходится переучиваться.
Тренинг «Разработка веб-приложений на ASP.NET» Занятие 1 Знакомство с ASP.NET Гайдар Магдануров
OpenGL и Direct3D сравнение стандартов Выполнил: Пенкин А. Группа И-204.
БЭСТ Дизайнер проектов Введение Концепции Основные понятия.
Транксрипт:

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

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

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

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

DLR и IronRuby IronRuby Программа на Ruby Синтаксический разбор текста DLR ТекстAST FCL/BCL Binder CIL-код ВМ 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?! def onclick(s,e) window.alert "Hello, World!" end document.sayhello.attach_event('onclick', System::EventHandler [ System::Windows::Browser::HtmlEventArgs ].new(method(:onclick)) )

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

Ссылки Сайт проекта IronRuby Сайт проекта Gestalt Раздел IronRuby на Ruby Forum

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