LINUX.ORG.RU

Моя поделка

 ,


1

2

Тихо и незаметно экспериментирую с созданием среды визуального программирования.

На скриншоте виден прототип самой среды с функцией, вычисляющей числа Фибоначчи. Среда уже умеет транслировать схему в код на ванильном Haskell-е и выполнять его через ghci (его вывод показан на вкладке REPL). Сгенерированный код показан в отдельном окне.

Сам прототип написан на PySide6, схемы хранятся в PostgreSql. Для разработки использую WingIDE (на заднем плане), PgModeler и DBeaver.

P.S. Не нужно меня с метапрогом сравнивать. :)

>>> Просмотр (3440x1440, 911 Kb)

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 2)

Ответ на: комментарий от Zhbert

Можно было бы его кастануть, если бы его не забанили.

Werenter ★★☆
()

Сам прототип написан на PySide6

Что использовал для отображения диаграм? Мы для подобных целей использовали модуль diagrams но у него возможностей маловато.

graphviz?

YogSagot ★★☆
()
Ответ на: комментарий от YogSagot

Так транслитератор отработал. В этом нет ничего страшного, код для компилятора, а не для человека.

Rodegast ★★★★★
() автор топика

Как «Моя борьба», только «Моя подделка». В печать!

targitaj ★★★★★
()

Дизлайк за форматирования табами.

ox55ff ★★★★★
()

Для разработки использую WingIDE

Не знаю, как по мне - выглядит ужасно. Но оно бы ладно если бы оперсорс, так я погуглил и оно оказывается проприетарное по подписке. И стоит в год примерно столько же, сколько мой начальник за JetBrains полную лицензию платит.

YogSagot ★★☆
()
Ответ на: комментарий от Rodegast

То есть буквально сам рисуешь? Ну окей, увожаемо.

YogSagot ★★☆
()
Ответ на: комментарий от Rodegast

А почему именно в Haskell, а не делать кодогенерацию с помощью какого-нибудь LLVM? Вряд ли у тебя какие-то особенности Haskell используются типа мощной системы типов.

theNamelessOne ★★★★★
()
Ответ на: комментарий от YogSagot

И стоит в год примерно столько же, сколько мой начальник за JetBrains полную лицензию платит.

Я за неё 1000р. заплатил ;)

Rodegast ★★★★★
() автор топика
Ответ на: комментарий от theNamelessOne

Отбираешь хлеб у Метапрога?

Ну что ты... Я даже не пытаюсь.

Вряд ли у тебя какие-то особенности Haskell используются типа мощной системы типов.

В визуальном программировании фактически отсутствует пошаговая отладка, по этому как раз нужна мощная система типов. Ну и совместимость с готовыми библиотеками тоже не помешает.

Rodegast ★★★★★
() автор топика
Ответ на: комментарий от wandrien

Я примерно так же подумал. И сама идея, и хаскель, и неведовая ИДЕ для питона, и ОГРОМНАЯ панель, и ЕРЕТИК…

Zhbert ★★★★★
()

Нужно раскрашивать провода в зависимости от типа данных, это дополнительная визуальная информация.

В визуальном программировании фактически отсутствует пошаговая отладка

Наоборот, там она как никогда наглядна, можно видеть как данные текут по проводам, и что это за данные.

Не понял как у тебя сделаны аргументы в количестве больше 1 штуки, но в визуальном программировании, можно еще удобно представить выходы в виде более чем 1 штуки.

Названия для переменных в визуальном программировании это конечно ужасно, просто отвратительно, их не должно быть, это потоки данных, которые могут быть именованными, но если я вижу реально имена переменных, лучшее что можно сделать это убрать их.

Каждый выход и вход лучше подписать именем и типом, как в метапроге, в общем советую посмотреть скриншоты более удачной версии.

MOPKOBKA ★★★★
()
Ответ на: комментарий от MOPKOBKA

Так же, я предполагаю что функции слева, это просто дамп символов. Такой дамп лучше иметь отдельно, а само меню сделать отдельной сущностью редактора, что бы его можно было настраивать, помещать туда избранные элементы, и можно его сделать плавающим как в метапроге, потому что оно занимает много места.

MOPKOBKA ★★★★
()

компилируй сразу в си.

alysnix ★★★
()
Ответ на: комментарий от MOPKOBKA

Типы тоже можно вынести как и меню, в том числе самые базовые, а не делать их хардкодом. Если у тебя уже есть мультистроки как в метапроге, которые являются = HashMap<Language, String>, то добавив их к имени типа, любой сможет просто взять, перевести тип Integer на родной язык, и отправить коммит в твой репозиторий metaclone/standard-library

