DRAKON.SU

Текущее время: Четверг, 28 Март, 2024 12:20

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Суббота, 02 Декабрь, 2017 13:56 

Зарегистрирован: Вторник, 22 Сентябрь, 2015 20:43
Сообщения: 76
Наконец-то появилась возможность начать реализацию дуального (текстового и графического) редактора автоматных программ.
Автоматная программа транслируется на язык C++.
А далее следует получить ее образ в виде Дракон-схемы.
Обратную трансляцию с языка Дракон на язык автоматных программ планируем реализовать позже.

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 02 Декабрь, 2017 14:17 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Владимир Иванович, Ваша работа по созданию дуального (текстового и графического) редактора автоматных программ очень важна.
Большое спасибо.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 03 Декабрь, 2017 00:44 

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 04 Декабрь, 2017 08:35 

Зарегистрирован: Вторник, 22 Сентябрь, 2015 20:43
Сообщения: 76
Владимир Ситников писал(а):
Вообще говоря, дуальный редактор для "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 
Аватара пользователя

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 04 Декабрь, 2017 14:49 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 219
Откуда: Казань
Мне кажется, что конечные автоматы - это слишком низкий уровень для человека. На низком уровне в аппаратуре переходы между состояними так и работают. Но для человека нужно что-нибудь более высокоуровневое.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 05 Декабрь, 2017 11:34 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Rifat писал(а):
Мне кажется, что конечные автоматы - это слишком низкий уровень для человека. На низком уровне в аппаратуре переходы между состояними так и работают. Но для человека нужно что-нибудь более высокоуровневое.

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 05 Декабрь, 2017 14:08 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 219
Откуда: Казань
Просто мне сложно найти аналоги описания конечных автоматов в докомпьютерной истории человечества.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 05 Декабрь, 2017 22:21 

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Декабрь, 2017 13:05 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Rifat писал(а):
Просто мне сложно найти аналоги описания конечных автоматов в докомпьютерной истории человечества.

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

:)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Декабрь, 2017 15:32 
Аватара пользователя

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


Вложения:
Комментарий к файлу: Пример использования
BugShooting.jpg
BugShooting.jpg [ 831.5 КБ | Просмотров: 17920 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Декабрь, 2017 16:56 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 219
Откуда: Казань
Степан Митькин писал(а):
Состояния медведя:
- Спит
- Голодный и злой
- Ест
- Ищет самку

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 07 Декабрь, 2017 12:04 

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


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 07 Декабрь, 2017 18:36 
Аватара пользователя

Зарегистрирован: Пятница, 10 Март, 2017 08:05
Сообщения: 49
Владимир Невзоров писал(а):
Уже подумал что чудо какое-то и картинка всё объяснит! Посмотрел картинку - ничего не понял :)

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 07 Декабрь, 2017 18:54 
Аватара пользователя

Зарегистрирован: Пятница, 10 Март, 2017 08:05
Сообщения: 49
Владимир Невзоров писал(а):
Уже подумал что чудо какое-то и картинка всё объяснит! Посмотрел картинку - ничего не понял :)

Readme

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Декабрь, 2017 08:27 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Василий Валевич писал(а):
1) Скачать и установить программу - http://www.bugshooting.com
Сайт заблокирован магистральным провайдером. То есть как минимум для половины России его не существует.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Декабрь, 2017 12:51 
Аватара пользователя

Зарегистрирован: Пятница, 10 Март, 2017 08:05
Сообщения: 49
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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Декабрь, 2017 13:08 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 219
Откуда: Казань
Alexey_Donskoy писал(а):
Василий Валевич писал(а):
1) Скачать и установить программу - http://www.bugshooting.com
Сайт заблокирован магистральным провайдером. То есть как минимум для половины России его не существует.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Декабрь, 2017 14:11 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Rifat писал(а):
У меня открывается, все нормально.
Спасибо, кэп. Может, ещё и приехать к вам предложите для работы в Интернете? :wink:

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Декабрь, 2017 15:13 
Аватара пользователя

Зарегистрирован: Пятница, 10 Март, 2017 08:05
Сообщения: 49
Папка, в которой лежит инсталляшка 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 КБ | Просмотров: 17808 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2024, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB