SlideShare a Scribd company logo
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Позволяет задавать правила поведения объектов в соответствии с бизнес-логикой в декларативном представлении
Качественно новый уровень абстракции

More Related Content

PPTX
Dynamic Language Runtime
PPT
ROS - Robotics Operation System
PDF
Tarantool Silverbox, Юрий Востриков
PPTX
Андрей Акиньшин
PPTX
Расширение функциональности с использованием метаданных и аспектно-ориентиров...
PPTX
Fuse8.domain framework - анонс библиотеки для работы с данными
PPT
Getting Tested: методология интеграционного тестирования
PPTX
Аспектно-ориентированный подход на службе веб-приложений
Dynamic Language Runtime
ROS - Robotics Operation System
Tarantool Silverbox, Юрий Востриков
Андрей Акиньшин
Расширение функциональности с использованием метаданных и аспектно-ориентиров...
Fuse8.domain framework - анонс библиотеки для работы с данными
Getting Tested: методология интеграционного тестирования
Аспектно-ориентированный подход на службе веб-приложений

Viewers also liked (18)

PPTX
Metadata + JavaScript = ♥ Применение метаданных ViewModel для конфигурировани...
PPTX
Highload. Создание специализированных высокопроизводительных индексов
PPTX
Практика работы с крупными проектами - от Scrum с XP к Kanban
PDF
Пять самых важных составляющих процесса выпуска проектов
PPTX
WebsiteSpark
PPTX
DreamSpark
PPTX
Прагматичный подход к разработке гибких программных систем
PPTX
PDF
Карьера в IT
PPTX
ASP.NET MVC - как построить по-настоящему гибкое веб-приложение
PPTX
Big switch: жизнь после Microsoft
PPTX
Метапрограммирование интерфейсов в ASP.NET MVC Framework
PPTX
Автоматизированное тестирование веб приложений
PPTX
Agile: разработка + тестирование
PPT
Приемочные тесты на огурце
PDF
Пробуем Kanban!
PPTX
TDD или как не выстрелить себе в ногу
PPTX
Построение процесса тестирования
Metadata + JavaScript = ♥ Применение метаданных ViewModel для конфигурировани...
Highload. Создание специализированных высокопроизводительных индексов
Практика работы с крупными проектами - от Scrum с XP к Kanban
Пять самых важных составляющих процесса выпуска проектов
WebsiteSpark
DreamSpark
Прагматичный подход к разработке гибких программных систем
Карьера в IT
ASP.NET MVC - как построить по-настоящему гибкое веб-приложение
Big switch: жизнь после Microsoft
Метапрограммирование интерфейсов в ASP.NET MVC Framework
Автоматизированное тестирование веб приложений
Agile: разработка + тестирование
Приемочные тесты на огурце
Пробуем Kanban!
TDD или как не выстрелить себе в ногу
Построение процесса тестирования
Ad

More from Alexander Byndyu (20)

PDF
Инфраструктура для совместной предпроктной работы IT-компаний и реального ...
PDF
Применение low-code платформ в энтерпрайзе
PDF
Антихрупкость в IT или как полюбить изменения
PDF
Карта гипотез как метод стратегического планирования
PPTX
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработки
PDF
История о том, как техническое задание подменяет цель проекта
PDF
Шпаргалка по IT-миру для предпринимателя
PDF
Микросервисы, чистый PaaS и конкурс Мисс Россия
PDF
IT-директор на аутсорсе
PDF
Бизнес-гибкость через микросервисную архитектуру
PDF
Impact Mapping на практике v2
PDF
Кнопочное мышление против целостного IT-продукта
PDF
Пять самых важных составляющих процесса выпуска продуктов
PDF
Час Кода 2015
PDF
Impact mapping in practice
PPTX
Impact Mapping на практике
PDF
Customer satisfaction для программистов
PDF
CQRS на практике. В поиске точки масштабирования и новых метафор
PDF
Как размножается Sphinx
PDF
ElasticSearch: Найдется все... и быстро!
Инфраструктура для совместной предпроктной работы IT-компаний и реального ...
Применение low-code платформ в энтерпрайзе
Антихрупкость в IT или как полюбить изменения
Карта гипотез как метод стратегического планирования
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработки
История о том, как техническое задание подменяет цель проекта
Шпаргалка по IT-миру для предпринимателя
Микросервисы, чистый PaaS и конкурс Мисс Россия
IT-директор на аутсорсе
Бизнес-гибкость через микросервисную архитектуру
Impact Mapping на практике v2
Кнопочное мышление против целостного IT-продукта
Пять самых важных составляющих процесса выпуска продуктов
Час Кода 2015
Impact mapping in practice
Impact Mapping на практике
Customer satisfaction для программистов
CQRS на практике. В поиске точки масштабирования и новых метафор
Как размножается Sphinx
ElasticSearch: Найдется все... и быстро!
Ad

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