DRAKON.SU

Текущее время: Четверг, 17 Июнь, 2021 11:21

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




Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
СообщениеДобавлено: Вторник, 14 Апрель, 2015 13:05 

Зарегистрирован: Четверг, 23 Май, 2013 05:13
Сообщения: 400
Написано про ИС Дракон. Но вопрос, на мой взгляд, ко всем Дракон-редакторам.

Диаграммы состояния для Дракон-схем в ИС Дракон
Как я уяснил для себя язык Дракон – это язык для графической записи алгоритма.
Алгоритм можно записывать в достаточно свободной форме. Практически любыми словами. С соблюдением минимальных требований: чтобы содержимое записи отвечало назначению иконки или макроиконки.
Классического формального определения работы с языком через формы Бэкуса-Наура в языке Дракон нет. Потому что Дракон оперирует более общими понятиями «Действие», «Развилка», «Переключатель» и т.д.
Если использовать язык Дракон (его реализацию в ИС Дракон) для работы с программистами, то содержимое иконок является, по сути, либо псевдокодом, либо комментариями к программному коду. Поэтому сами иконки Дракон – это «верхний слой» по отношению к языку программирования, который мы используем. Дракон предназначен для того, чтобы записать: что мы хотим делать. Язык программирования предназначен для того, чтобы записать: как мы это будем делать.
Первый шаг в ИС Дракон – это запись хода решения, хода программы. В стиле комментирования хода выполнения. Эта запись у нас идёт в иконках языка Дракон.
Второй шаг в ИС Дракон – это запись нашего решения на рабочем языке программирования. Текст программы размещается в П-точках ввода в иконках схемы ИС Дракон.
ИС Дракон может собрать из текста программы, размещённого в иконках, полный текст программы, соответствующий логике схемы ИС Дракон.
Сама программа используется и выполняется средствами того языка программирования, на котором она написана.
Сам ИС Дракон (и насколько я понял другие Дракон-редакторы тоже) ничего не выполняет, не компилирует и не отлаживает. Он только формирует смысловую оболочку нашей будущей программы.
В связи с этим возникает следующее предложение к автору ИС Дракон.
Нельзя ли добавить в ИС Дракон режим «выполнения» алгоритма, записанного в Дракон-схеме?
Понятно, что при записи алгоритма у нас нет чёткого указания «как делать». Поэтому строго выполнения программными средствами алгоритма в Дракон-схеме добиться, наверное, нельзя.
Но кое-что, по-моему, сделать можно.
Если брать каждую иконку Дракон-схемы, то мы видим, в основном, иконки «Действие», «Развилка», макроиконки «Переключатель».
Если взять иконку Действие, то мы можем выделить в ней: само действие и участников этого действия.
В иконках «Развилка» и макроиконках «Переключатель» у нас условия. Условия – это обращения к каким-то характеристикам, их проверка и сравнение. Может быть проверка выполнения каких-то действий. По крайней мере мы можем определиться – кто из участников более ранних иконок в Дракон-схеме был задействован в конкретном условии.
Итак, с каждой иконкой (макроиконкой) у нас связывается какой-то набор участников.
Если мы «выполняем» Дракон-схему, то результат её «выполнения» мы можем попытаться отразить простым отчётом.
По горизонтали вверху мы можем расположить те иконки, которые мы прошли в процессе выполнения Дракон-схемы.
По вертикали мы можем расположить всех участников нашей Дракон-схемы.
На пересечении горизонталей и вертикалей поставить знак ПЛЮС, если участник используется в данной схеме.
Для наглядности можно протащить пунктирную линию от участника до знака ПЛЮС по горизонтали.
Получится диаграмма состояния участников Дракон-схемы.
Если пытаться реализовать этот механизм, то больших трудностей возникнуть не должно.
Но потребуется решить несколько проблем:
1) Хранение списка участников, их характеристик.
2) Быстрое и удобное указание участников в иконке Дракон-схемы.
3) «Запуск» выполнения Дракон-схемы и визуализация этого запуска. Некоторые «Развилки» и «Переключатели» придётся проходить вводом дополнительной информации.
Предлагаю автору ИС Дракон, Геннадию Тышову, рассмотреть целесообразность и возможность включения такого механизма в ИС Дракон.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Апрель, 2015 15:44 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5175
Откуда: Москва
Шилин Александр писал(а):
возникает следующее предложение к автору ИС Дракон.
Нельзя ли добавить в ИС Дракон режим «выполнения» алгоритма, записанного в Дракон-схеме?

