DRAKON.SU
https://forum.drakon.su/

Текстовое лицо графического языка Дракон
https://forum.drakon.su/viewtopic.php?f=143&t=6160
Страница 1 из 2

Автор:  Владимир Шелехов [ Суббота, 02 Декабрь, 2017 13:56 ]
Заголовок сообщения:  Текстовое лицо графического языка Дракон

Наконец-то появилась возможность начать реализацию дуального (текстового и графического) редактора автоматных программ.
Автоматная программа транслируется на язык C++.
А далее следует получить ее образ в виде Дракон-схемы.
Обратную трансляцию с языка Дракон на язык автоматных программ планируем реализовать позже.

В концептуальном плане вроде бы все просто.
Всякий сегмент кода (дуга автомата) непосредственно отображается в соответствующую ветвь Дракон-схемы.
С учетом этого образ автоматной программы на C++ надо будет соответственно разметить.
Эта разметка будет определять некоторый надязык (назовем его S), ориентированный на трансляцию в язык Дракон.

Поскольку в автоматной программе внутри сегментов кода нет циклов, структура языка S проста.
В нем ветки, последовательности операторов, условные операторы и операторы перехода на начало другой ветки.
Возможна иерархия условных операторов.
Да, есть еще вызовы гиперфункций, прыгающих на разные ветки.

Разумеется, язык S будет задействован и при обратной трансляции на язык автоматных программ.
Рано или поздно захочется транслировать произвольные Дракон-программы.
В язык S будут включены циклы.
Циклы и условные операторы станут многовходовыми.
Например, можно будет запрыгнуть на ветку условного оператора напрямую минуя проверку условия.
Возможно, появятся несводимые циклы, т.е. циклы с несколькими точками возврата на начало тела цикла.

При наличии двух и более входов в оператор возможно следующее решение:
декомпозировать (устранить) такой оператор с помощью операторов перехода.
Тогда в дополнение к иерархической операторной структуре появляется набор кусков кода,
завершающихся переходом на другой кусок кода.

Автор:  Владимир Паронджанов [ Суббота, 02 Декабрь, 2017 14:17 ]
Заголовок сообщения:  Re: Текстовое лицо графического языка Дракон

Владимир Иванович, Ваша работа по созданию дуального (текстового и графического) редактора автоматных программ очень важна.
Большое спасибо.

Автор:  Владимир Ситников [ Воскресенье, 03 Декабрь, 2017 00:44 ]
Заголовок сообщения:  Re: Текстовое лицо графического языка Дракон

Вообще говоря, дуальный редактор для "C <-> автомат" уже есть: http://mbeddr.com/ , https://vimeo.com/78412221

