DRAKON.SU

Текущее время: Вторник, 17 Июнь, 2025 21:36

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




Начать новую тему Ответить на тему  [ Сообщений: 111 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
СообщениеДобавлено: Среда, 26 Ноябрь, 2008 11:41 

Зарегистрирован: Воскресенье, 04 Ноябрь, 2007 23:01
Сообщения: 511
Alexey_Donskoy писал(а):
..Использована терминология Delphi, т.к. средства обработки исключений вроде бы тут полные...

Изобразить дельфовое структурное предложение try-except-finally на Драконе можно, но фишка-то вся в том, что оно тоже было сделано для "преодоления линейности текста", на что чуть выше обратил внимание Илья Ермаков.
Дракон был сделан для визуального представления маршрута выполнения программы..
А в случае с "ситуациями" часто "отсутствует фиксированная связь с определённой точкой в тексте программы,.. связь места возникновения ситуации и места её обработки, возникающая при вызове процедуры".(Сафонов)
Налицо техническое противоречие(ТП). ТРИЗкать будем?
Раз нельзя указать маршрут, может указать область, охватывающую группу икон алгоритма, именованную в соответствии с обработчиком ситуации? Отдельным вопросом остаётся обозначение возврата из обработчика(ежели есть секция finally), но тут можно воспользоваться Дракон'овской наработкой ДЕЙСТВИЕ/ВСТАВКА - одинарная/двойная боковая граница рамки. Цвет лучше пока не трогать. И что делать с разрешением/запретом прерываний(обобщим - ситуаций) - надо ли показывать это в виде "якорей" на области?
Что могло бы означать графическое структурирование областей - строгую проверку вложенности?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Ноябрь, 2008 11:48 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1097
Откуда: Россия, Чебоксары
Так о чём я и говорю! Вложенность и показана явно на моих набросках... Если чуть изменить соответствующие иконы, то можно выделить и более аккуратно...

Графическое структурирование = вложенность, без сомнения...

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Ноябрь, 2008 12:44 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5999
Откуда: Москва
Рэйлвэй Каген писал(а):
BREAK вводить тоже нельзя.
М.б. сделать ожидание ситуации параллельным процессом?


Уважаемый Рэйлвэй Каген!
1. Использование BREAK показано на стр. 178, пример 3 книги "Как улучшить работу ума"
2. Ожидание можно выполнить с помощью цикла "Ждать" (см. там же, рис. 84, 85 и сопутствующий текст).

Если я ответил не по теме, поправьте меня.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Ноябрь, 2008 13:00 

Зарегистрирован: Воскресенье, 04 Ноябрь, 2007 23:01
Сообщения: 511
Вот так, наверное..
Вложение:
doc4.png
doc4.png [ 42.75 КБ | Просмотров: 17943 ]

То же, только покрупнее, в пдф-нике:
Вложение:
Doc4.pdf [63.36 КБ]
Скачиваний: 554

Всё-таки мы не должны повторять конструкции целевого языка, а должны рисовать то, что потом можно будет описать этими самыми конструкциями(try-finally-except).
В таком виде явно контролируется вложенность и сразу будут заметны злоупотребления типа "попрограммировать на ситуациях".


Последний раз редактировалось Рэйлвэй Каген Среда, 26 Ноябрь, 2008 13:31, всего редактировалось 5 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Ноябрь, 2008 13:11 

Зарегистрирован: Воскресенье, 04 Ноябрь, 2007 23:01
Сообщения: 511
Владимир Паронджанов писал(а):
1. Использование BREAK показано на стр. 178, пример 3 книги "Как улучшить работу ума".
Я про другой BREAK - который для выхода из цикла до его завершения.
Владимир Паронджанов писал(а):
2. Ожидание можно выполнить с помощью цикла "Ждать" (см. там же, рис. 84, 85 и сопутствующий текст).
Речь о том, что бывает "ситуацию" явно никто не ждет по маршруту алгоритма. Сафонов (с.65) см.п.2. динамические ситуации. Поэтому делать циклом "Ждать" - нецелесообразно.


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

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1097
Откуда: Россия, Чебоксары
Ну, давайте рассуждать логически...

1) Ситуация имеет алгоритм обработки? Да. Значит, просто рисовать прямоугольник вставки и описывать алгоритм в другом месте неправильно (неэргономично).

2) Раз ситуацию никто не ждёт, значит, алгоритм её обработки должен иметь отдельное начало, висящее "в воздухе". Никуда от этой дополнительной точки входа не денешься.

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

