diff --git a/docs/projects/graphcat.md b/docs/projects/graphcat.md index d47ea1e..f497049 100644 --- a/docs/projects/graphcat.md +++ b/docs/projects/graphcat.md @@ -5,3 +5,40 @@ tags: --- # Язык для графического программирования на основе теории категорий + +## Описание + +На сегодняшний день, смартфоны и планшеты есть практически у всех, и мощности +этих устройств вполне себе позволяют разрабатывать программы и запускать их +прямо на устройстве. Однако интерфейсы сенсорных устройств крайне неудобны для +набора кода: наиболее естественным интерфейсом для работы с сенсорным +устройством является интерфейс графический и жестовый. Представляя себе, как +может выглядеть среда для программирования на планшете с помощью рисования и +жестов, мы получаем что-то вроде [Scratch](https://scratch.mit.edu) или +графической среды для +[Lego Mindstorms](https://en.wikipedia.org/wiki/Lego_Mindstorms). Однако +выразительность таких языков часто ограничена, и используются они для решения +узко ограниченного набора задач. + +С другой стороны, всевозможные графические схемы хорошо переводятся на язык +теории категорий; более того, по +[соответствию Карри-Говарда-Ламбека](https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence#Curry%E2%80%93Howard%E2%80%93Lambek_correspondence) +декартово замкнутые категории соответствуют языкам программирования с типами +кортежей и функций. + +В данном проекте предлагается переиспользовать язык теории категорий для +создания графического языка программирования. Из возможных положительных +последствий: + +* обобщённое представление позволяет транслировать полученную программу в самые + разные языки программирования, а также предоставлять самые различные таргеты + компиляции; +* модульность используемых свойств категории, в которой "пишется" программа, + позволяет получить модульный язык программирования (т.е. семейство языков с + единым синтаксисом и интерфейсом взаимодействия); +* использование функторов (отображений между категориями) позволяет по-новому + переиспользовать написанные программы, "интерпретируя" их в различных + категориях. + +Основной источник литературы: +[7 Sketches in Compositionality](https://arxiv.org/abs/1803.05316).