Интересно, есть ли общедоступный graph layout algorithm для Дракон схем?
Например, на базе Eclipse Layout Kernel ( https://www.eclipse.org/elk/ )

Автор:  Владимир Шелехов [ Понедельник, 04 Декабрь, 2017 08:35 ]
Заголовок сообщения:  Re: Текстовое лицо графического языка Дракон

Владимир Ситников писал(а):
Вообще говоря, дуальный редактор для "C <-> автомат" уже есть: http://mbeddr.com/ , https://vimeo.com/78412221
Это всего лишь графический визуализатор автоматов (state machines).
Дуальный редактор представлен в статье: Towards Seamless Hybrid Graphical–Textual Modelling for UML and Profiles.
Сложная реализация. Мы пойдем другим путем.

Реализация автомата через DSL (Domain-Speci fic Language) это еще одно проявление отрыжки структурного программирования.

Автор:  Степан Митькин [ Понедельник, 04 Декабрь, 2017 10:49 ]
Заголовок сообщения:  Re: Текстовое лицо графического языка Дракон

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

Почему?
У меня два объяснения.
1. Конечные автоматы — слишком сложная для простых смертных вещь. Эзотерика. С ней мозг не справляется.
2. Отсутствуют (или не популярны) инструменты для автоматного программирования.

С пунктом 1 ничего поделать нельзя. "Других писателей у меня для вас нет". (с)
А вот сложности пункта 2 ДРАКОН может переломить.

Начинание Владимира Шелехова — категорически приветствую.

Автор:  Rifat [ Понедельник, 04 Декабрь, 2017 14:49 ]
Заголовок сообщения:  Re: Текстовое лицо графического языка Дракон

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

Автор:  Степан Митькин [ Вторник, 05 Декабрь, 2017 11:34 ]
Заголовок сообщения:  Re: Текстовое лицо графического языка Дракон

Rifat писал(а):
Мне кажется, что конечные автоматы - это слишком низкий уровень для человека. На низком уровне в аппаратуре переходы между состояними так и работают. Но для человека нужно что-нибудь более высокоуровневое.

И да, и нет.
Бывают автоматы низкого уровня, бывают автоматы высокого уровня.

Пример автомата низкого уровня
Есть веб-приложение, которое хранит документы. Сценарий "переименовать документ".
JavaScript в браузере должен выполнить несколько действий:
- получить настройки пользвователя с сервера
- получить документ с сервера
- запросить у пользователя новое название
- переформатировать документ
- сохранить документ на сервере
Как это реализовать?
Путь первый — не заморачивать себе голову и просовывать везде callbackи. Это ведёт к известной проблеме (pyramid of doom), когда в коде вообще не разберёшься.
К счатью, есть автоматы. Я сделал автомат, который имеет по одному состоянию на каждый из вышеописанных шагов. Автомат работает, загрузка идёт.
Вся логика в одном месте (автоматный силуэт). Это лучше, чем pyramid of doom (callback hell). Но проблема в том, что данный автомат действительно имеет низкий уровень.
Мне не удобно думать в понятиях автомата для данной задачи. А что удобно? Удобно явно задать шаги. В данном случае, автомат должен быть автоматически сгенерирован.

Но бывают автоматы высокого уровня
Что значит "высокого уровня"? Это значит, что человеку удобно думать по-автоматному для решения данной проблемы.
Пример — тот самый лифт из статьи В.И. Шелехова.
Там очень складно. Есть автомат "лифт", есть автомат "дверь". Всё логично.
Стоит отойти от автоматной логики, и тут же начинаются проблемы:
1. Можно забыть о каком-нибудь сообщении в каком-нибудь сочетании состояний.
2. Запутываешься в паутине if-then-else.

Вывод:
1. Иногда автоматы можно и нужно рисовать в явном виде.
2. А иногда нужно рисовать что-то ещё (обычный ДРАКОН, например). И тогда автоматы должны быть автоматически построены.

Автор:  Rifat [ Вторник, 05 Декабрь, 2017 14:08 ]
Заголовок сообщения:  Re: Текстовое лицо графического языка Дракон

Просто мне сложно найти аналоги описания конечных автоматов в докомпьютерной истории человечества.

Например, дочка спрашивает маму: "Расскажи, пожалуйста, как готовить гуся с яблоками".
А мама отвечает:
"Для начала нужно описать различные состояния, при этом порядок перечисления состояний для нас не важен. Пусть будут состояния 'сырой гусь нашпигован яблоками' (которое обозначим как S1), затем 'гусь покрылся хрустящей корочкой' (S2), 'яблоки почищены' (S3), 'гусь, нашпигованный яблоками, помещен в печку' (S4), 'гусь ощипан' (S5), 'есть гусь и яблоки' (S6). Затем нам нужно определить переходы из одного состояния в другое, при этом одно из состояний у нас будет особым, будем называть его начальным состоянием (в него не будет переходов, будут только переходы из него, обозначим его звездочкой). Определяем переходы: S4 -> S2, S3 -> S1, S5 -> S3, S6* -> S5, S1 -> S4. Вот так доченька можно приготовить гуся с яблоками."

Автор:  Владимир Ситников [ Вторник, 05 Декабрь, 2017 22:21 ]
Заголовок сообщения:  Re: Текстовое лицо графического языка Дракон

Степан Митькин писал(а):
Путь первый — не заморачивать себе голову и просовывать везде callbackи. Это ведёт к известной проблеме (pyramid of doom), когда в коде вообще не разберёшься.
Ага, всё так.

Степан Митькин писал(а):
К счатью, есть автоматы. Я сделал автомат, который имеет по одному состоянию на каждый из вышеописанных шагов. Автомат работает, загрузка идёт.
Вся логика в одном месте (автоматный силуэт). Это лучше, чем pyramid of doom (callback hell). Но проблема в том, что данный автомат действительно имеет низкий уровень.
А вот тут вы взяли неподходящий инструмент и ожидаемо получили проблему.

Гораздо больше подошли бы async/await из этого же самого JavaScript. Ну или Kotlin coroutines

Автор:  Степан Митькин [ Среда, 06 Декабрь, 2017 13:05 ]
Заголовок сообщения:  Re: Текстовое лицо графического языка Дракон

Rifat писал(а):
Просто мне сложно найти аналоги описания конечных автоматов в докомпьютерной истории человечества.

Состояния медведя:
- Спит
- Голодный и злой
- Ест
- Ищет самку

:)

