Санкт-Петербургский Государственный Университет Математико-Механический факультет Кафедра системного программирования Межъязыковое взаимодействие OCaml.

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



Advertisements
Похожие презентации
Генерация средств импорта данных в рамках проектов ИС, реализованных в технологии REAL-IT Выполнил Комиссаров Антон Научный руководитель: Иванов А.Н. Рецензент:
Advertisements

Санкт - Петербургский Государственный Университет Математико - механический факультет Кафедра системного программирования Система проверки данных на полноту.
Поддержка разработки Parallels Business Automation в среде Eclispe Научный руководитель: Сергушенков Ю. А. Рецензент: доцент кафедры системного программирования,
ПОТОКО-ЧУВСТВИТЕЛЬНЫЙ АНАЛИЗ УКАЗАТЕЛЕЙ ЯЗЫКА С, ОСНОВАННЫЙ НА ДИАГРАММАХ ДВОИЧНЫХ РЕШЕНИЙ Санкт-Петербургский Государственный Университет Математико-Механический.
Санкт-Петербургский Государственный Университет Математико-механический факультет Кафедра системного программирования Научный руководитель: Я.А. Кириленко.
Генератор синтаксических анализаторов для решения задач автоматизированного реинжиниринга программ Дипломная работа студента 544 группы Чемоданова Ильи.
Алгоритм исправления ошибок при анализе в парсерах типа перенос-свертка, основанный на предположении об избыточности языка Дипломная работа студента 545.
Апробация технологий Silverlight/LINQ/WCF для создания web-приложений, ориентированных на интенсивную обработку данных Дипломная работа студента 545 группы.
Разработка отладчика для программ на языке haXe и целевой платформы Adobe Flash 9 Выполнил студент 544 группыКрасько Н.Л. Научный руководительПлискин М.М.
Телевизионная подсистема платформы управления IPTV услугами Санкт-Петербургский Государственный университет Математико – механический факультет Кафедра.
Инструмент реинжиниринга спецификаций трансляций Константин Андреевич Улитин Научный руководитель: Я.А. Кириленко Рецензент: Н.М. Тимофеев Санкт-Петербургский.
Исследование возможностей сервисной шины SonicMQ Дипломная работа студентки 545 группы Комольцевой Дарьи Владимировны Научный руководитель: Графеева Н.Г.
Разработка кроссплатформенного приложения для кластерного анализа данных на основе рандомизированных алгоритмов Дипломная работа студента 544 группы Морозкова.
Санкт-Петербургский Государственный Университет Математико-механический факультет Кафедра системного программирования Курсовая работа студентки 361 группы.
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Математико-механический факультет Кафедра системного программирования Автоматизация выбора оптимальной.
Курсовая работа студента 345 группы Чуновкина Фёдора Дмитриевича Научный руководитель: Бондарев А.В. Санкт-Петербургский Государственный Университет Математико-механический.
Сравнение различных технологий создания и использования web-сервисов Дипломная работа студентки 544 группы Григорьевой Елены Научный руководитель: Графеева.
Разработка среды для облачных вычислений Дипломная работа студента 545 группы Чуновкина Фёдора Дмитриевича Научный руководитель : Бондарев А. В. Рецензент.
Проверка эквивалентности срединной и линейной осей многоугольника Дипломная работа студента 545 группы Подколзина Максима Валериевича Санкт-Петербургский.
Автоматическая генерация каркасов клиентских приложений для систем с сервисно-ориентированной архитектурой Дипломная работа студента 545 группы Аязяна.
Транксрипт:

Санкт-Петербургский Государственный Университет Математико-Механический факультет Кафедра системного программирования Межъязыковое взаимодействие OCaml и C++ со статическим контролем типов Дипломная работа студента 544 группы Дубчука Николая Павловича Научный руководитель – Я.А. Кириленко Рецензент – В.С. Полозов

Постановка задачи Разработать средство для использования OCaml-программ из приложений на C++ со статической проверкой типов Разработать средство для использования OCaml-программ из приложений на C++ со статической проверкой типов

Существующие средства CamlIDL CamlIDL Взаимодействие C и OCaml при помощи COM Взаимодействие C и OCaml при помощи COM SWIG SWIG Взаимодействие программ на C и C++ с большинством высокоуровневых языков программирования Взаимодействие программ на C и C++ с большинством высокоуровневых языков программирования

Пример алгебраических типов (1) type t1 = string * int type t2 = string * int typedef type_wrapper t1, t2 typedef type_wrapper t1, t2 type a t3 = a * int template template struct t3 { typedef type_wrapper > type; typedef type_wrapper > type;}; tuple tuple

Пример алгебраических типов (2) type bin_t = Leaf of t1 | Tree of bin_t * bin_t data; > data; recursive_wrapper recursive_wrapper recursive_wrapper struct bin_t }; { … tuple< tuple< t1 t1, >

Детали реализации Синтаксический разбор описаний типов интерфейса модуля, их анализ Синтаксический разбор описаний типов интерфейса модуля, их анализ и генерация соответствующих C++-структур и генерация соответствующих C++-структур Механизм трансляции Механизм трансляции Передача управления из C++-приложения программе на OCaml Передача управления из C++-приложения программе на OCaml Трансляция полученного результата работы OCaml-программы в структуру языка C++ Трансляция полученного результата работы OCaml-программы в структуру языка C++

Результаты работы Выполнен обзор существующих средств взаимодействия OCaml и C++ Выполнен обзор существующих средств взаимодействия OCaml и C++ Предложено отображение из алгебраических типов OCaml в структуры языка C++ Предложено отображение из алгебраических типов OCaml в структуры языка C++ c использованием Boost c использованием Boost Реализован инструмент, выполняющий трансляцию структур данных из OCaml в C++ Реализован инструмент, выполняющий трансляцию структур данных из OCaml в C++ Реализовано межъязыковое взаимодействие программы-калькулятора, сгенерированной YARD-ом, Реализовано межъязыковое взаимодействие программы-калькулятора, сгенерированной YARD-ом, с приложением на C++ с приложением на C++