кое-что, по-моему, сделать можно.

Если взять иконку Действие, то мы можем выделить в ней: само действие и участников этого действия.
В иконках «Развилка» и макроиконках «Переключатель» у нас условия. Условия – это обращения к каким-то характеристикам, их проверка и сравнение. Может быть проверка выполнения каких-то действий. По крайней мере мы можем определиться – кто из участников более ранних иконок в Дракон-схеме был задействован в конкретном условии.

с каждой иконкой (макроиконкой) у нас связывается какой-то набор участников.

Если мы «выполняем» Дракон-схему, то результат её «выполнения» мы можем попытаться отразить простым отчётом.
По горизонтали вверху мы можем расположить те иконки, которые мы прошли в процессе выполнения Дракон-схемы.
По вертикали мы можем расположить всех участников нашей Дракон-схемы.
На пересечении горизонталей и вертикалей поставить знак ПЛЮС, если участник используется в данной схеме.
Для наглядности можно протащить пунктирную линию от участника до знака ПЛЮС по горизонтали.
Получится диаграмма состояния участников Дракон-схемы.
Если пытаться реализовать этот механизм, то больших трудностей возникнуть не должно.
Но потребуется решить несколько проблем:
1) Хранение списка участников, их характеристик.
2) Быстрое и удобное указание участников в иконке Дракон-схемы.
3) «Запуск» выполнения Дракон-схемы и визуализация этого запуска. Некоторые «Развилки» и «Переключатели» придётся проходить вводом дополнительной информации.
Предлагаю автору ИС Дракон, Геннадию Тышову, рассмотреть целесообразность и возможность включения такого механизма в ИС Дракон.
Похоже, что Вы выдвигаете интересную идею. Хотелось бы ее поглубже понять. Однако есть трудность.

Написано очень сложно. Непонятно, что Вы хотите получить. Предложение не полное. Я ничего не понял.

Желательно дать какой-то образ.

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

Без таких объяснений, как мне кажется, ваш творческий замысел остается неясным.

Нужны картинки, нужны чертежи. Без них непонятно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Апрель, 2015 16:15 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5175
Откуда: Москва
Я попытался понять дракон-схему здесь
http://forum.easyelectronics.ru/viewtop ... 03#p392903

И не смог. Желательно объяснить, какую цель Вы ставите перед этой схемой.

========================
Зачем здесь схема Гном? Почему ее нельзя выбросить?

Вы хотите сделать замечания к той или иной иконе? Я бы писал замечания РЯДОМ с иконой.
Почему нельзя писать замечания РЯДОМ с иконой?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Апрель, 2015 18:41 

Зарегистрирован: Четверг, 23 Май, 2013 05:13
Сообщения: 400
Владимир Паронджанов писал(а):
Зачем здесь схема Гном? Почему ее нельзя выбросить?

Вы хотите сделать замечания к той или иной иконе? Я бы писал замечания РЯДОМ с иконой.
Почему нельзя писать замечания РЯДОМ с иконой?


Может быть и можно. Об этом я не думал. ГНОМ-схема показалась мне наиболее соответствующей потребностям.
Задача такая:
1. Я делаю Дракон-схему для ученика.
2. Ученик пишет по Дракон-схеме программу. И допускает ошибки в программе. Некоторые моменты я ему явно не обозначил, кое-что он пропускает по языку программирования.
3. Я пишу ему ГНОМ-схему с замечаниями. В замечаниях я обращаюсь к конкретным иконкам Дракон-схемы, но речь веду о программе на языке программирования.

Чтобы позиционироваться от списка замечаний в ГНОМ-схеме к иконкам Дракон-схемы было бы хорошо иметь для работы ссылки между иконками. Это не вопрос языка Дракон. Это вопрос инструмента.
По мере выполнения задания и исправления замечаний я добавляю ГНОМ-схемы с замечаниями в общую Дракон-схему.
Каждый раз комментировать одну и ту же иконку? Боюсь комментарий закроет весь обзор схемы.
Использовать вместо ГНОМ-схемы Дракон-схему? Но Дракон-схема - это алгоритм. Лишние алгоритмы опять собьют с толку. Проще делать замечания ГНОМ-схемой.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Апрель, 2015 18:49 