4) Обработчик ситуации имеет алгоритмическую привязку в точках инициализации и удаления обработчика. Эти точки и определяют область действия обработчика ситуации (не самой ситуации! чтобы не было путаницы в терминах!).

Суммируя всё вышесказанное, приходим к моим картинкам, где шапка иконы "Обработчик ситуации" должна быть похожа на шапку "Переключателя" или "Силуэта", поскольку и выполняет-то она схожие функции! При таком подходе также исчезает "висящая в воздухе" точка входа в обработчик, всё располагается компактно и понятно.

Кроме того, целесообразно иметь видимую область действия обработчика (тот самый выделенный прямоугольник, привязанный к шапке). Любой выход из области действия означает удаление обработчика (end).

И ещё кроме того, внутри обработчика допустимы любые алгоритмические перемещения (механизм силуэта для этого пдходит). Приходим к этакому гибриду силуэта с переключателем, что я и пытался изобразить стандартными средствами Дракона...


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

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
Откажитесь от понятия "вызов-иерархия вызовов" -и будет многое намного проще.
Произошло нечто - пуляем наверх (неизвестно кому) сообщение. Наверху в надсистеме кто-то его ловит.


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

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1097
Откуда: Россия, Чебоксары
Дык, речь ведь о не только о том, как наверх... Речь о том, как описать на Драконе приём этого сообщения.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Ноябрь, 2008 16:21 

Зарегистрирован: Воскресенье, 04 Ноябрь, 2007 23:01
Сообщения: 511
2 Alexey_Donskoy:
1. Зачем в другом месте? Пусть алгоритм обработчика рисуется/открывается прямо в области. Как в фотошопе - по слоям.. До RationalRose с его сонмищем закладок, надеюсь, не дойдёт..
2. Соответственно и "висяка" не будет
3. Ежели вызвали, как "вставку", тогда и вернёмся в правильное место - после вызова. Можно вызвать как "действие", тогда возвращаться придётся в наружную процедуру и т.д. до перехвата на более высоком уровне(по классической модели).
4. Конструктор ситуаций пока рано лепить. Он наверняка появится - средствами автоматической трансляции, но сейчас нарисовать бы корректно все связи.

Отрисовываться с использованием силуэта по try-finally-except слишком узко. Только статические сиуации попадают в эту категорию отображения.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Ноябрь, 2008 16:29 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1097
Откуда: Россия, Чебоксары
Рэйлвэй Каген писал(а):
Пусть алгоритм обработчика рисуется/открывается прямо в области. Как в фотошопе - по слоям..
Вот это другой разговор! Но тут Владимир Даниелович не согласится никогда - потому что это уход от плоско-бумажного представления...

Рэйлвэй Каген писал(а):
Отрисовываться с использованием силуэта по try-finally-except слишком узко. Только статические сиуации попадают в эту категорию отображения.
Вот этого не понял... Что значит "статические"? И в каких ("динамических"?) случаях этого недостаточно?

Область действия? Есть.
Точки входа? Есть.
Алгоритм? Есть.
Точки выхода? Есть (то есть в силуэте нет, а в иконе "Исключение" сделать придётся ;) )


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Ноябрь, 2008 20:04 

Зарегистрирован: Воскресенье, 06 Апрель, 2008 14:43
Сообщения: 1657
Вложение:
Try.png

В иконах "<Операторы>" не операторы на языке Delphi, а фрагменты алгоритма на ДРАКОНе.
Здесь был разговор о различного рода добавлениях, но думаю правильнее следовать авторскому ДРАКОНУ.


Последний раз редактировалось ==== Среда, 26 Ноябрь, 2008 22:20, всего редактировалось 3 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Ноябрь, 2008 20:49 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1097
Откуда: Россия, Чебоксары
Почти убедили :D

Только что такая форма по существу ничем не отличается от текстовой и не использует графические преимущества Дракона... Например, очень было бы полезно хотя бы графически выделить область действия исключения (от try до end).

По этому поводу - к редактору... Очень было бы полезно сделать свободные (не включаемые в схему) графические объекты (прямоугольник, закрашенный прямоугольник) - для выделения каких-либо участков блок-схем. Пусть себе рисуется под схемой... И можно ещё привязать стороны прямоугольника к узлам схемы - чтобы растягивался вместе с ней!

Ну и раскрашивание икон, кстати, тоже было бы очень полезной опцией!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 27 Ноябрь, 2008 10:54 

