Вычисление типов в императивных динамически типизированных языках. Михаил Калугин, студент 3 курса ММФ Научные руководители: Игорь Николаевич Скопин Андрей.

Презентация:



Advertisements
Похожие презентации
Dynamic Languages Toolkit Андрей Таранцов xored software, Inc.
Advertisements

Поиск ошибок в программах на языке Ruby с использованием вывода типов Санкт-Петербург, 2008г. Выполнил: Шпынов Олег, 545 гр. Научный руководитель: Ломов.
Автор : Ладыгина А.А. Научный руководитель : к.ф.м.н., доцент кафедры Систем Информатики НГУ, с.н.с. Васючкова Татьяна Сергеевна Система поддержки дистанционного.
Язык Ruby Денис С. Мигинский. Ruby Создан Юкихиро Мацумото в 1995 г. В основу положены элементы языков Perl, Python, Lisp, Smalltalk и др., а также «принцип.
Обнаружение уязвимостей в web- приложениях, написанных на Python, средствами динамического анализа исходных кодов Заливин Д.А. Козлов Д.Д. Петухов А.А.
Кроссъязыковый рефакторинг « Изменение сигнатуры метода » Медведев Максим Юрьевич, 445 гр. Руководитель : Громов Петр Александрович.
Алгоритмический трейдинг c Python Денис Колодин ген. директор AlgoMarkets LLC Денис Колодин ген. директор AlgoMarkets LLC.
Подсистема наблюдения, отладки и управления параллельным счетом для объектно- ориентированной системы программирования Чугунов Арсений научный руководитель:
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Глобальный оптимизатор для.NET приложений Серебрянский Андрей 544гр. Научный руководитель: Дмитрий Степанович Ломов Рецензент: Дмитрий Юрьевич Булычев.
Парадигмы программирования Денис С. Мигинский. Понятие парадигмы Парадигма (философия науки) – устоявшаяся система научных взглядов, в рамках которой.
Основы объектного программирования на C# Основы ООП на C#. МГУ, 2008 Владимир Биллиг
ДИСТАНЦИОННЫЙ ЛАБОРАТОРНЫЙ ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ Докладчик: Андрианов Игорь Александрович Вологодский государственный технический университет ФЦП.
Метод декомпозиции гипертекстовых моделей Дипломная работа Тыжгеева М.Г. Научный руководитель: к.ф.-м.н. Кознов Д.В. Рецензент: к.ф.-м.н. Иванов А.Н.
Алексей Кирсанов ведущий разработчик «1С-Битрикс» Магазин – глобальная реструктуризация. D7 Партнерская конференция «1С-Битрикс»
Программная иженерия Андрей Дмитриев ©
Многометодные процедуры оптимального управления Архитектура и реализация программного комплекса Исследовательский Центр процессов управления Работа выполнена.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 7.
Оптимизация Just – in - time компилятора методом профилирования значений Соколов Андрей Владимирович, ФФ НГУ, 3 курс, Руководитель:
Язык Ruby Денис С. Мигинский. Ruby Создан Юкихиро Мацумото в 1995 г. В основу положены элементы языков Perl, Python, Lisp, Smalltalk и др., а также «принцип.
Транксрипт:

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

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

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

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

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

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

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

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

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

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

План работы

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

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

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