Зарегистрирован: Четверг, 23 Май, 2013 05:13
Сообщения: 400
Владимир Паронджанов писал(а):
Лучше всего нарисовать вручную схему, которую Вы хотите получить автоматически. И объяснить, зачем Вам нужна эта схема. Какую выгоду вы хотите из нее извлечь.

Без таких объяснений, как мне кажется, ваш творческий замысел остается неясным.

Нужны картинки, нужны чертежи. Без них непонятно.


Как-то так.
Дракон-схема в качестве примера:
Вложение:
ПримерДляДиаграммы(1).png
ПримерДляДиаграммы(1).png [ 9.17 КБ | Просмотров: 10991 ]


Некая диаграмма состояний одного варианта выполнения Дракон-схемы:
Вложение:
СостояниеОбъектов.png
СостояниеОбъектов.png [ 13.44 КБ | Просмотров: 10991 ]


Для более сложных схем можно анализировать как обстоят дела с "участниками" схемы на каждом этапе её выполнения.


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

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5175
Откуда: Москва
Шилин Александр писал(а):
Может быть и можно. Об этом я не думал. ГНОМ-схема показалась мне наиболее соответствующей потребностям.
Мне кажется, ГНОМ-схему надо выбросить. Она вредит, а не помогает (для данной задачи).

            Цитата:
            Задача такая:
            1. Я делаю Дракон-схему для ученика.
            2. Ученик пишет по Дракон-схеме программу. И допускает ошибки в программе. Некоторые моменты я ему явно не обозначил, кое-что он пропускает по языку программирования.
            3. Я пишу ему ГНОМ-схему с замечаниями. В замечаниях я обращаюсь к конкретным иконкам Дракон-схемы, но речь веду о программе на языке программирования.

Шилин Александр писал(а):
Каждый раз комментировать одну и ту же иконку? Боюсь комментарий закроет весь обзор схемы.
Вы проводите длинную красную линию от иконы 23 (или от иконы 75) за пределы дракон-схемы. И там (за пределами) пишете замечания обычным русским языком (без гнома). Чем это плохо?

Шилин Александр писал(а):
Использовать вместо ГНОМ-схемы Дракон-схему? Но Дракон-схема - это алгоритм. Лишние алгоритмы опять собьют с толку. Проще делать замечания ГНОМ-схемой.
Не нужен ни гном, ни лишняя дракон-схема. На дальнем конце красной линии, то есть на полях дракон-схемы, нужно написать замечание (про икону 23 или 75) русским языком, не мудрствуя лукаво. Почему это плохо?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Апрель, 2015 21:26 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5175
Откуда: Москва
Шилин Александр писал(а):
Некая диаграмма состояний одного варианта выполнения Дракон-схемы:
Вложение:
СостояниеОбъектов.png
Лучше не употреблять термин "диаграмма состояний" в таком смысле.

Беотийцы на easyelectronics прицепились к слову "состояние" по следующей причине.

Диагра́мма состоя́ний — ориентированный граф для конечного автомата, в котором
— вершины обозначают состояния,
— дуги показывают переходы между двумя состояниями


Диаграмма состояний (UML)

Аналогом дракон-схем (как алгоритмического языка моделирования) являются диаграммы поведения языка UML, в частности, диаграмма деятельности (activity diagram)[25], диаграмма состояний (UML state machine)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 19 Апрель, 2015 12:45 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 77
Откуда: Астрахань
Можно.
Мы двигаемся в данном направлении в Семантике.
К сожалению, студентам это не интересно, поэтому с реализацией определенные сложности.

Но в принципе Дракон-схема мало отличается от нашей семантической модели программы.
А семантическую модель программы мы непосредственно интерпретируем.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 30 Апрель, 2015 10:17 

Зарегистрирован: Четверг, 23 Май, 2013 05:13
Сообщения: 400
Валерий Лаптев писал(а):
Можно.
Мы двигаемся в данном направлении в Семантике.
К сожалению, студентам это не интересно, поэтому с реализацией определенные сложности.

Но в принципе Дракон-схема мало отличается от нашей семантической модели программы.
А семантическую модель программы мы непосредственно интерпретируем.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 01 Май, 2015 00:10 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 77
Откуда: Астрахань
Вот статья, которую мы опубликовали в журнале Информационные технологии, №3, 2015 (http://www.novtex.ru/IT/it2015/number_03_annot.html#9)

Там на рисунке 2 показана семантическая модель программы факториала - многоуровневый список списков...
В наше й среде осуществляется непосредственная интерпретация узлов модели.
Дракон-схема может быть представлена в аналогичном виде.


Вложения:
ЛаптевВ.В._Семантическая-модель-и ее-реализация.pdf [443.81 КБ]
Скачиваний: 299
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 02 Май, 2015 15:44 

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 341
Валерий Лаптев писал(а):
Вот статья, которую мы опубликовали в журнале Информационные технологии, №3, 2015 (http://www.novtex.ru/IT/it2015/number_03_annot.html#9)

Там на рисунке 2 показана семантическая модель программы факториала - многоуровневый список списков...
В наше й среде осуществляется непосредственная интерпретация узлов модели.
Дракон-схема может быть представлена в аналогичном виде.

Валерий, спасибо! Отличная статья!

Кстати, в космической отрасли наблюдал нечто похожее на Ваш семантический редактор - в АО "ИСС" есть "редактор циклограмм" для подготовки сценариев комплексной отладки, они молодцы - вставляются сразу не текстовые описания команд сценария, а "блоки" с отдельным определением параметров в специальном окне, лишь из допустимых.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 02 Май, 2015 23:25 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 77
Откуда: Астрахань
Ну, видимо идея не писать код, а собирать из параметризованных блоков - она в воздухе витает давно.
Честно скажу, для "обычных" программеров писать коды текстом намного привычней.
Они - сопротивляются "блочной" технологии.
Надо исследовать множество операций и рефакторингов в семантическом редакторе, чтобы построить минимальное удобное множество - но пока руки не доходят... :(


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 22 Май, 2015 15:53 

Зарегистрирован: Четверг, 10 Январь, 2013 16:59
Сообщения: 70
<--
Шилин Александр писал(а):
ИС Дракон (и насколько я понял другие Дракон-редакторы тоже) ничего не выполняет, не компилирует и не отлаживает. Он только формирует смысловую оболочку нашей будущей программы.
В связи с этим возникает следующее предложение к автору ИС Дракон:
    Нельзя ли добавить в ИС Дракон режим «выполнения» алгоритма, записанного в Дракон-схеме?
        <--
        Владимир Паронджанов писал(а):
        Предложение не полное. Я ничего не понял...


;)
Как запустить .cpp файл? Не скомпилировать и запустить .ехе, а запустить .cpp?
Напечатайте его на листе А4, сделайте самолетик и запускайте.
:) :)



-

А если серьёзно, алгоритм примерно такой:
    1. В начало и конец каждого программного блока (соответствующего каждой иконке) добавьте инструкцию перехода к подпрограмме, обслуживающей точку останова.
    2. В этой подпрограмме с определённой задержкой (или по нажатию горячей клавиши) управляйте видимостью соответствующей иконки в дракон-редакторе.

= Тогда соответствующая дракон-схема будет наглядно изображать состояние исполняемой (дёргающейся)) программы.

-

Давно не слежу за новыми версиями, поэтому не знаком с последними возможностями ИС.

    Теоретически, взаимодействие с дракон-редактором (переход к нужной иконке) можно осуществлять следующими способами:
    1. По гиперссылке: <"имя drt-файла">#id-метка. Я так из сторонних программ в документ MS Word перехожу (к заданной закладке-[к фрагменту, картинке]).
    2. Через API
    3. С помощью параметров командной строки. Это если дракон-редактор таким способом поддерживает переход к иконке по её идентификатору.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 20 Июнь, 2015 12:02 

Зарегистрирован: Четверг, 04 Июнь, 2009 15:08
Сообщения: 100
Шилин Александр писал(а):
Нельзя ли добавить в ИС Дракон режим «выполнения» алгоритма, записанного в Дракон-схеме?
Понятно, что при записи алгоритма у нас нет чёткого указания «как делать». Поэтому строго выполнения программными средствами алгоритма в Дракон-схеме добиться, наверное, нельзя.


