SlideShare a Scribd company logo
1 of 40
Dynamic Language Runtime Евгений Рыбак.  Tieto
Содержание ,[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object]
Введение Первый анонс: MIX07 –  30  апреля 2007 года
Введение Основные цели : Портирование динамических  языков на платформу . NET Добавление динамических возможностей в существующие  языки (  C#, VB.NET)
[object Object],[object Object]
Runtime Hosting model Language Implementation     Архитектура DLR
Dynamic  Language Runtime IronPython Silverlight Others… VB.NET C# IronRuby Object Binder JavaScript Binder COM Binder Ruby Binder Python Binder     Архитектура
Протокол взаимодействия: 12 общих операций Бинарные операции Работа с методами Работа с индексаторами     Архитектура
Итак,  DLR Имеет 12 общих операций м/д языками Позволяет динамическим и статическим  языкам работать вместе Состоит из 3  компонент Надстройка над  CLR
[object Object],[object Object]
  Ядро  DLR Rules  Binders CallSite DynamicObject ExpandoObject COM Interop Utilities
  Ядро  DLR   1 )   obj –  класс или объект? 2 )   Add –  метод или делегат?   3 )   Нужно ли просматривать иерархию  наследования?   4 )   А что это такое в параметрах?   5 )   Подходят ли эти параметры к методу или делегату? obj. Add (1, 2)
  Ядро  DLR   6 )   Не подходят? А существует ли   преобразование между типами? 7 )  Явное или неявное?   8 )   Пользовательское преобразование?   9 ) ... 10 )   ... obj. Add (1, 2)
CallSite<T> CallSite<T> механизм  к э ширования   операций
CallSite<T> 3  независимых  кэша :   L0:  Делегат  Target L1:   История  CallSite- а L2:   История похожих  CallSite- ов
Ядро  DLR -  Кэширование ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],L0 : Target
Ядро  DLR -  Кэширование ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],L0 : Target L1 :  Update
Ядро  DLR -  Кэширование ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],L0 : Target L1 :  Update L2 :  Update
Ядро  DLR - Binders Binder:  Пример : GetMemenerBinder   obj.Method SetMemberBinder   obj.Property = 100 GetIndexBinder   obj[1]  или  obj[“key”] Binders  -  ключевые компоненты , отвечающие за   выполнение операций
Результат работы  Binder -а – правило ( Rule) X + Y Ядро  DLR - Binders If  (x  is int   && y  is int ) { return   ( int )x + ( int )y   } ( int )x + ( int )y
Ядро  DLR -  Кэширование L0 : Target if  (x  is int   && y  is int ) { return   ( int )x + ( int )y   } site.Update(…)
Ядро  DLR -  Кэширование L0 : Target L1 :  Update Локальная история:     IList<Rule>
Ядро  DLR -  Кэширование L0 : Target L1 :  Update L2 :  Update Глобальная история: IList<Rule>
DynamicObject Точка входа в протокол взаимодействия между языками Облегченная реализация всех  возможных дин амических  операций
Эффективная реализация динамического объекта Позволяет : Добавлять новые/Устанавливать/ Извлекать члены класса ExpandoObject
[object Object],[object Object]
Common Hosting Хостинг  DLR  языков в  . NET  приложениях Например : Выполнение  IronPython, IronRuby кода в  .NET  приложении
Common Hosting Возможности:   1 )   Исполнение фрагмента кода ,[object Object],  3 )  Создание области исполнения ( Scope) ,[object Object],  5 )  Компиляция кода ,[object Object]
Common Hosting Процесс Домены приложения
Common Hosting Домен приложения ScriptRuntime
Common Hosting ScriptRuntime ScriptScope
Common Hosting ScriptRuntime .NET  приложение Script Scope (IronPython)
Common Hosting ScriptRuntime .NET  приложение Script Scope (IronPython)
Common Hosting ДЕМО
Итого  -  Архитектура Часть  II Состоит из 3  компонент Надстройка над  CLR Имеет 12 общих операций м/д языками
Итого  -  Кэширование Часть  II Часть  III Механизм  кэширования 3 независимых  кэша   Возможности  для авторов библиотек
Итого  – Common Hosting Часть  II Часть  III Часть  VI Взаимодействие .NET  и динамических языков  ( IronPython)
[object Object],[object Object]
СПАСИБО ЗА ВНИМАНИЕ http://belarusdotnet.org http://belarusdotnet.org/blogs/Engler

