Skip to content

Commit

Permalink
+ graphical categories
Browse files Browse the repository at this point in the history
  • Loading branch information
TurtlePU committed Oct 7, 2024
1 parent 675b093 commit 7fa8dd2
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions docs/projects/graphcat.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).

0 comments on commit 7fa8dd2

Please sign in to comment.