Степан Митькин писал(а):
Читателю ДРАКОН-схемы иногда нужно знать, как ведёт себя алгоритм в той или иной иконе. Где ждёт внешнего события, где передаёт управление диспетчеру. Я сначала согласился с мнением TAU, что автор схемы должен такие вещи указывать: рисовать пунктирную линию вместо сплошной, например.
Но потом я понял, что такие дополнительные детали добавлять в язык не надо. Поясню. Вы ожидаете, когда пользователь нажмёт кнопку, в иконе Ввод. Этого события можно ждать год. Поэтому TAU говорит: рисуй пунктир! Покажи, что алгоритм здесь залипает! Владимир Ситников добавляет: хочу видеть, когда управление переходит диспетчеру! Покажи это на схеме!
Но ведь автор уже сказал "ждать" иконой Ввод. Значит, дополнительные средства типа пунктира избыточны. Не рисуйте пунктир, не делайте лишнюю работу.
Но передачу контроля хотелось бы видеть. Как быть? Я предлагаю дополнительные автоматические средства визуализации.
Ваши намерения понятны, и хотелось бы их поддержать, однако "ввод/вывод" длительностью хоть в 10 лет не выражает "ожидание" в том смысле, как Вы разбирали на примерах результатов того же Закревского. Семантика операций "ввода/вывода", кстати как и "паузы" в блок-схемах, никакого переключения контекста (передачи управления диспетчеру, освобождение потока) не предусматривает.
А уважаемый TAU указывает не на "рисуй пунктир!, а то алгоритм здесь залипает!", а прежде всего акцентирует на необходимости указания входа/выхода, как здесь, например:
https://forum.drakon.su/viewtopic.php?f=176&t=6221#p101429В википедии про Дракон указано:
https://ru.wikipedia.org/wiki/%D0%94%D0%A0%D0%90%D0%9A%D0%9E%D0%9DЦитата:
Язык построен за счёт формализации и эргономизации блок-схем алгоритмов, описанных в ГОСТ 19.701-90 и ISO 5807-85.
В ГОСТ-е существуют не "дополнительные автоматические средства визуализации", а конкретно определена операция "ограничитель" или "терминатор":
http://www.pntd.ru/19.701.htmЦитата:
3.4.2. Терминатор
Символ отображает выход во внешнюю среду и вход из внешней среды (начало или конец схемы программы, внешнее использование и источник или пункт назначения данных).
Все входы/выходы отображаются явно:
Вложение:
19_701_47.jpg [ 30.47 КБ | Просмотров: 7587 ]
В ГОСТ-е есть и иная операция "передача управления" в виде треугольника -- для "ожиданий" и "событий":
Цитата:
3.3.2.1. Передача управления
Символ отображает непосредственную передачу управления от одного процесса к другому, иногда с возможностью прямого возвращения к инициирующему процессу после того, как инициированный процесс завершит свои функции. Тип передачи управления должен быть назван внутри символа (например, запрос, вызов, событие).
Вложение:
19_701_50.jpg [ 49.09 КБ | Просмотров: 7587 ]
Однако, эта операция применяется только для "схем взаимодействия программ", где нет "выхода во внешнюю среду и входа из внешней среды", и не применяется в контексте "схем программ" (граф-схем алгоритма).
У Закревского, кстати, аналогично -- свой граф "событий" (в рамках визуальных средств), которые "управляют" действиями такими же, как и в граф-схемах алгоритмов (каждое действие может быть раскрыто своей схемой, фактически, "события" управляют исполнением алгоритмических граф-схем во времени -- организация процесса).
Графический формализм Зюбина не имеет "терминаторов" и основан на вариации "data flow"-схем, однако все входы/выходы (с "разрывами управления") обозначаются также явно вместе с причинами их возникновения.
Владимир Даниелович в пояснениях к иконам "заголовок" и "конец" ничего не указывает насчёт входа/выхода в алгоритм:
https://forum.drakon.su/viewtopic.php?f=62&t=6156Но выше в теме он уточняет в своей цитате:
https://forum.drakon.su/viewtopic.php?f=142&t=6246&start=80#p101872Владимир Паронджанов писал(а):
В действительности программы реального времени имеют много входов и много выходов. Дополнительные входы и выходы появляются всякий раз, когда в алгоритм добавляется оператор Пауза, Период и др.
Но эти дополнительные входы и выходы на рисунках не показаны. Они не показаны из эргономических соображений — чтобы не загромождать рисунок.
Т.е., всё-таки, "терминатор" такой же, как и в блок-схемах, ибо сохраняется их понятие "входа/выхода" в алгоритм. Однако, решение не отражать "терминаторы" в схемах и есть из разряда "субъективных пристрастий":
https://forum.drakon.su/viewtopic.php?f=142&t=6246&start=80#p101871Владимир Паронджанов писал(а):
Надо смотреть на общую картину и не увлекаться субъективными пристрастиями
Если в составе изделия имеется элемент, для которого предусматривается фиксация на схемах в виде предопределённой фигуры/линии с заданной метафорой/семантикой, то этот элемент и должен быть на схеме. К примеру, в контексте материально-технических схем просто немыслимо, чтобы из чертежа выкинули узлы/детали только из каких-то там эргономических соображений.
Если есть желание не отображать "терминаторы", то их тогда необходимо вообще "изъять из обращения" (из "репертуара") и предусмотреть их семантику каким-то иным способом (для решения проблем эргономики). И тогда вообще отказаться от положения "формализации и эргономизации блок-схем".
Однако, всё же необходимо не забывать, что вряд ли "рядовые" пользователи, не перелопатившие талмуды по Дракон-у, глядя на его иконы, будут подразумевать какую-то иную, кардинально отличную у них семантику от семантики схожих фигур в блок-схемах, на что указывал TAU.