More Related Content

What's hot

Anton Alexanenkov - Tor and Botnet C&C
Anton Alexanenkov -  Tor and Botnet C&C Anton Alexanenkov -  Tor and Botnet C&C
Anton Alexanenkov - Tor and Botnet C&C DefconRussia
 
Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»
Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»
Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»Tanya Denisyuk
 
Design by Contract
Design by ContractDesign by Contract
Design by ContractKiev ALT.NET
 
Kirill A Korinskiy Rit2010 No Sql Storage
Kirill A  Korinskiy Rit2010 No Sql StorageKirill A  Korinskiy Rit2010 No Sql Storage
Kirill A Korinskiy Rit2010 No Sql Storagerit2010
 
Devconf 2014 Трассировка событий при логировании
Devconf 2014 Трассировка событий при логированииDevconf 2014 Трассировка событий при логировании
Devconf 2014 Трассировка событий при логированииAlex Popov
 
Семинар 10. Параллельное программирование на MPI (часть 3)
Семинар 10. Параллельное программирование на MPI (часть 3)Семинар 10. Параллельное программирование на MPI (часть 3)
Семинар 10. Параллельное программирование на MPI (часть 3)Mikhail Kurnosov
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooBadoo Development
 
Cocoa Networking
Cocoa NetworkingCocoa Networking
Cocoa Networkingguest57eb8a
 
Andrey Borodin "Architecture of online backup for various DBMS"
Andrey Borodin "Architecture of online backup for various DBMS"Andrey Borodin "Architecture of online backup for various DBMS"
Andrey Borodin "Architecture of online backup for various DBMS"Fwdays
 
"Внутренности" CPython, часть II
"Внутренности" CPython, часть II"Внутренности" CPython, часть II
"Внутренности" CPython, часть IIPython Meetup
 
Инфрраструктура ЦОД - интерконнект от Qlogik
Инфрраструктура ЦОД - интерконнект от QlogikИнфрраструктура ЦОД - интерконнект от Qlogik
Инфрраструктура ЦОД - интерконнект от QlogikExpolink
 
To Go или не to Go
To Go или не to GoTo Go или не to Go
To Go или не to GoIvan Zezyulya
 
Александр Крижановский, NatSys Lab
Александр Крижановский, NatSys LabАлександр Крижановский, NatSys Lab
Александр Крижановский, NatSys LabOntico
 

What's hot (17)

Anton Alexanenkov - Tor and Botnet C&C
Anton Alexanenkov -  Tor and Botnet C&C Anton Alexanenkov -  Tor and Botnet C&C
Anton Alexanenkov - Tor and Botnet C&C
 
Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»
Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»
Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»
 
Design by Contract
Design by ContractDesign by Contract
Design by Contract
 
Kirill A Korinskiy Rit2010 No Sql Storage
Kirill A  Korinskiy Rit2010 No Sql StorageKirill A  Korinskiy Rit2010 No Sql Storage
Kirill A Korinskiy Rit2010 No Sql Storage
 
Devconf 2014 Трассировка событий при логировании
Devconf 2014 Трассировка событий при логированииDevconf 2014 Трассировка событий при логировании
Devconf 2014 Трассировка событий при логировании
 
Семинар 10. Параллельное программирование на MPI (часть 3)
Семинар 10. Параллельное программирование на MPI (часть 3)Семинар 10. Параллельное программирование на MPI (часть 3)
Семинар 10. Параллельное программирование на MPI (часть 3)
 
