Поиск ошибок в программах на языке Ruby с использованием вывода типов Санкт-Петербург, 2008г. Выполнил: Шпынов Олег, 545 гр. Научный руководитель: Ломов.

Slides:



Advertisements
Similar presentations
Поиск оптимального набора параметров оптимизаций компилятора Брусенцов Леонид Евгеньевич студент 4 курса ФИТ НГУ Руководители:Илья.
Advertisements

Автоматическая генерация кода программ с явным выделением состояний Канжелев С.Ю. магистрант СПбГУ ИТМО Шалыто А.А. доктор технических наук профессор СПбГУ.
Разработка и внедрение объектно-ориентированной библиотеки для автоматизации тестирования Кафедра системного программирования Студент: Олейник А.Л. 544.
Дипломная работа Ивановой О.О., группа 545 Научный руководитель: д. ф.-м. н., профессор Терехов А.Н. Генерация кода по диаграмме активностей.
Расторгуев А.C., 545 группа Научный руководитель: Пименов А.А. Рецензент: ст. преп. Смирнова Е.А.
Автоматизированная поддержка пользовательской документации Web-приложений, разрабатываемых в среде WebRatio Студент: Дорохов Вадим, 544 гр. Научный руководитель:
Алгоритм приближённого join’а на потоках данных Выполнил : Юра Землянский, 445 группа Научный руководитель : Б.А. Новиков СПб, 2011 Санкт-Петербургский.
Разработка архитектуры для генератора синтаксических анализаторов Выполнил: Улитин Константин Научный руководитель: Я.А. Кириленко Курсовая.
Санкт-Петербургский Государственный Университет Математико-механический факультет Кафедра системного программирования Научный руководитель: Б.А. Новиков.
Савенко Мария Олеговна, 361 группа Научный руководитель: старший преподаватель В.С.Полозов.
Инструменты анализа данных метилирования генов в цепочке ДНК. Инструменты анализа данных метилирования генов в цепочке ДНК. Руководитель Вяххи Н. И. Студент.
Астащенко Александр, 445 группа Научный руководитель: В.Г.Шистеров.
Разработка технологии взаимодействия гетерогенных систем с использованием метапрограммирования Константинов Александр, 545 группа Научный руководитель.
Вэйвлетное разложение гладкого потока ненулевой высоты Выполнил : Суханов Василий Научный руководитель : Демьянович Ю. К. Рецензент : Лебединская Н. А.
Инструмент реинжиниринга спецификаций трансляций Константин Андреевич Улитин Научный руководитель: Я.А. Кириленко Рецензент: Н.М. Тимофеев Санкт-Петербургский.
Разработка информационной системы накопительной программы лояльности для мобильных устройств Автор: Дьяченко Василий Владимирович мат-мех, 545 группа Научный.
Санкт - Петербургский Государственный Университет Математико - механический факультет Кафедра системного программирования Система проверки данных на полноту.
Курсовая работа студента 345 группы Чуновкина Фёдора Дмитриевича Научный руководитель: Бондарев А.В. Санкт-Петербургский Государственный Университет Математико-механический.
Санкт-Петербургский Государственный Университет Математико-механический факультет Кафедра системного программирования Научный руководитель: Я.А. Кириленко.
СРЕДА ВИЗУАЛЬНОГО МОДЕЛИРОВАНИЯ ON-LINE Курсовая работа Научные руководители: Ю.В. Литвинов Т.А. Брыксин Иванов Всеволод, 345 группа.
Миллер Дмитрий, 545 группа Научный руководитель: д.ф.-м.н., профессор, А.Н.Терехов Рецензент: к.ф.-м.н, доцент, А.Н. Иванов.
Создание сервиса синхронизации разнородных баз данных Допущена к защите зав. кафедрой: д.ф.м.н., профессор Терехов А.Н. Научный руководитель: доцент Графеева.
Виртуальная лаборатория для первоначального обучения проектированию программ Н. Н. Красильников, В. Г. Парфенов, Ф. Н. Царев, А. А. Шалыто Кафедра компьютерных.
1 СПбГУ ИТМО, кафедра Компьютерных Технологий ПРИМЕНЕНИЕ АВТОМАТНОГО ПРОГРАММИРОВАНИЯ ДЛЯ ПОСТРОЕНИЯ СИСТЕМ УПРАВЛЕНИЯ БИЗНЕС- ПРОЦЕССАМИ Евгений Андреевич.
Параметризация устройств сетевого управления Казакова А.С. Научный руководитель: Венгерова Е.А. Рецензент: Ушаков К.С. Кафедра системного программирования.
ООП Классы – 2. Ссылки Ссылка – еще одно имя объекта. Используйте ссылки вместо указателя. Это более безопасно. Complex c(10,10); Complex c2& = c; c2+=10;
Управление и Конфигурирование Встроенных Систем Ушаков Константин, 545 группа Руководитель: Елена Венгерова.
Адаптивный метод распределения SPMD-заданий в грид Паньшенсков Михаил, 545 группа Научный руководитель: Лукичев А.С. Рецензент: Демьянович Ю.К июня.
Особенности Java. Блок static static { } Создание и уничтожение объектов  new – создание объекта  finalyze()
1 Генерация контекстных ограничений для баз данных Выполнил: Жолудев В. Научный руководитель: Терехов А.Н. Рецензент: Иванов А.Н.
Аппаратное ускорение алгоритмов компьютерного зрения Стефан Бояровски, 361 группа Научный руководитель: Сергей П. Шувалкин.
Разработка интеллектуальной многоагентной системы адаптивных роботов для игры в футбол Выполнили: А. А. Коробкин, 545 гр Г. М. Комаров, 544 гр Научный.
Сравнение различных методов хранения XML в реляционных базах данных и в разных системах. Нгуен Тхань Хуен- 545 группа Руководитель : Б.А. Новиков Рецензент:
Сопоставление полигональных объектов на основе независимой фрагментации контуров Выполнил: Ю. М. Плотников Научный руководитель: канд. ф.-м. наук К. В.
PHP как язык программирования. Типы данных логические величины int, integer – целые числа real, double, float – вещественные числа string – строки array.
Анализ способов использования и причин неиспользования UML на практике Чернятчик Роман 545 группа научный руководитель: к.ф.-м.н., доц. Кознов Д.В. рецензент:
Face detection and swap Нижегородский государственный университет им. Н. И. Лобачевского Лаборатория ITLab Кураторы: Андрей Петров Андрей Петров Анна Кривицкая.
Создание экспериментального стенда для оценки методов поиска изображений по содержанию Выполнила: Теплых М. А. Научный руководитель: Васильева Н. С. Рецензент:
EDCWiki Electronic Document Circulation using wiki Система электронного документооборота на основе wiki Участники: Кузьмин К.А., Цыцулин В. И. Руководитель:
Оптимизация Just – in - time компилятора методом профилирования значений Соколов Андрей Владимирович, ФФ НГУ, 3 курс, Руководитель:
Конвертор байт-кода java в CIL Д. С. Возжаев, 544 группа Научный руководитель: д. т. н. проф. В. О. Сафонов Рецензент: асп. А. Н. Близнюк Санкт-Петербургский.
Симулятор квантовых вычислений Выполнил: Гедерцев А.С. Руководитель, д.ф.-м.н., профессор: Граничин О.Н.
Автоматическая трансляция проекта Dypgen с языка OCaml на язык F# Научный руководитель: Я. А. Кириленко Выполнил : студент 345 гр. Эдуард Баранов.
Распределение наборов неоднородных по размеру заданий в кластерных системах на основе ClassAd механизма Голубев Александр Юрьевич, 542 группа Научный руководитель:
Верификация автоматных программ Ремизов А.О., д.т.н., проф. Шалыто А.А.
Взвешенные скелеты для простых многоугольников Дипломная работа студента 544 группы Игнатьевского Сергея Васильевича Научный руководитель: К.В. Вяткина.
Синтаксис языка Java.
Поиск путей в сложных полигонах для динамических систем реального времени. Работа Порошина И.А., 544 гр. Научный руководитель Уфнаровский В.В. Рецензент,
Вычисление типов в императивных динамически типизированных языках. Михаил Калугин, студент 3 курса ММФ Научные руководители: Игорь Николаевич Скопин Андрей.
Увеличение модульности программного обеспечения на языке Java Курсовая работа студента 345 группы Абишева Тимура Маратовича Научный руководитель: Профессор.
Санкт-Петербургский Государственный Университет Математико-Механический факультет Кафедра системного программирования Применение диаграмм двоичных решений.
Реализация XPath над S-выражениями 2007 Миленин Евгений, гр. 544 Кафедра Системного Программирования Математико-Механический ф-т, СПбГУ Научный руководитель:
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Математико-механический факультет Кафедра системного программирования Автоматизация выбора оптимальной.
Разработка инструментария для создания нейронных сетей на мобильных платформах на примере iOS Золотухина Алина Манаев Дмитрий 445 группа Руководитель:
Моделирование систем хранения с целью уменьшения потребления энергии Научный руководитель: ассистент кафедры информатики Алиев А. А. Рецензент: ст. пр.
Объектно-ориентированное проектирование DSP-систем в телекоммуникациях Подготовил: Сергеев Виктор Николаевич СПбГУ, математико-механический Факультет,
Автор: студент 545 группы Абусалимов Э.Ш. Научный руководитель: асп. каф. системного программирования Бондарев А.В. Рецензент: Венгеров В.В. Система сборки,
Методы интерактивной визуализации динамики жидких и газообразных сред Костикова Елена Юрьевна, 521 гр. Научный руководитель: Игнатенко Алексей Викторович.
Библиотека для работы с конечными множествами, использующая графический процессор в качестве основного вычислительного устройства Новосибирский Государственный.
Проверка эквивалентности срединной и линейной осей многоугольника Дипломная работа студента 545 группы Подколзина Максима Валериевича Санкт-Петербургский.
Алгоритм исправления ошибок при анализе в парсерах типа перенос-свертка, основанный на предположении об избыточности языка Дипломная работа студента 545.
Перенос технологии REAL-IT на платформу Microsoft.Net Нестеров Антон Научный руководитель: Иванов А.Н. Рецензент: Серебрякова Г.М.
Сравнение подходов к индексированию XML документов c поддержкой некоторых операций модификации Выполнил: Василий Шикин, 545 группа Руководитель: Дмитрий.
Исследование возможностей сервисной шины SonicMQ Дипломная работа студентки 545 группы Комольцевой Дарьи Владимировны Научный руководитель: Графеева Н.Г.
Подход к реализации XQuery Паращенко Олег Санкт-Петербургский Государственный Университет Обнинск, 2004.
Post-graduate student of MIPT Chernov Evgeny Institute for System Programming of RAS 2010.
Язык программирования C#
Алгоритмическая структура «выбор» Автор: Доронина Екатерина Валерьевна, МКОУ СОШ № 1, Г. Коркино.
РУП «БЕЛГЕОДЕЗИЯ» Топографо-геодезическое республиканское унитарное предприятие "Белгеодезия" - ведущее предприятие Беларуси в производстве.
JavaScript Dynamic Active Web Pages Client Side Scripting.
Presentation transcript:

Поиск ошибок в программах на языке Ruby с использованием вывода типов Санкт-Петербург, 2008г. Выполнил: Шпынов Олег, 545 гр. Научный руководитель: Ломов Д.С. Рецензент: Булычев (?) Санкт-Петебургский Государственный университет математико-механический факультет

Ruby — динамический язык! Динамически типизируемый, интерпретируемый. Функциональный. Программы легко читаемы. Удобен для прототипирования, написания небольших программ. Популярный Web фрэймворк Ruby On Rails, собственная система распространения библиотек на Ruby (gem packaging system), огромное коммьюнити Отсутствие статической типизации! Сложно писать объёмные программы безопасные с точки зрения системы типов. Сложно изменять и преобразовывать код. + -

Постановка задачи Создать инструмент анализа программы на Ruby: Синтаксические Типовые Все языковые анализы - внешние по отношению к программе на Ruby: Не меняем язык! Не вводим никаких типовых аннотаций! Анализировать код на лету. Помогать разработчику при написании кода: автодополнение, переход к определению метода/класса. Реализовать всё вышеперечисленное в рамках плагина для среды разработки IntelliJ IDEA

Программа с ошибками Не видно ошибок!

Результат анализа Ошибка: у выражения нет метода capitaliz Оределяем функцию foo с параметрами a, b cо значением по умолчанию «yes» и оставшимися в массиве rest Ошибка: b — предположительно тип не шире чем у значения по умолчанию. Нет метода bzzzz Ошибка: у *rest тип соответсвующий классу Array. Нет метода fooo. Ошибка: у а уже известен тип Array! Нет метода no()! Ошибка: у 0 нет метода boo(), необходимый для корректной работы метода foo Ошибка: у «no» действительно нет метода bzzzz. Ошибка: неизвестный метод Ошибка: у у нет метода yahooo

Вывод типов 24: у выражения (...) тип String ​, нет capitaliz У id тип для любого α. α -> α 5: у a тип Unknown, у b тип String, у rest тип Array 6: у a тип Unknown &.boo() 7: у b тип String &.bzzzz() 9: у rest тип Array &.fooo() 11: у a тип Fixnum 12: у a тип Fixnum &.no!()‏ 17: У y тип (Fixnum &.boo()) | (Fixnum &.no())‏ 20: У y тип (Fixnum &.boo()) | (Fixnum &.no()) &.yahooo()‏

Реализация Разработана система типов с полиморфизмом и intersection types. Вычисляются типы методов, полей, локальных переменных итд. Вычисляются типы встроенных классов, методов. Вычисляются необходимые условия на типы параметров методов. Строится граф потока управления. Для вывода типов решается прямая задача потока данных. Анализируются вызовы методов (наличие метода, наличие необходимого кол-ва аргументов). Анализируются аргументы в вызовах методов на предмет соответствия требованиям к параметрам.

Схожие работы Static Type Inference for Ruby. Michael Furr, Jong-hoon (David), Jeffrey S. Foster, Michael Hicks. University of Maryland, College Park. Simon Marlow and Philip Wadler. A practical subtyping system for erlang. In ICFP, pages 136–149, Peter Thiemann. Towards a type system for analyzing javascript programs. In ESOP, pages 408–422, Davide Ancona, Massimo Ancona, Antonio Cuni, and Nicholas Matsakis. Rpython: Reconciling dynamically and statically typed oo languages. In DLS, Kristian Kristensen. Ecstatic – Type Inference for Ruby Using the Cartesian Product Algorithm. Master’s thesis, Aalborg University, Jason Morrison. Type Inference in Ruby. Google Summer of Code Project, 2006.

Сравнение В работе « Static Type Inference for Ruby. Michael Furr, Jong- hoon (David), Jeffrey S. Foster, Michael Hicks. University of Maryland, College Park. » типизируется только некое надмножество языка Ruby Типизация программ: Схожие работы - вся программа единовременно Наша реализация - анализ на лету Ни одна из работ не подразумевает интеграцию в среду разработки

Заключение Успешно реализован алгоритм решения прямой задачи потока данных На основе полученного решения возможно проводить типизацию программ на языке Ruby Различные типовые анализы Автодополнение кода Всё вышеперечисленное успешно реализовано в рамках open source проекта Ruby plugin для среды разработки программного обеспечения IntelliJ IDEA