Автор:  Василий Валевич [ Среда, 06 Декабрь, 2017 15:32 ]
Заголовок сообщения:  Re: Текстовое лицо графического языка Дракон

Вчера Степан Митькин разместил в ленте Фейсбука новые диаграммы, сделанные в стиле языков ГНОМ и ГРАФ. Диаграммы доступны на сайте https://drakon-editor.com. Я их посмотрел, поставил лайк, поэкспериментировал с инструментами (drakon-editor.com). И задумался я, коллеги, вот о чём. Сейчас, в данный момент, есть потребность прочитать огромные объёмы текстовых материалов - инструкции, программный код, описания и т.д. Текстовые материалы представлены, преимущественно, на английском языке. Как бы это сделать так, чтобы текст моментально схватывался сознанием. То есть, сократить время между текстом и его пониманием до мгновений, долей секунды. Пока из практических соображений нашёл наилучшим такой способ - применил приложение для снятия скриншотов Bug Shooting - http://www.bugshooting.com. В основе лежит слой текста, на него накладывается слой визуализации. На все операции уходит от нескольких секунд до пары минут. После этого понимание наступает практически мгновенно (какое смелое заявление!). Выигрыш во времени достигается за счёт того, что операция чтение текста заменяется операцией разглядывание картинки. Программа Bug Shooting для персонального использования предоставляется с бесплатной полнофункциональной лицензией. Жаль только, что среди графических инструментов у неё отсутствуют иконы языков ДРАКОН, ГРАФ, ГНОМ и МОЛНИЯ. Но я думаю, что такая доработка легко осуществима.

Вложения:
Комментарий к файлу: Пример использования
BugShooting.jpg
BugShooting.jpg [ 831.5 КБ | Просмотров: 25791 ]

Автор:  Rifat [ Среда, 06 Декабрь, 2017 16:56 ]
Заголовок сообщения:  Re: Текстовое лицо графического языка Дракон

Степан Митькин писал(а):
Состояния медведя:
- Спит
- Голодный и злой
- Ест
- Ищет самку

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

Автор:  Владимир Невзоров [ Четверг, 07 Декабрь, 2017 12:04 ]
Заголовок сообщения:  Re: Текстовое лицо графического языка Дракон

Василий Валевич писал(а):
Вчера Степан Митькин разместил в ленте Фейсбука новые диаграммы, сделанные в стиле языков ГНОМ и ГРАФ. Диаграммы доступны на сайте https://drakon-editor.com. Я их посмотрел, поставил лайк, поэкспериментировал с инструментами (drakon-editor.com). И задумался я, коллеги, вот о чём. Сейчас, в данный момент, есть потребность прочитать огромные объёмы текстовых материалов - инструкции, программный код, описания и т.д. Текстовые материалы представлены, преимущественно, на английском языке. Как бы это сделать так, чтобы текст моментально схватывался сознанием. То есть, сократить время между текстом и его пониманием до мгновений, долей секунды. Пока из практических соображений нашёл наилучшим такой способ - применил приложение для снятия скриншотов Bug Shooting - http://www.bugshooting.com. В основе лежит слой текста, на него накладывается слой визуализации. На все операции уходит от нескольких секунд до пары минут. После этого понимание наступает практически мгновенно (какое смелое заявление!). Выигрыш во времени достигается за счёт того, что операция чтение текста заменяется операцией разглядывание картинки. Программа Bug Shooting для персонального использования предоставляется с бесплатной полнофункциональной лицензией. Жаль только, что среди графических инструментов у неё отсутствуют иконы языков ДРАКОН, ГРАФ, ГНОМ и МОЛНИЯ. Но я думаю, что такая доработка легко осуществима.


Уже подумал что чудо какое-то и картинка всё объяснит! Посмотрел картинку - ничего не понял :)

Автор:  Василий Валевич [ Четверг, 07 Декабрь, 2017 18:36 ]
Заголовок сообщения:  Re: Текстовое лицо графического языка Дракон

Владимир Невзоров писал(а):
Уже подумал что чудо какое-то и картинка всё объяснит! Посмотрел картинку - ничего не понял :)

Даже не знаю, что и сказать )))

На картинке приведена демонстрация экрана. Цифрами указана последовательность - что после чего нажимать. Собственно, особо то и пояснять нечего. В тексте и на скриншотах приведена полная информация. Руководствовался принципами, изложенными в книгах В.Д. Паронджанова. Именно принципами. Чуда нет, обычная эргономика. Просто поделился наблюдениями. Работает всё это очень быстро.