Зарегистрирован: Воскресенье, 04 Ноябрь, 2007 23:01
Сообщения: 511
Alexey_Donskoy писал(а):
..уход от плоско-бумажного представления...
Эргономически выгоднее рисовать область реакции на ситуацию(прямоугольник, охватывающий часть дракон-схемы, в котором может находиться место возникновения ситуации), нежели сразу забивать структурное предложение, состоящее из шапки(try) плюс иконы "вопрос"-"выбор"-"вариант". При изменениях основного алгоритма надо будет как-то контролировать целостность предложения от try до end, плюс ещё недопущение переходов из алгоритма внутрь секций except и finally. Графические правила структурирования для этого придумать будет трудно. С выделением области это можно решить визуально, а в Вашем случае?

Alexey_Donskoy писал(а):
Что значит "статические"?
значит, что "условия возникновения ситуации предусмотрены программистом"(Сафонов)
"Статическая ситуация - это константа, значением которой является метка перехода. Динамическая ситуация - это объект скрытого типа."(Пентковский).
Тут я ошибся, сказав, что try-except-finally подходит только для статики. :?
Нерассмотренным остается вопрос с прерыванием, поскольку это ситуация динамическая по характеру связи места возникновения с местом обработки. Как отобразить ситуацию прерывания от периферии? Отражающую правильный маршрут выполнения алгоритма, в отличие от стандартных прерываний, сигнализирующих об ошибке? try-except-finally не подходит идеологически.

p.s.:Учитывая приведённые выше определения ситуаций, разумно рассмотривать их как декларативные сущности. А раз так, то напрямую в Драконе они отображаться не должны. Тогда имеем право отрисовать обработчик как метод типа/класса(отдельно на том же листе, на отдельном листе, слое и т.п.), т.е. всё-таки не включая его в основной алгоритм. Точка входа - в выделенной области алгоритма. Возражения??


Последний раз редактировалось Рэйлвэй Каген Четверг, 27 Ноябрь, 2008 21:58, всего редактировалось 3 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 27 Ноябрь, 2008 16:49 

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 341
Владимир Паронджанов писал(а):
TAU писал(а):
В этом вообще очень серьезный подвох Дракона - отсутствие поддержки параллельных процессов

Уважаемый TAU!
Это неверно. Дракон способен поддерживать параллельные процессы

Согласен, я выразился некорректно. Прошу прощения.

Владимир Паронджанов писал(а):
Или Вы имеете в виду нечто иное? В таком случае поправьте меня

Я, собственного говря, имел в виду то, что отсутствует удобная возможность отобразить на одной диаграмме несколько выполняемых параллельно алгоритмических веток - чего-то вроде "порождения разветвления потока управления" и "слияния потоков управления" типа тех, что есть в диаграмме деятельностей UML 2.0.

Кроме того (я освежил в памяти главу 11 Вашей книги, спасибо :-) ), меня интересует вот какой вопрос. Возможна такая ситуация, что необходимо в алгортитме запустить на выполнение сразу несколько порожденных параллельных процессов, каждый по прошествии определенного временного интервала. В том числе - может возникнуть необходимость и запуска другого входа того же самого алгоритма.
Как это можно отобразить? Средства иконы "синхронизатор" не дают возможности наглядно отобразить связь между порождающим и порожденным алгоритмами.

Заранее благодарен за ответ.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 27 Ноябрь, 2008 19:18 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5999
Откуда: Москва
Уважаемый TAU!

Согласен с Вашим критическим замечанием.
Недостаток я вижу том, что, хотя Дракон и отображает параллельные процессы, он делает это чисто логически (математически). А это не очень-то хорошо.
Почему? Потому что, как Вы совершенно справедливо отмечаете, "отсутствует удобная возможность отобразить на одной диаграмме несколько выполняемых параллельно" процессов.

Таким образом, возникает ситуация: С ТОЧКИ ЗРЕНИЯ МАТЕМАТИКИ --ХОРОШО. А С ТОЧКИ ЗРЕНИЯ НАГЛЯДНОСТИ -- ПЛОХО!

Выход из положения я вижу в следующем. Я изложу свою позицию на "родном" для меня примере технологии ГРАФИТ-ФЛОКС.
http://wiki.oberoncore.ru/index.php/%D0 ... 0%BE%D0%BD

В этой технологии два редактора:
:!: процедурный графит-редактор;
:!: декларативный флокс-редактор.

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

Имеется в виду не просто картинка, а математически строгая оцифрованная временная диаграмма, на которой показано не только время, но и СВЯЗИ временных событий между собой.