Cloud Haskell. Александр Вершилов
Cloud Haskell. Александр ВершиловCloud Haskell. Александр Вершилов
Cloud Haskell. Александр Вершилов
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в Badoo
 
Переход на Php 7 и итоги
Переход на Php 7 и итогиПереход на Php 7 и итоги
Переход на Php 7 и итоги
 
Cocoa Networking
Cocoa NetworkingCocoa Networking
Cocoa Networking
 
Andrey Borodin "Architecture of online backup for various DBMS"
Andrey Borodin "Architecture of online backup for various DBMS"Andrey Borodin "Architecture of online backup for various DBMS"
Andrey Borodin "Architecture of online backup for various DBMS"
 
"Внутренности" CPython, часть II
"Внутренности" CPython, часть II"Внутренности" CPython, часть II
"Внутренности" CPython, часть II
 
Инфрраструктура ЦОД - интерконнект от Qlogik
Инфрраструктура ЦОД - интерконнект от QlogikИнфрраструктура ЦОД - интерконнект от Qlogik
Инфрраструктура ЦОД - интерконнект от Qlogik
 
Кратко о Mac OS X
Кратко о Mac OS XКратко о Mac OS X
Кратко о Mac OS X
 
To Go или не to Go
To Go или не to GoTo Go или не to Go
To Go или не to Go
 
OpenACC short review
OpenACC short reviewOpenACC short review
OpenACC short review
 
Александр Крижановский, NatSys Lab
Александр Крижановский, NatSys LabАлександр Крижановский, NatSys Lab
Александр Крижановский, NatSys Lab
 

Viewers also liked

Использование NTFS Reparse points на примере Windows HSM
Использование NTFS Reparse points на примере Windows HSMИспользование NTFS Reparse points на примере Windows HSM
Использование NTFS Reparse points на примере Windows HSMSQALab
 
Training center inside the company. How much is a fish?
Training center inside the company. How much is a fish?Training center inside the company. How much is a fish?
Training center inside the company. How much is a fish?SQALab
 
Автоматическое функциональное тестирование в рамках процесса непрерывной инте...
Автоматическое функциональное тестирование в рамках процесса непрерывной инте...Автоматическое функциональное тестирование в рамках процесса непрерывной инте...
Автоматическое функциональное тестирование в рамках процесса непрерывной инте...SQALab
 
Постановка процесса тестирования в Agile
Постановка процесса тестирования в AgileПостановка процесса тестирования в Agile
Постановка процесса тестирования в AgileSQALab
 
Тестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиТестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиSQALab
 
Увеличиваем мощь фреймворка Kdt & code`s generator
Увеличиваем мощь фреймворка   Kdt & code`s generatorУвеличиваем мощь фреймворка   Kdt & code`s generator
Увеличиваем мощь фреймворка Kdt & code`s generatorSQALab
 
Уроки, полученные при проведении автоматизированного приемочного тестирования
Уроки, полученные при проведении автоматизированного приемочного тестированияУроки, полученные при проведении автоматизированного приемочного тестирования
Уроки, полученные при проведении автоматизированного приемочного тестированияSQALab
 
Как свести к нулю количество конфликтов между проектной командой и командами ...
Как свести к нулю количество конфликтов между проектной командой и командами ...Как свести к нулю количество конфликтов между проектной командой и командами ...
Как свести к нулю количество конфликтов между проектной командой и командами ...SQALab
 
А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?SQALab
 
Тестирование веб-проектов в Agile
Тестирование веб-проектов в AgileТестирование веб-проектов в Agile
Тестирование веб-проектов в AgileSQALab
 
Разработка методики тестирования производительности комплекса систем
Разработка методики тестирования производительности комплекса системРазработка методики тестирования производительности комплекса систем
Разработка методики тестирования производительности комплекса системSQALab
 
Жизненный цикл коммуникативных дефектов
Жизненный цикл коммуникативных дефектовЖизненный цикл коммуникативных дефектов
Жизненный цикл коммуникативных дефектовSQALab
 
