'

Вычисление типов в императивных динамически типизированных языках.

Понравилась презентация – покажи это...





Слайд 0

Вычисление типов в императивных динамически типизированных языках. Михаил Калугин, студент 3 курса ММФ Научные руководители: Игорь Николаевич Скопин Андрей Викторович Платов В рамках проекта Dynamic Languages Toolkit (www.eclipsedltk.org), Xored Software, Inc. 8 декабря 2006


Слайд 1

Проблемы динамической типизации Сложность чтения программ Ошибки Низкая скорость получаемого кода Сложность анализа class Foo: def doo(self): print "wow" def callFoo(a): a.doo() z = Foo() callFoo(z) x = 5 x = “string”


Слайд 2

Использование информации о типах Верификация IDE Code completion Caller/callee иерархии Подсказки о типах в outline, … Оптимизация


Слайд 3

Основные задачи Разработка архитектуры Реализация общей части Eclipse Dynamic Languages Toolkit Реализации для Python, Ruby Цель Система для вычисления типов.


Слайд 4

Архитектура Обобщенность Модель Алгоритм Расширяемость Python, Ruby Любой другой динамический язык Управляемость Скорость Точность


Слайд 5

Существующие подходы Управляемый запросами анализ (Alexander Spoon, Demand-Driven Type Inference with Subgoal Pruning) Задачи и подзадачи, отсечение Итеративный анализ, построение графа ограничений (Ole Agesen, Concrete Type Inference: Delivering Object-Oriented Applications ) Type feedback


Слайд 6

Основные задачи Разработка алгоритма Реализация общей части Eclipse Dynamic Languages Toolkit Реализации для Python, Ruby


Слайд 7

Dynamic Languages Toolkit Общая модель Работа с кодом Поиск Caller/callee иерархии Ссылки/объявления Рефакторинг Отладка и запуск Интерфейс Редактор, outline, страницы настроек Eclipse Open Source Языки: Tcl Python Ruby Perl


Слайд 8

Основные задачи Разработка алгоритма Реализация общей части Eclipse Dynamic Languages Toolkit Реализации для Python, Ruby


Слайд 9

Проблемы Модульность eval-блоки Глобальные переменные Метапрограммирование Многопоточность


Слайд 10

План работы


Слайд 11

Спасибо за внимание Вопросы?


Слайд 12

Алгоритм Управляемый запросами анализ (Alexander Spoon, Demand-Driven Type Inference with Subgoal Pruning) Задача, подзадача Caller/callee иерархии Тип (литералы, указатели, self, присваивания, параметры, вызовы) Использования Отсечение подзадач Время Глубина Реализация для Smalltalk


Слайд 13

Алгоритм Итеративный анализ, построение графа ограничений (Ole Agesen, Concrete Type Inference: Delivering Object-Oriented Applications ) def foo(): x = 42 y = x * 3.5 x = []


×

HTML:





Ссылка: