DRAKON.SU

Текущее время: Вторник, 16 Апрель, 2024 20:11

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




Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Икона "Событие". Как изобразить?
СообщениеДобавлено: Воскресенье, 22 Март, 2015 21:39 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5848
Откуда: Москва
Некоторое время назад Эдуард Ильченко предложил использовать
икону "Синхронизатор" для обозначения События (если я правильно помню).
viewtopic.php?p=82887#p82887

Обдумав ситуацию, я решил последовать этому совету. Спасибо,
Эдуард Владимирович, за ценный совет.

Вот предлагаемое решение (см. икону 19).
Таким образом, икона 19 предлагается для использования двух разных функций.

По-английски, потому что для английского издания моей книги.
Вложение:
Комментарий к файлу: Иконы языка ДРАКОН
Fig. 17  Icons   Rev2  .png
Fig. 17 Icons Rev2 .png [ 362.49 КБ | Просмотров: 22664 ]


Прошу критиковать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Икона "Событие". Как изобразить?
СообщениеДобавлено: Понедельник, 23 Март, 2015 10:01 
Аватара пользователя

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

Что означает здесь словов "Событие"? Можно ли привести пример?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Икона "Событие". Как изобразить?
СообщениеДобавлено: Понедельник, 23 Март, 2015 10:54 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5848
Откуда: Москва
Степан Митькин писал(а):
Что означает здесь слово "Событие"? Можно ли привести пример?


Событие как в Википедии

Вот два примера:

1 Пример из Википедии
Цитата:
Typical sources of events include the user (who presses a key on the keyboard, in other words, through a keystroke).


2 Второй пример (родной для меня)

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Икона "Событие". Как изобразить?
СообщениеДобавлено: Суббота, 28 Март, 2015 09:54 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5848
Откуда: Москва
КАКАЯ ЦЕЛЬ? А ЦЕЛЬ ТАКАЯ — желательно дополнить язык ДРАКОН и приспособить его для выполнения функций Событийно-ориентированного программирования.

Возможно ли это? А если возможно, то как?




Сообщаю про две статьи в Википедии, разъясняющие понятие "событие"

1. Событийно-ориентированная архитектура

2. Событийно-ориентированное программирование

============================

Цитата:
Статья "Событийно-ориентированная архитектура"

Архитектура, управляемая событиями (Event-driven architecture — EDA) является шаблоном архитектуры программного обеспечения, позволяющим создание, определение, потребление и реакцию на события.

Событие можно определить как «существенное изменение состояния»[1]. Например, когда покупатель приобретает автомобиль, состояние автомобиля изменяется с «продаваемого» на «проданный». Системная архитектура продавца автомобилей может рассматривать это изменение состояния как событие, создаваемое, публикуемое, определяемое и потребляемое различными приложениями в составе архитектуры.

Этот архитектурный шаблон может применяться при разработке и реализации приложений и систем, передающих события среди слабосвязанных программных компонентов и служб.

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

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

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

Создание приложений и систем в рамках архитектуры, управляемой событиями, позволяет им быть сконструированными способом, способствующим лучшей интерактивности, поскольку системы, управляемые событиями, по структуре более ориентированы на непредсказуемые и асинхронные окружения[2].

Архитектура, управляемая событиями соответствует сервис-ориентированной архитектуре (SOA), поскольку сервисы могут активироваться триггерами, срабатывающими от входящих событий[2][3].

Эта парадигма особенно полезна в случае, когда сток не предоставляет собственного исполнения действий.

Сервис-ориентированная архитектура, управляемая событиями, развивает архитектуры SOA и EDA для предоставления более глубокого и надежного уровня услуг за счет использования ранее неизвестных причинно-следственных связей, чтобы сформировать новую модель событий. Этот новый шаблон бизнес-аналитики ведет к дальнейшей автоматизации обработки, добавляющей предприятию не достижимой ранее производительности путем внесения ценной информации в распознанный шаблон деятельности.

Читать дальше ...

Цитата:
Событийно-ориентированное программирование

Событи́йно-ориенти́рованное программи́рование (англ. event-driven programming; в дальнейшем СОП) — парадигма программирования, в которой выполнение программы определяется событиями — действиями пользователя (клавиатура, мышь), сообщениями других программ и потоков, событиями операционной системы (например, поступлением сетевого пакета).

СОП можно также определить как способ построения компьютерной программы, при котором в коде (как правило, в головной функции программы) явным образом выделяется главный цикл приложения, тело которого состоит из двух частей: выборки события и обработки события.

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

Читать дальше ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Икона "Событие". Как изобразить?
СообщениеДобавлено: Суббота, 04 Апрель, 2015 18:29 

Зарегистрирован: Вторник, 13 Декабрь, 2011 15:31
Сообщения: 113
Насколько я понимаю, событие это на самом деле то же самое что и Ввод, то есть из конкретного источника события в ход выполнения программы вводится информация о событии. То есть если я правильно понял понятие события, то событие берется из конкретного источника и несет конкретную информацию о событии. В этом случае было бы хорошо если икона показывала бы оба эти момента. Я предлагаю искользовать для отображения события икону Ввод. На верхней части иконы Ввод писать откуда событие, а на нижней части информацию о случившемся событии.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Икона "Событие". Как изобразить?
СообщениеДобавлено: Вторник, 07 Апрель, 2015 15:57 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Я понимаю икону "Событие" так:
1. В самой иконе "Событие" указывается, какой именно вид событий ожидается. Например, события мыши.
2. Икона, к которой присоединена икона "Событие" будет исполнена, только когда событие наступит.

То есть алгоритм останавливается и ничего не делает, покамест ожидаемое событие не наступит.
Когда оно наступит, выполнение алгоритма продолжится, начиная с иконы, к которой присоединена икона "Событие".
Временная остановка алгоритка происходит перед этой иконой.
Вложение:
Screen Shot 04-07-15 at 02.36 PM.PNG
Screen Shot 04-07-15 at 02.36 PM.PNG [ 13.32 КБ | Просмотров: 22503 ]


Это стандартный цикл обработки событий приложения. (Технически точнее — потока.)
Здесь мы ожидаем события от операционной системы. Получив событие, мы его обрабатываем и снова ожидаем.
Вложение:
Screen Shot 04-07-15 at 02.39 PM.PNG
Screen Shot 04-07-15 at 02.39 PM.PNG [ 14.4 КБ | Просмотров: 22503 ]

А вот конечный автомат, который управляет механизмом типа drag-n-drop.
Здесь мы ожидаем поступления событий мыши.
Вложение:
Screen Shot 04-07-15 at 02.39 PM 001.PNG
Screen Shot 04-07-15 at 02.39 PM 001.PNG [ 35.67 КБ | Просмотров: 22503 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Икона "Событие". Как изобразить?
СообщениеДобавлено: Среда, 08 Апрель, 2015 00:13 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 145
Откуда: Москва
Степан Митькин писал(а):
Владимир Паронджанов писал(а):
Некоторое время назад Эдуард Ильченко предложил использовать
икону "Синхронизатор" для обозначения События...

Что означает здесь словов "Событие"? Можно ли привести пример?


Событие предлагалось 2 года назад здесь http://forum.oberoncore.ru/viewtopic.php?f=62&t=4350&start=100#p80135
Но не встретило понимания
Владимир Паронджанов писал(а):
В схемах Петра Приклонского я не заметил следов Вашего красного карандаша.


С Вашей схемой, Степан, согласен.
Степан Митькин писал(а):
То есть алгоритм останавливается и ничего не делает, покамест ожидаемое событие не наступит.

Обратите внимание, тут должен быть Дракон-диспетчер, который может перехватывать события от окна/формы ввода-вывода и отправлять их в точку, где "действие, которое будет совершено при наступлении события". Ну еще нужно уточнить семантику, где использовать иконки Ввод(Вывод), а где событие.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Икона "Событие". Как изобразить?
СообщениеДобавлено: Среда, 08 Апрель, 2015 14:10 
Аватара пользователя

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

Да, именно так.

Дмитрий Дагаев писал(а):
Ну еще нужно уточнить семантику, где использовать иконки Ввод(Вывод), а где событие.


Предлагаю следующим образом разграничить смысл икон ввода-вывода и события:

1. Для блокирующего (синхронного) ввода и вывода применяем иконы "Ввод" и "Вывод".
Эти иконы выполняются до тех пор, пока операция не закончится.

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


Пример: чтение файла с диска и отправка его по сети.
Чтение и отправка блокируют.
Вложение:
Screen Shot 04-08-15 at 12.53 PM.PNG
Screen Shot 04-08-15 at 12.53 PM.PNG [ 43.19 КБ | Просмотров: 22446 ]


Тот же пример, но чтение и отправка не блокируют.
Вложение:
Screen Shot 04-08-15 at 01.07 PM.PNG
Screen Shot 04-08-15 at 01.07 PM.PNG [ 61.51 КБ | Просмотров: 22446 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Икона "Событие". Как изобразить?
СообщениеДобавлено: Среда, 08 Апрель, 2015 14:34 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 145
Откуда: Москва
В целом согласен, но ...
С п.2 что-то немножко не так. Получается тот же блокирующий вызов.
В данном примере напрашивается, чтобы Событие прицепить прямо к иконкам Ветка силуэта. Чтобы Ветка означала состояние КА, а Событие было как условие перехода?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Икона "Событие". Как изобразить?
СообщениеДобавлено: Среда, 08 Апрель, 2015 14:52 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 145
Откуда: Москва
Здесь напрашивается связка с Вашей деятельностью в направлении Actor Model http://drakon-editor.sourceforge.net/actors.html
Для каждой такой ветки силуэта слева - событие, а внизу иконка выбора. И получится обработчик а-ля Erlang.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Икона "Событие". Как изобразить?
СообщениеДобавлено: Среда, 08 Апрель, 2015 16:15 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 145
Откуда: Москва
Привожу пример Часы, основанные на событии от таймера. Смысл иконки меняется: вместо блокировки на время ожидания - обработка события и возврат.


Вложения:
Clock.png
Clock.png [ 4.85 КБ | Просмотров: 22431 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Икона "Событие". Как изобразить?
СообщениеДобавлено: Среда, 08 Апрель, 2015 17:08 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Есть соображение против прикрепления иконы "событие" к заголовку ветки.

Как мы рассудили выше, икона "событие" останавливает алгоритм перед собой.
Значит, если ветка означает состояние автомата, и слева от заголовка ветки есть "событие",
то это можно прочитать так:
Цитата:
данное состояние не наступит, пока не произойдёт данное событие.
а пока автомат ждёт в другом, промежуточном состоянии.
а когда событие произойдёт, то состояние наступит, но автомат в нём не задержится, а побежит дальше.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Икона "Событие". Как изобразить?
СообщениеДобавлено: Среда, 08 Апрель, 2015 17:20 
Аватара пользователя

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

С другой стороны, Вы правы, Дмитрий.

Требуется способ обозначить ветку как "состояние в ожидании событий".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Икона "Событие". Как изобразить?
СообщениеДобавлено: Среда, 08 Апрель, 2015 18:03 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 145
Откуда: Москва
Степан Митькин писал(а):
Как мы рассудили выше, икона "событие" останавливает алгоритм перед собой.

Еще 2 соображения.
1. Чтобы остановить алгоритм, используем иконку "Ввод". В Ваших двух схемах функциональность Ввода и События почти одинакова. Но событие не должно останавливать алгоритм, а вызвать хэндлер и вернуться.
2. Горизонтальная линия от иконки "Событие" направлена на боковую точку входа в основной поток, что намекает на вызов извне. Иконка "Ввод" расположена на линии маршрута алгоритма, что намекает на блокировку с ожиданием.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Икона "Событие". Как изобразить?
СообщениеДобавлено: Четверг, 09 Апрель, 2015 01:12 

Зарегистрирован: Четверг, 10 Январь, 2013 16:59
Сообщения: 70
Не нравятся мне эти синхронизаторы. Проще и универсальней другой метод: логические элементы.

В примитивах как событие, так и ждущий цикл можно организовать одним и тем же универсальным логическим элементом:
Изображение


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Икона "Событие". Как изобразить?
СообщениеДобавлено: Четверг, 09 Апрель, 2015 13:22 

Зарегистрирован: Четверг, 10 Январь, 2013 16:59
Сообщения: 70
Владимир Паронджанов писал(а):
КАКАЯ ЦЕЛЬ? А ЦЕЛЬ ТАКАЯ — желательно дополнить язык ДРАКОН и приспособить его для выполнения функций Событийно-ориентированного программирования.

Возможно ли это? А если возможно, то как?
Эта задача красиво решается при помощи логических элементов.


Из книги «УЧИСЬ ПИСАТЬ, ЧИТАТЬ И ПОНИМАТЬ АЛГОРИТМЫ»:
Владимир Паронджанов писал(а):
Человек, который стоит на остановке и ждет появления трамвая, вос-
принимает ожидание как нечто непрерывное. Однако алгоритм реального
времени организует ожидание как дискретный процесс и запускает цикл
ЖДАТЬ периодически.
Можно и непрерывно ожидать (останавливая выполнение программы (алгоритма)). Чтобы ждать непрерывно, достаточно оставить свободным инверсный выход логического элемента.
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Икона "Событие". Как изобразить?
СообщениеДобавлено: Воскресенье, 12 Апрель, 2015 11:07 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5848
Откуда: Москва
Дмитрий Дагаев писал(а):
Событие предлагалось 2 года назад здесь http://forum.oberoncore.ru/viewtopic.php?f=62&t=4350&start=100#p80135
Но не встретило понимания

Вы правы. "Не встретило понимания" по простой причине. Все эти вещи являются новыми для меня и требуют длительного обдумывания.

Нужно не только обдумывание, но и примеры. Большое количество примеров. И обсуждение, подробное обсуждение примеров.

Тем не менее, сегодня, спустя два года, Ваша правота относительно События стала очевидной. Большое Вам спасибо.

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

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

Приглашаю Вас еще раз вернуться к обдумыванию и обсуждению этого важнейшего вопроса.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Икона "Событие". Как изобразить?
СообщениеДобавлено: Воскресенье, 12 Апрель, 2015 11:59 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Дмитрий Дагаев писал(а):
Привожу пример Часы, основанные на событии от таймера. Смысл иконки меняется: вместо блокировки на время ожидания - обработка события и возврат.
Вложение:
clock.png
clock.png [ 4.85 КБ | Просмотров: 22311 ]

Имхо, логичнее использовать такую конструкцию:
Вложение:
clock1.png
clock1.png [ 22.55 КБ | Просмотров: 22311 ]

Ещё нужно определиться, как показать генерацию события.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Икона "Событие". Как изобразить?
СообщениеДобавлено: Воскресенье, 12 Апрель, 2015 12:24 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Дмитрий Дагаев писал(а):
1. Чтобы остановить алгоритм, используем иконку "Ввод".
Работу иконы Ввод можно завершать по таймауту.
Вложение:
dostup.png
dostup.png [ 79.05 КБ | Просмотров: 22304 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Икона "Событие". Как изобразить?
СообщениеДобавлено: Воскресенье, 12 Апрель, 2015 13:33 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Владимир Паронджанов писал(а):
Некоторое время назад Эдуард Ильченко предложил использовать
икону "Синхронизатор" для обозначения События (если я правильно помню).
viewtopic.php?p=82887#p82887

Обдумав ситуацию, я решил последовать этому совету.

Я использовал икону "Синхронизатор" в качестве составной макроиконы в контексте "нормализованного описания" алгоритма. Фактически, она должна раскрываться в реальную схему алгоритма, как показано ниже:
Вложение:
s1.png
s1.png [ 21.44 КБ | Просмотров: 22298 ]

Вложение:
s2.png
s2.png [ 65.37 КБ | Просмотров: 22298 ]


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу 1, 2  След.

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


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

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


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

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