Планирование и запуск проекта в условиях ‘нулевой’ видимости: практический опыт
Планирование и запуск проекта в условиях ‘нулевой’ видимости: практический опытПланирование и запуск проекта в условиях ‘нулевой’ видимости: практический опыт
Планирование и запуск проекта в условиях ‘нулевой’ видимости: практический опытSQALab
 
Виртуализация и автоматизация тестирования мобильных приложений
Виртуализация и автоматизация тестирования мобильных приложенийВиртуализация и автоматизация тестирования мобильных приложений
Виртуализация и автоматизация тестирования мобильных приложенийSQALab
 
Code review как средство обеспечения качества программного обеспечения
Code review как средство обеспечения качества программного обеспеченияCode review как средство обеспечения качества программного обеспечения
Code review как средство обеспечения качества программного обеспеченияSQALab
 
Грамотная отчетность нагрузочного тестирования
Грамотная отчетность нагрузочного тестированияГрамотная отчетность нагрузочного тестирования
Грамотная отчетность нагрузочного тестированияSQALab
 
Управление тестированием. Анализ типичных проблем
Управление тестированием. Анализ типичных проблемУправление тестированием. Анализ типичных проблем
Управление тестированием. Анализ типичных проблемSQALab
 
User Interface Тестирование – все ли так просто?
User Interface Тестирование – все ли так просто?User Interface Тестирование – все ли так просто?
User Interface Тестирование – все ли так просто?SQALab
 
Обратная связь: искусство достижения цели (мастер-класс)
Обратная связь: искусство достижения цели (мастер-класс)Обратная связь: искусство достижения цели (мастер-класс)
Обратная связь: искусство достижения цели (мастер-класс)SQALab
 

Viewers also liked (19)

Использование NTFS Reparse points на примере Windows HSM
Использование NTFS Reparse points на примере Windows HSMИспользование NTFS Reparse points на примере Windows HSM
Использование NTFS Reparse points на примере Windows HSM
 
Training center inside the company. How much is a fish?
Training center inside the company. How much is a fish?Training center inside the company. How much is a fish?
Training center inside the company. How much is a fish?
 
Автоматическое функциональное тестирование в рамках процесса непрерывной инте...
Автоматическое функциональное тестирование в рамках процесса непрерывной инте...Автоматическое функциональное тестирование в рамках процесса непрерывной инте...
Автоматическое функциональное тестирование в рамках процесса непрерывной инте...
 
Постановка процесса тестирования в Agile
Постановка процесса тестирования в AgileПостановка процесса тестирования в Agile
Постановка процесса тестирования в Agile
 
Тестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиТестирование программных фильтров безопасности
Тестирование программных фильтров безопасности
 
Увеличиваем мощь фреймворка Kdt & code`s generator
Увеличиваем мощь фреймворка   Kdt & code`s generatorУвеличиваем мощь фреймворка   Kdt & code`s generator
Увеличиваем мощь фреймворка Kdt & code`s generator
 
Уроки, полученные при проведении автоматизированного приемочного тестирования
Уроки, полученные при проведении автоматизированного приемочного тестированияУроки, полученные при проведении автоматизированного приемочного тестирования
Уроки, полученные при проведении автоматизированного приемочного тестирования
 
Как свести к нулю количество конфликтов между проектной командой и командами ...
Как свести к нулю количество конфликтов между проектной командой и командами ...Как свести к нулю количество конфликтов между проектной командой и командами ...
Как свести к нулю количество конфликтов между проектной командой и командами ...
 
А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?
 
Тестирование веб-проектов в Agile
Тестирование веб-проектов в AgileТестирование веб-проектов в Agile
Тестирование веб-проектов в Agile
 
Разработка методики тестирования производительности комплекса систем
Разработка методики тестирования производительности комплекса системРазработка методики тестирования производительности комплекса систем
Разработка методики тестирования производительности комплекса систем
 
Жизненный цикл коммуникативных дефектов
Жизненный цикл коммуникативных дефектовЖизненный цикл коммуникативных дефектов
Жизненный цикл коммуникативных дефектов
 
