Язык для графического программирования на основе теории категорий¶
На сегодняшний день, смартфоны и планшеты есть практически у всех, и мощности этих устройств вполне себе позволяют разрабатывать программы и запускать их прямо на устройстве. Однако интерфейсы сенсорных устройств крайне неудобны для набора кода: наиболее естественным интерфейсом для работы с сенсорным устройством является интерфейс графический и жестовый. Представляя себе, как может выглядеть среда для программирования на планшете с помощью рисования и жестов, мы получаем что-то вроде Scratch или графической среды для Lego Mindstorms. Однако выразительность таких языков часто ограничена, и используются они для решения узко ограниченного набора задач.
С другой стороны, всевозможные графические схемы хорошо переводятся на язык теории категорий; более того, по соответствию Карри-Говарда-Ламбека декартово замкнутые категории соответствуют языкам программирования с типами кортежей и функций.
В данном проекте предлагается переиспользовать язык теории категорий для создания графического языка программирования. Из возможных положительных последствий:
- обобщённое представление позволяет транслировать полученную программу в самые разные языки программирования, а также предоставлять самые различные таргеты компиляции;
- модульность используемых свойств категории, в которой "пишется" программа, позволяет получить модульный язык программирования (т.е. семейство языков с единым синтаксисом и интерфейсом взаимодействия);
- использование функторов (отображений между категориями) позволяет по-новому переиспользовать написанные программы, "интерпретируя" их в различных категориях.
Основной источник литературы: 7 Sketches in Compositionality.