Автор:  Василий Валевич [ Четверг, 07 Декабрь, 2017 18:54 ]
Заголовок сообщения:  Re: Текстовое лицо графического языка Дракон

Владимир Невзоров писал(а):
Уже подумал что чудо какое-то и картинка всё объяснит! Посмотрел картинку - ничего не понял :)

Readme

1) Скачать и установить программу - http://www.bugshooting.com
2) Запросить лицензию, ... можно и без лицензии
3) Немного поправить начальные опции, т.к. по умолчанию ставится не совсем то что нужно
4) Нажать кнопку на панели быстрого запуска, помеченную на скриншоте цифрой (1) в красном шарике

Дальше руководствоваться интуитивным пониманием процесса.
Там всё очевидно.

P.S. Желательно использовать два и более монитора, или один большой монитор.

Автор:  Alexey_Donskoy [ Пятница, 08 Декабрь, 2017 08:27 ]
Заголовок сообщения:  Re: Текстовое лицо графического языка Дракон

Василий Валевич писал(а):
1) Скачать и установить программу - http://www.bugshooting.com
Сайт заблокирован магистральным провайдером. То есть как минимум для половины России его не существует.

Автор:  Василий Валевич [ Пятница, 08 Декабрь, 2017 12:51 ]
Заголовок сообщения:  Re: Текстовое лицо графического языка Дракон

Alexey_Donskoy писал(а):
Сайт заблокирован магистральным провайдером. То есть как минимум для половины России его не существует.

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

Автор - Alexej Hirsch, можно к нему обратиться, whois показывает адрес, телефон и email
https://www.whois.com/whois/bugshooting.com

Немножко кода есть в открытом доступе
https://github.com/BugShooting

Часть кода доступна к прочтению через бесплатную программу dotPeek
https://www.jetbrains.com/decompiler/

Есть заменители
1) Top Alternatives to Bug Shooting for Windows
https://bug-shooting.en.softonic.com/windows/alternatives
2) Alternatives to Bug Shooting for all platforms with any license
https://alternativeto.net/software/bug-shooting/
3) Screen-Capture Software
https://www.download.hr/subcategory-screen-capture.html

Автор:  Rifat [ Пятница, 08 Декабрь, 2017 13:08 ]
Заголовок сообщения:  Re: Текстовое лицо графического языка Дракон

Alexey_Donskoy писал(а):
Василий Валевич писал(а):
1) Скачать и установить программу - http://www.bugshooting.com
Сайт заблокирован магистральным провайдером. То есть как минимум для половины России его не существует.

У меня открывается, все нормально.
В списке заблокированных сайтов его нет. (Можно проверить заблокирован ли сайт https://blocklist.rkn.gov.ru/ )
Может быть у вас вирус на компьютере, который перенаправляет на другой заблокированный сайт?

Автор:  Alexey_Donskoy [ Пятница, 08 Декабрь, 2017 14:11 ]
Заголовок сообщения:  Re: Текстовое лицо графического языка Дракон

Rifat писал(а):
У меня открывается, все нормально.
Спасибо, кэп. Может, ещё и приехать к вам предложите для работы в Интернете? :wink:

Если я говорю о магистральном провайдере, это значит, что проблема известна, существует давно и наблюдается со множеством сайтов. И ни на одном устройстве ни у одного из местных провайдеров эти адреса не открываются (потому что все они, как ни удивительно, работают через магистральный Ростелеком). И плевать на список Роскомнадзора - в Ростелекоме заблокировано гораздо больше.
Сайт, конечно, можно открыть - через open proxy, которые теперь запрещены в России законодательно... Возможно, вы его так и открываете, не подозревая даже об этом :)

Автор:  Василий Валевич [ Пятница, 08 Декабрь, 2017 15:13 ]
Заголовок сообщения:  Re: Текстовое лицо графического языка Дракон

Папка, в которой лежит инсталляшка BugShooting_2.15.3.796.exe
https://www.dropbox.com/sh/yu78uo82lb37nw2/AAANxRe4uMdvSNfhCTRhj3l6a?dl=0

Результат проверки файла BugShooting_2.15.3.796.exe на наличие в нём вирусов
https://www.virustotal.com/#/file/5dc1d5d5647ca49c7dc6e5a98610d589a1afda98d9a89d6b997092bff2d2e022/detection

Вложения:
Комментарий к файлу: bugshooting.com
site.jpg
site.jpg [ 590.33 КБ | Просмотров: 25679 ]

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/