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

Содержание

Слайд 2

Проблемы динамической типизации

Сложность чтения программ
Ошибки
Низкая скорость получаемого кода
Сложность анализа

class Foo:
def doo(self):

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

Слайд 3

Использование информации о типах

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

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

Слайд 4

Основные задачи

Разработка архитектуры
Реализация общей части
Eclipse
Dynamic Languages Toolkit
Реализации для Python, Ruby

Цель

Система для вычисления

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

Слайд 5

Архитектура

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

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

Слайд 6

Существующие подходы

Управляемый запросами анализ (Alexander Spoon, Demand-Driven Type Inference with Subgoal Pruning)
Задачи

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

Слайд 7

Основные задачи

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

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

Слайд 8

Dynamic Languages Toolkit

Общая модель
Работа с кодом
Поиск
Caller/callee иерархии
Ссылки/объявления
Рефакторинг
Отладка и запуск
Интерфейс
Редактор, outline, страницы настроек

Eclipse
Open

Dynamic Languages Toolkit Общая модель Работа с кодом Поиск Caller/callee иерархии Ссылки/объявления
Source
Языки:
Tcl
Python
Ruby
Perl

Слайд 9

Основные задачи

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

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

Слайд 10

Проблемы

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

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

Слайд 11

План работы

План работы

Слайд 12

Спасибо за внимание

Вопросы?

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

Слайд 13

Алгоритм

Управляемый запросами анализ (Alexander Spoon, Demand-Driven Type Inference with Subgoal Pruning)
Задача, подзадача
Caller/callee

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