dynamic language runtime

17
Dynamic Language Runtime Косухин Константин Скриптовые языки на платформе DLR, способы автоматизации рутинной работы с их помощью, а также интегрирование в конечное приложение

Upload: getdevnet

Post on 22-May-2015

621 views

Category:

Technology


5 download

DESCRIPTION

Видео и материалы со встречи: http://getdev.net/Event/dynamic-language-runtime В докладе рассмотрим скриптовые языки на платформе DLR, способы автоматизации рутинной работы с их помощью, а также интегрирование в конечное приложение.

TRANSCRIPT

Page 1: Dynamic Language Runtime

Dynamic Language Runtime

Косухин Константин

Скриптовые языки на платформе DLR, способы автоматизации рутинной

работы с их помощью, а также интегрирование в конечное приложение

Page 2: Dynamic Language Runtime

Зачем?

• Создание динамических языков на платформе .NET• Возможность динамического программирования в C# и VB.NET• Платформа Java давно это имеет

Page 3: Dynamic Language Runtime

Dynamic Typing

• Позднее связывание• Утиная типизация• Схож с технологией Reflection

(+IDynamicMetaObjectProvider)

Page 4: Dynamic Language Runtime

Dynamic Invocation

CallSite Binder Expression

Page 5: Dynamic Language Runtime

Expression Trees (С#)

DLR/CLR Привязка к .NET коду

Expression Tree

dynamic d = GetFoobar();d.CallMethod(42);

1. Expression<Func<int, string>> f = i => i.ToString();• Выражение может быть записано только в одну строку2. dynamic• Код, записанный с использованием переменной такого типа, собирается в

Expression с runtime байндингом

Page 6: Dynamic Language Runtime

Expression Trees (.NET)

int i = 2;while(true) { if(i >= 5) { break; } i++;}

• Набор выражений для создания алгоритмов (тело функции)• Статическая и динамическая типизация

Block

Assign Loop

IfThenPostIncrementAssign

GreaterThanOrEqual Break

Page 7: Dynamic Language Runtime

Языки

• IronPython• Phalanger• IronRuby

• Powershell• IronJS• IronScheme

• Nua (Lua)• IronLogo

• IronSmalltalk• DLRBasic

Page 8: Dynamic Language Runtime

IronPython

Имплементация языка Python• Имеет REPL• Интеграция в Visual Studio• Отладка• Компоновки в исполняемый файл

Page 9: Dynamic Language Runtime

Phalanger

Имплементация языка PHP• По заявлениям авторов, WordPress работает в 4 раза быстрее,

чем на классическом PHP• Компоновка в исполняемый файл• Поддержка нативных PHP расширений (x86 only)

Page 10: Dynamic Language Runtime

IronRuby

Имплементация языка Ruby• Имеет REPL• Отладка• Gems

Page 11: Dynamic Language Runtime

IronJSИмплементация языка JavaScript• ECMAScript 3.0• Половина кода написана на F#• По производительности превзошел IE8• Работает на CLRv2

Page 12: Dynamic Language Runtime

Xостинг

Runtime

Engine Source

Scope

Compiled Code

Page 13: Dynamic Language Runtime

Демо

Хостинг в приложении

Page 14: Dynamic Language Runtime

Безопасность

• Скрипт имеет доступ ко всему, что есть в домене• Создавайте скриптам отдельный домен (sandboxing)• Рекомендуется выполнять скрипты только с ограниченными правами• DLR помогает просто общаться между доменами — ключевые сервисы

наследуются от класса MarshalByRefObject

Page 15: Dynamic Language Runtime

Автоматизация Работы

• Поддержка большинства сценариев со стандартной библиотекой языка• Интеграция с WinForms и WPF• Continuous Integration

Page 16: Dynamic Language Runtime

Почитать

http://www.ironpythoninaction.com/http://www.ironpython.info/index.php/Main_Pagehttp://ironjs.wordpress.com/

Page 17: Dynamic Language Runtime

Вопросы?

Константин Косухин

[email protected]

konstantin.kosuhin

Специально для GetDev.NET