dynamic language runtime

Post on 22-May-2015

621 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Dynamic Language Runtime

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

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

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

Зачем?

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

Dynamic Typing

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

(+IDynamicMetaObjectProvider)

Dynamic Invocation

CallSite Binder Expression

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 байндингом

Expression Trees (.NET)

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

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

Block

Assign Loop

IfThenPostIncrementAssign

GreaterThanOrEqual Break

Языки

• IronPython• Phalanger• IronRuby

• Powershell• IronJS• IronScheme

• Nua (Lua)• IronLogo

• IronSmalltalk• DLRBasic

IronPython

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

Phalanger

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

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

IronRuby

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

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

Xостинг

Runtime

Engine Source

Scope

Compiled Code

Демо

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

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

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

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

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

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

Почитать

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

Вопросы?

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

k0st1x@ya.ru

konstantin.kosuhin

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

top related