Лет пять назад я делал внешнюю hook-надстройку к ИС Дракон, позволяющую именно СТРОГОЕ выполнение кода программными средствами (по программным приложениям икон).

Программка сидит в трее и ждёт нажатия определённых клавиш.

При нажатии клавиши выполнения кода (и если активное окно называется "ИС Дракон"):
1) в Дракон-редактор посылается симуляция нажатия Ctrl+S, лист сохраняется,
2) новый файл .DRT (его имя берется из заголовка окна) переводится на язык программирования (в моём случае - vb6), причём все ключевые слова распознаются с мною же созданного русского ЯП, принятого мною в Дракон-схемах, на англоязычную терминологию VB;
3) этот VB-код преобразуется для возможности отладки (после каждого действия проверка нажатия стоп/клавиши и проверка режима отладки, запоминаются все переменные, в начале и конце каждой задачи отлов ошибок, показ имён и значений всех текущих переменных и т.д.)
4) Этот конечный программный код выполняется самой же программой, которой и был приготовлен, с помощью элемента управления VbScript - он позволяет запустить "программу внутри программы" по скрипту vb.
5) В режиме отладки после каждого действия в ИС Дракон посылаются симуляции нажатий клавиш для поиска иконы по номеру, вводится № следующей иконы и Enter. Таким образом, на схеме выделяется икона, подлежащая следующему выполнению., как принято во всех отладчиках.

Так я планировал (и написал до половины) отладчик Дракон-схем внутри ИС "Дракон". Заметив ошибку в последующих иконах, можно исправить её, автоматически сохранить схему и передать программе в трей, которая обновит список дальнейших действий . Всё это не так уж сложно, потому что элемент VbScript всё продумал за нас.

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

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

Могу передать VB-исходники и подробные комментарии тому, кто решит довести дело до конца.


Последний раз редактировалось С. Тарасенко Суббота, 20 Июнь, 2015 12:12, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 20 Июнь, 2015 12:10 

Зарегистрирован: Четверг, 04 Июнь, 2009 15:08
Сообщения: 100
А недавно придумал так:
При нажатии на любую икону в ИС Дракон поле текста скрывается, вместо него подгоняется под размер иконы квадрат для ввода вольного текста, а в углу экрана - квадрат для ввода строгого программного текста по-русски, с подсветкой кода, подсказками, ComboBox ключевых слов и т.д.

Опять-таки, программка, сидя в трее, отлавливает нажатие мышкой в окне под именем "ИС Дракон", и если после нажатия в строке состояния ИС написано, к примеру, <Икона "Действие">, то ставим эти два квадратика с набором команд. Если икона "Вопрос" или "Развилка", то команды для выбора в ComboBox выводим только функции с возвратами (и те, что имеются в схеме, и те, что зарезервированы ключевыми словами).

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 20 Июнь, 2015 12:20 

Зарегистрирован: Четверг, 04 Июнь, 2009 15:08
Сообщения: 100
Ещё у меня была задумка сделать на основа Дракона ЦЕЛЕВОЙ язык программирования, в котором каждая схема соответствовала бы не функции, а цели, т.е. фрагменту кода в определённой функции или даже сбору фрагментов из нескольких функций. И напротив, одна схема может выражать несколько функций (хоть целиком, хоть фрагментами). Это бывает очень важно, когда одна ЦЕЛЬ распылена по всему проекту: например, для вывода таблицы икон нужна одна строка в функции "Нажали мышку", две строки в функции "Отпустили мышку", пять строк там, десять сям, и поди в этом всём не утони.

А так был бы лист по имени "Цель - Показать таблицу икон", и в нём схемы: "Нажали мышку, "Отпустили" и т.д. На этом листе собраны те ФРАГМЕНТЫ КОДА, которые отвечают за показ/скрытие/реагирование на таблицу икон.
Другой лист имеет другую цель, но может содержать также схемы с заголовками "Нажали мышь" и "Отпустили мышь". А порядок расставления всех одноимённых схем в единственную одноимённую функцию выходного языка программирования устанавливается отдельно в отдельном окне трейной программы. Но это всё уже для меня сложно (я ведь самоучка и музыкант вообще-то, а не программист).

Где-то у меня валяется очень подробное детальное описание этой идеи. Кто-нибудь возьмётся?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ] 

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


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

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


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

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