Эта ТРЕТЬЯ (математически строгая) картинка дает возможность наглядно увидеть глазами взаимодействие параллельных процессов между собой и с другими логическими сигналами.

Надо сказать, что это была не просто мечта. В нашем коллективе было полное единство взглядов относительно целесообразности создания редактора циклограмм. Меня даже попросили написать техническое задание на разработку такого редактора, что я и сделал.
Увы! В жизни удается реализовать не все, что было задумано. У программистов вклинилась какая-то свехсрочная работа. И редактор циклограмм был временно отложен. Сначала временно... а потом и навсегда. В общем, то, о чем я рассказал, НЕ БЫЛО РЕАЛИЗОВАНО НА ПРАКТИКЕ.

Но я до сих пор считаю, что это был правильный путь (в особенности, для систем реального времени).

Впрочем, кто знает! Может быть, когда-нибудь найдется энтузиаст, который дополнит редактор Геннадия Тышова редактором циклограмм.

Постскриптум. На всякий случай подчеркну, что алгоритм и циклограмма -- это два разных чертежа, которые распечатываются на двух разных листах бумаги.
Алгоритм и циклограмма никогда не совмещаются на одном чертеже. Это РАЗНЫЕ картинки. Они не накладываются друг на друга.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 27 Ноябрь, 2008 23:34 

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 341
Владимир Паронджанов писал(а):
Согласен с Вашим критическим замечанием... как Вы совершенно справедливо отмечаете, "отсутствует удобная возможность отобразить на одной диаграмме несколько выполняемых параллельно" процессов...
На мой взгляд, для удобства работы надо добавить
:!: третий редактор -- редактор циклограмм, на котором на горизональных линиях отображается последовательность всех событий во времени. На этой же диаграмме отображаются пуски и остановы всех параллельных процессов...
Надо сказать, что это была не просто мечта. В нашем коллективе было полное единство взглядов относительно целесообразности создания редактора циклограмм. Меня даже попросили написать техническое задание на разработку такого редактора, что я и сделал.
Увы! В жизни удается реализовать не все, что было задумано. У программистов вклинилась какая-то свехсрочная работа. И редактор циклограмм был временно отложен. Сначала временно... а потом и навсегда. В общем, то, о чем я рассказал, НЕ БЫЛО РЕАЛИЗОВАНО НА ПРАКТИКЕ.
Но я до сих пор считаю, что это был правильный путь (в особенности, для систем реального времени).
Впрочем, кто знает! Может быть, когда-нибудь найдется энтузиаст, который дополнит редактор Геннадия Тышова редактором циклограмм

Уважаемый Владимир Даниелович! Думаю, Вы догадываетесь, кто я такой :wink:
В конце концов, и попал я на этот форум по ссылке из Вашего письма.
Так вот: редактор циклограмм был нами создан. И достаточно давно.
К сожалению, с его практическим использованием на предприятии все обстоит тоже не столь радужно.
Но это - совершенно отдельная тема, собственно, слабо связанная с его целесообразностью.

Владимир Паронджанов писал(а):
Постскриптум. На всякий случай подчеркну, что алгоритм и циклограмма -- это два разных чертежа, которые распечатываются на двух разных листах бумаги.
Алгоритм и циклограмма никогда не совмещаются на одном чертеже. Это РАЗНЫЕ картинки. Они не накладываются друг на друга

Тут Вы не совсем правы :wink: Нашим заказчиком найдено некое представление - "гибрид", сочетающее отображение на одной так называемой "временной диаграмме" и времени, и алгоритма (сразу поясню, что это - не циклограмма).


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

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1097
Откуда: Россия, Чебоксары
А подробнее? :D


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 28 Ноябрь, 2008 19:54 

Зарегистрирован: Воскресенье, 06 Апрель, 2008 14:43
Сообщения: 1657
Вложение:
CikloGramma.png


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 29 Ноябрь, 2008 01:35 

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 341
Геннадий Тышов писал(а):
Вложение:
CikloGramma.png

Геннадий, можно. Но не очень наглядно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 29 Ноябрь, 2008 11:21 

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 341
Alexey_Donskoy писал(а):
А подробнее? :D

Первая картинка - визуальный конструктор "временных диаграмм", отражающих логико-временную схему алгоритма.

Вторая картинка - графический редактор циклограмм.


Вложения:
GK2.JPG
GK2.JPG [ 79.76 КБ | Просмотров: 17934 ]
GK1.JPG
GK1.JPG [ 70.2 КБ | Просмотров: 17933 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 111 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

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


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

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


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

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