Перейти к содержанию

Язык для графического программирования на основе теории категорий

На сегодняшний день, смартфоны и планшеты есть практически у всех, и мощности этих устройств вполне себе позволяют разрабатывать программы и запускать их прямо на устройстве. Однако интерфейсы сенсорных устройств крайне неудобны для набора кода: наиболее естественным интерфейсом для работы с сенсорным устройством является интерфейс графический и жестовый. Представляя себе, как может выглядеть среда для программирования на планшете с помощью рисования и жестов, мы получаем что-то вроде Scratch или графической среды для Lego Mindstorms. Однако выразительность таких языков часто ограничена, и используются они для решения узко ограниченного набора задач.

С другой стороны, всевозможные графические схемы хорошо переводятся на язык теории категорий; более того, по соответствию Карри-Говарда-Ламбека декартово замкнутые категории соответствуют языкам программирования с типами кортежей и функций.

В данном проекте предлагается переиспользовать язык теории категорий для создания графического языка программирования. Из возможных положительных последствий:

  • обобщённое представление позволяет транслировать полученную программу в самые разные языки программирования, а также предоставлять самые различные таргеты компиляции;
  • модульность используемых свойств категории, в которой "пишется" программа, позволяет получить модульный язык программирования (т.е. семейство языков с единым синтаксисом и интерфейсом взаимодействия);
  • использование функторов (отображений между категориями) позволяет по-новому переиспользовать написанные программы, "интерпретируя" их в различных категориях.

Основной источник литературы: 7 Sketches in Compositionality.