Планирование и запуск проекта в условиях ‘нулевой’ видимости: практический опыт
Планирование и запуск проекта в условиях ‘нулевой’ видимости: практический опытПланирование и запуск проекта в условиях ‘нулевой’ видимости: практический опыт
Планирование и запуск проекта в условиях ‘нулевой’ видимости: практический опыт
 
Виртуализация и автоматизация тестирования мобильных приложений
Виртуализация и автоматизация тестирования мобильных приложенийВиртуализация и автоматизация тестирования мобильных приложений
Виртуализация и автоматизация тестирования мобильных приложений
 
Code review как средство обеспечения качества программного обеспечения
Code review как средство обеспечения качества программного обеспеченияCode review как средство обеспечения качества программного обеспечения
Code review как средство обеспечения качества программного обеспечения
 
Грамотная отчетность нагрузочного тестирования
Грамотная отчетность нагрузочного тестированияГрамотная отчетность нагрузочного тестирования
Грамотная отчетность нагрузочного тестирования
 
Управление тестированием. Анализ типичных проблем
Управление тестированием. Анализ типичных проблемУправление тестированием. Анализ типичных проблем
Управление тестированием. Анализ типичных проблем
 
User Interface Тестирование – все ли так просто?
User Interface Тестирование – все ли так просто?User Interface Тестирование – все ли так просто?
User Interface Тестирование – все ли так просто?
 
Обратная связь: искусство достижения цели (мастер-класс)
Обратная связь: искусство достижения цели (мастер-класс)Обратная связь: искусство достижения цели (мастер-класс)
Обратная связь: искусство достижения цели (мастер-класс)
 

Similar to Dynamic Language Runtime

Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language RuntimeGetDev.NET
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)Pavel Tsukanov
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET CoreDotNetConf
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализацияYandex
 
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?Cisco Russia
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Yandex
 
Вячеслав Бахмутов
Вячеслав БахмутовВячеслав Бахмутов
Вячеслав БахмутовCodeFest
 
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел КрынецкийJSC “Arcadia Inc”
 
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...Alex V. Petrov
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6Technopark
 
Программируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusПрограммируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusCisco Russia
 
Теория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямТеория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямSergey Staroletov
 
Путь к чистому и компактному коду исполняемых спецификаций
Путь к чистому и компактному коду исполняемых спецификацийПуть к чистому и компактному коду исполняемых спецификаций
Путь к чистому и компактному коду исполняемых спецификацийVagif Abilov
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...it-people
 
Лекция 6
Лекция 6Лекция 6
Лекция 6itc73
 

Similar to Dynamic Language Runtime (20)

DLR Hosting
DLR HostingDLR Hosting
DLR Hosting
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language Runtime
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
 
Sivko
SivkoSivko
Sivko
 
Breaking logs
Breaking logsBreaking logs
Breaking logs
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET Core
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
 
Вячеслав Бахмутов
Вячеслав БахмутовВячеслав Бахмутов
Вячеслав Бахмутов
 
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
 
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6
 
Программируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusПрограммируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco Nexus
 
Теория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямТеория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциям
 
Путь к чистому и компактному коду исполняемых спецификаций
Путь к чистому и компактному коду исполняемых спецификацийПуть к чистому и компактному коду исполняемых спецификаций
Путь к чистому и компактному коду исполняемых спецификаций
 
C# 3.0
C# 3.0C# 3.0
C# 3.0
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
 
Лекция 6
Лекция 6Лекция 6
Лекция 6
 

More from SQALab

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировкуSQALab
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаSQALab
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиSQALab
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияSQALab
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...SQALab
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testingSQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженSQALab
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииSQALab
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовSQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовSQALab
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsSQALab
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеSQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииSQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестированиеSQALab
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"SQALab
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовSQALab
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных системSQALab
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросSQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...SQALab
 

More from SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

