Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mygodishe/gravis-research

Graph-based visual programming language.
https://github.com/mygodishe/gravis-research

Last synced: about 1 month ago
JSON representation

Graph-based visual programming language.

Awesome Lists containing this project

README

        

## Исследование визуального языка программирования

### Цель

Придумать язык, который позволит комфортно создавать программы в трёхмерном пространстве с помощью VR. Язык позволит красиво иллюстрировать алгоритмы. Красотой кода смогут насладиться не только программисты. Такой код можно будет тематически оформлять. Скорей всего это будет дорогое удовольствие для привлечения программистов. Это скрасит разработку и даст возможность делать красивые презентации кода.

[архитектура редактора](.//docs/editor-arch.md)

#### Эскиз

граф, вычисляющий n-ое число фибоначчи по наивному методу, вершина CB (CallBack) выполняет роль рекурсии

### Интерпретатор

Установка зависимостей:
`python3 -m pip install antlr4-python3-runtime==4.7.2`

Запуск:
`python3 gi examples\fibonacci.g 3`

### Основные принципы
1. Красота
2. Компактность
3. Минимум контекста
4. Наглядность
5. Эргономика

## Прогресс

### Шаг 1 - простые арифметические операции и ветвление

профайлер простого графа

### Шаг 2 - рекурсия через подпространство

профайлер числа Фибоначчи при n=4

### Шаг 3 - интерпретатор на питоне через регулярки

Пример:
`./gi -p examples/simple.g 5`

_Требуется установка antlr4-python3-runtime_

### Шаг 4 - использование граммара

Добавлен ANTLR [граммар](./Gravis.g4). На его основе сделан парсер. Пришлось отказаться от табуляции, иначе граммар получается с кодом на языке, для которого генерируется парсер. В моём же случае, нужны разные парсеры для разных языков.

### Шаг 5 - редактор на Unity

[исходники редактора](./editor)

#### Шаг 5.1 - Отрисовка графа

Добавлен ANTLR парсер и сортировка дерева на основе силовых алгоритмов.

Пример Фибоначчи

#### Шаг 5.2 - Работа с узлами в простом графе
#### Шаг 5.3 - Работа с подпространством
#### Шаг 5.4 - Загрузка и сохранение графа

### Шаг ? - перейти на UE4

### Шаг ? - интерпретатор на Си

## Идеи

1. Ввести понятие - подпространство. Это изолированная область от внешних и внутренних контекстов. У подпространства есть входные связи и выходные. Такой механизм позволит сделать рекурсию через генератор подпрастранства.
2. Работу со списками можно сделать через хвостовую рекурсию. Здесь понадобятся ноды получения первого и оставшихся элементов в последовательности.
3. Динамическое подключение отладчика к программе. Построение систем визуализации внутри редактора. Подключение к запущенному миру, наблюдение артефактов системы.