MOPKOBKA ★★★★
()
Ответ на: комментарий от MOPKOBKA

Нужно раскрашивать провода в зависимости от типа данных, это дополнительная визуальная информация.

Это актуально для систем с потоками данных (типа HiASM или Blueprint), но там легко достигнуть предела Дойча.

Так же, я предполагаю что функции слева, это просто дамп символов

Нет, это всё отдельные функции со своими схемами.

Rodegast ★★★★★
() автор топика
Последнее исправление: Rodegast (всего исправлений: 1)

в конечном итоге все вырождается в ast-дерево. просто сделай редактор такого дерева и рисуй, пока не надоест.

когда надо написать a = b + c, придется рисовать дерево с тремя нодами и двумя операциями, то есть 5 узлов с 4-мя стрелками.

alysnix ★★★
()
Ответ на: комментарий от Rodegast

Так же, я предполагаю что функции слева, это просто дамп символов

Нет, это всё отдельные функции со своими схемами.

Я про то, что это просто список всех доступных функций? Очень неудобно, нужно хотя бы по категориям разбивать, в идеале полностью редактируемое меню, где можно назначать иконки элементам, подписи, перемещать и создавать категории.

MOPKOBKA ★★★★
()
Ответ на: комментарий от Rodegast

Это актуально для систем с потоками данных (типа HiASM или Blueprint), но там легко достигнуть предела Дойча.

Не знаю что за предел, возможно ты что то не так понял, или я, я действительно не понял как у тебя что передается. В метапроге у диаграммы (функции) можно добавить выходы и входы, у каждого входа и выхода настраивается тип. Поэтому подсветка проводка не занимает много ресурсов. Вот с генериками посложнее, но у метапрога проблем не возникло, если на входе и выходе один T, то при подаче синего int, выдаст тоже синий проводок.

MOPKOBKA ★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от alysnix

В метапроге может быть граф, и это удобнее чем вручную делать из него дерево.

MOPKOBKA ★★★★
()
Ответ на: комментарий от MOPKOBKA

Очень неудобно, нужно хотя бы по категориям разбивать

На скриншоте прототип, категории позже добавлю.

Не знаю что за предел

https://en.wikipedia.org/wiki/Deutsch_limit

я действительно не понял как у тебя что передается.

Да собственно тут всё как и в обычном программировании. У функции есть пространство имён (скоп), элементы могут добавлять значения в скоп (например «sh'» или «сумма») или быть вызвана с этими значениями (вызов функции отображается как отдельный элемент с боку).

Rodegast ★★★★★
() автор топика
Ответ на: комментарий от Rodegast

На скриншоте прототип, категории позже добавлю.

Можешь посмотреть как выглядит палитра в LabView, тоже интересный способ выбора нужных элементов. В метапроге по моему тоже удобно, но там перекрывается диаграмма, это минус. Интересные альтернативы TreeView.

Да собственно тут всё как и в обычном программировании. У функции есть пространство имён (скоп), элементы могут добавлять значения в скоп (например «sh'» или «сумма») или быть вызвана с этими значениями (вызов функции отображается как отдельный элемент с боку).

А как устроен файл проекта?

MOPKOBKA ★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от MOPKOBKA

А как устроен файл проекта?

Да нет никакого файла. Все данные хранятся в PostreSql, через него будет сделан контроль версий.

Rodegast ★★★★★
() автор топика
Ответ на: комментарий от MOPKOBKA

А как будут подключаться сторонние библиотеки на графическом языке?

Для описания интерфейсной части библиотеки нужно будет добавить отдельный проект (без схем просто информация о типах и функциях). Система сама создаст с ним cabal файл.

Rodegast ★★★★★
() автор топика

О! Похоже на Дракон, но не он. Добавь его правила построения диаграмм- смотреться будет сильно легче.

einhander ★★★★★
()
Ответ на: комментарий от monk

Да, видел. Но там нодовый редактор, а я их не очень люблю.

Rodegast ★★★★★
() автор топика
Ответ на: комментарий от einhander

О! Похоже на Дракон, но не он.

По сути это он и есть, но только сильно переделанный под ФП.

Rodegast ★★★★★
() автор топика
Ответ на: комментарий от einhander

Сами иконы примерно такие как и в ДРАКОНе, но у них другая семантика. В место силуэта - «шаблон» и «охрана». Вот и все основные отличия.

Rodegast ★★★★★
() автор топика

Ничего не могу сказать о Хаскеле и таком программировании, но вот трей впечатляет. Особенно на фоне проблемного однострочного трея в КДЕ.

kirill_rrr ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.