Dynamic Language Runtime

  • 1. Dynamic Language Runtime Евгений Рыбак. Tieto
  • 2.
  • 3.
  • 4. Введение Первый анонс: MIX07 – 30 апреля 2007 года
  • 5. Введение Основные цели : Портирование динамических языков на платформу . NET Добавление динамических возможностей в существующие языки ( C#, VB.NET)
  • 6.
  • 7. Runtime Hosting model Language Implementation Архитектура DLR
  • 8. Dynamic Language Runtime IronPython Silverlight Others… VB.NET C# IronRuby Object Binder JavaScript Binder COM Binder Ruby Binder Python Binder Архитектура
  • 9. Протокол взаимодействия: 12 общих операций Бинарные операции Работа с методами Работа с индексаторами Архитектура
  • 10. Итак, DLR Имеет 12 общих операций м/д языками Позволяет динамическим и статическим языкам работать вместе Состоит из 3 компонент Надстройка над CLR
  • 11.
  • 12. Ядро DLR Rules Binders CallSite DynamicObject ExpandoObject COM Interop Utilities
  • 13. Ядро DLR 1 ) obj – класс или объект? 2 ) Add – метод или делегат? 3 ) Нужно ли просматривать иерархию наследования? 4 ) А что это такое в параметрах? 5 ) Подходят ли эти параметры к методу или делегату? obj. Add (1, 2)
  • 14. Ядро DLR 6 ) Не подходят? А существует ли преобразование между типами? 7 ) Явное или неявное? 8 ) Пользовательское преобразование? 9 ) ... 10 ) ... obj. Add (1, 2)
  • 15. CallSite<T> CallSite<T> механизм к э ширования операций
  • 16. CallSite<T> 3 независимых кэша : L0: Делегат Target L1: История CallSite- а L2: История похожих CallSite- ов
  • 17.
  • 18.
  • 19.
  • 20. Ядро DLR - Binders Binder: Пример : GetMemenerBinder obj.Method SetMemberBinder obj.Property = 100 GetIndexBinder obj[1] или obj[“key”] Binders - ключевые компоненты , отвечающие за выполнение операций
  • 21. Результат работы Binder -а – правило ( Rule) X + Y Ядро DLR - Binders If (x is int && y is int ) { return ( int )x + ( int )y } ( int )x + ( int )y
  • 22. Ядро DLR - Кэширование L0 : Target if (x is int && y is int ) { return ( int )x + ( int )y } site.Update(…)
  • 23. Ядро DLR - Кэширование L0 : Target L1 : Update Локальная история: IList<Rule>
  • 24. Ядро DLR - Кэширование L0 : Target L1 : Update L2 : Update Глобальная история: IList<Rule>
  • 25. DynamicObject Точка входа в протокол взаимодействия между языками Облегченная реализация всех возможных дин амических операций
  • 26. Эффективная реализация динамического объекта Позволяет : Добавлять новые/Устанавливать/ Извлекать члены класса ExpandoObject
  • 27.
  • 28. Common Hosting Хостинг DLR языков в . NET приложениях Например : Выполнение IronPython, IronRuby кода в .NET приложении
  • 29.
  • 30. Common Hosting Процесс Домены приложения
  • 31. Common Hosting Домен приложения ScriptRuntime
  • 33. Common Hosting ScriptRuntime .NET приложение Script Scope (IronPython)
  • 34. Common Hosting ScriptRuntime .NET приложение Script Scope (IronPython)
  • 36. Итого - Архитектура Часть II Состоит из 3 компонент Надстройка над CLR Имеет 12 общих операций м/д языками
  • 37. Итого - Кэширование Часть II Часть III Механизм кэширования 3 независимых кэша Возможности для авторов библиотек
  • 38. Итого – Common Hosting Часть II Часть III Часть VI Взаимодействие .NET и динамических языков ( IronPython)
  • 39.
  • 40. СПАСИБО ЗА ВНИМАНИЕ http://belarusdotnet.org http://belarusdotnet.org/blogs/Engler