информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetПортрет посетителяЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / miscellaneous
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Ой спасибо :) 10.04.08 18:02  Число просмотров: 2449
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
Сейчас запишу в блокнотик, что бы не забыть :)

В твою систему свалился поток данных - это событие или сообщение ? Класс, который будет хранить эти данные обозвать Message или Event ?
Модуль, который направит эти данные обработчику: EventManager или MassageManager ?
<miscellaneous>
Филосовский вопрос по словообразованию 10.04.08 15:19  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
Коллеги, а в чем разница между Event и Message ?
Какую сущность стоит обозвать событием, а какую сообщением ?
У событий часто множественные получатели, и они предполагают подписку на них. 11.04.08 16:09  
Автор: HandleX <Александр М.> Статус: The Elderman
Отредактировано 11.04.08 16:18  Количество правок: 2
<"чистая" ссылка>
Явно или неявно у событий — подписка.

Четыре основных параметра сообщений:
1) получатель
2) селектор (ЧТО за событие).
3) аргументы
4) ответ.
На сообщение предполагается ответ. К примеру, вызов функции это типичная посылка сообщения, вплоть до VOID в С, когда это процедура, и ответ вот так вот вырожден -)).

У событий три основных параметра:
1) подписчики
2) селектор
3) аргументы.
Поскольку подписчиков может быть МНОГО, сигнал о событии не предполагает ответа на него, хотя через аргументы можно добится ответов посылкой сообщений в событии.

Ещё есть конечно критерии — синхронность/асинхронность, обработка ошибок при доставке и проч, и тут есть простор для фантазии реализаторов.

Славен смолток своей реализацией сообщений и событий, хвала ему! ;-)
Там любой объект может генерировать события, и любой объект может подписаться на уведомления о генерируемых событиях одной строчкой кода. К примеру вот так:
someObject when: #someEvent send: #onSomeEvent to: self.
Вуаля. Некий объект (который self) будет теперь получать уведомления о некоем событии #someEvent, происходящем в someObject, через посылку сообщения #onSomeEvent себе. А посылка сообщений в смолтоке это базис, как функция в С. Хотя я не знаю, почему она так в С называется — видимо отцы-основатели С хотели как-то отделить его от смолтока -))

Такое вот моё ИМХО, всем удачи! -))
Кстати прикол 11.04.08 11:18  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
Рефакторю код одной системы, где событиям и сообщениям самое место.
В начале работы тихо офигел от того, что нет ни одного класса, в названии которых встретилось бы одно из этих слов!
Зато половина классов в названии содержат слово Notify ;)
Вот таким красивым способоми человек обошел проблему названий.

С моей точки зрения ответ на мой вопрос кроется несколько глуюбже, чем мы его попытались тут рассмотреть.
Дело в том, имхо, что как в самом вопросе, так и в его обсуждении произошло смешение двух понятий: объектов реального мира, и программных моделей этих объектов.
Ведь что такое "событие" в реальном мире? В словаре написано "то, что произошло, случилось". Однако, еще в школе нас учили не давать определения через "то что". А попробуйте дать определение событию без этого паттерна :) Дело в том, что слово "событие" выглядит как существительное, типа "яблоко" или "автомобиль". Однако при этом описывает не сущность в физическом мире, а некоторое действие. В трансформационной грамматике такие слова называются "номинализациями".
Это касательно реального мира. Теперь, что мы видим в программной модели. А здесь событием называют информацию о том ("о том" - выделенно и подчеркнуто) что произошло. Мы можем написать письмо о том..., мы можем послать сообщение о том..., мы можем сгенерировать эвент о том....
В отличии от реального мира, программное событие - это просто сообщение.
Дело в том, что в программном мире есть данные, и методы работающие с данными - существительные и глаголы :) Номинализаций в программном мире - нет. Любая номинализация, при попытке её "запрограммировать" превращается либо в метод, либо в данные.
Отсюда можно сделать вывод - слово Event, хоть и звучит красиво, но с точки зрения модели денных в программе - абсолютно бесполезно. Его синонимом (в программном мире) является слово message, использование которого не внесет путаницы ни при проектировании системы, ни при чтении кода.
Ну кстати да 11.04.08 11:49  
Автор: Heller <Heller> Статус: Elderman
Отредактировано 11.04.08 11:52  Количество правок: 1
<"чистая" ссылка>
Никогда не понимал почему ON_COMMAND для IDOK - это эвент, а WM_LBUTTONDOWN - это мессадж. Во всяком случае если верить разграничению в MSVC2005 (хотя VC вообще странный продукт - так например OnScroll там отнесен ни к мессаджам, ни к эвентам, а к Overrides).
По всей видимости потому, что разработчики не сильно задумываются над словообразованием. 26.04.08 14:35  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка>
Event - событие, Message - сообщение. 10.04.08 17:49  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка>
Ой спасибо :) 10.04.08 18:02  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
Сейчас запишу в блокнотик, что бы не забыть :)

В твою систему свалился поток данных - это событие или сообщение ? Класс, который будет хранить эти данные обозвать Message или Event ?
Модуль, который направит эти данные обработчику: EventManager или MassageManager ?
Правильно сформулированный вопрос - половина ответа. 11.04.08 18:46  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка>
Если это обработчик событий - EventManager, если сообщений -... 10.04.08 18:20  
Автор: Fighter <Vladimir> Статус: Elderman
<"чистая" ссылка>
> Сейчас запишу в блокнотик, что бы не забыть :)
>
> В твою систему свалился поток данных - это событие или
> сообщение ? Класс, который будет хранить эти данные
> обозвать Message или Event ?
> Модуль, который направит эти данные обработчику:
> EventManager или MassageManager ?
Если это обработчик событий - EventManager, если сообщений -
MessageManager. Чего тут думать? ;)
Дума именно в том и заключается обработчик чего: события или... 10.04.08 18:26  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
> > Сейчас запишу в блокнотик, что бы не забыть :)
> >
> > В твою систему свалился поток данных - это событие или
> > сообщение ? Класс, который будет хранить эти данные
> > обозвать Message или Event ?
> > Модуль, который направит эти данные обработчику:
> > EventManager или MassageManager ?
> Если это обработчик событий - EventManager, если сообщений
> -
> MessageManager. Чего тут думать? ;)

Дума именно в том и заключается обработчик чего: события или сообщения ?
Чем формально отличаются события от сообщений?

Ко мне подошел коллега и сказал что он увольняется - это сообщение или событие ?
Это сообщение о событии. А по принятию сообщения HR-департамент генерит событие, о чём извещает посредством сообщения, которое в свою очередь инициирует событие "прощальная пьянка", после которого сообщений может не быть 10.04.08 18:45  
Автор: Ustin <Ustin> Статус: Elderman
Отредактировано 10.04.08 18:52  Количество правок: 4
<"чистая" ссылка>
Сообщение - известие о произошедшем событии (которого может не быть, а событие есть всегда), то есть информация о случившемся. Любое сообщение - событие. Таким образом, множество сообщений - подмножество множества событий, и если ты пишешь мегаглобальныйкласскоторыйзнаетобовсёмвсегдаисамбляаещёисамвсёделает, то тогда включи в его название слово Event. Если ты обрабатываешь поток сообщений о событиях, произошедших где-то, то это msgmgr

Сообщение
Событие
Не совсем так. Любое сообщение - это просто сообщение. А вот... 10.04.08 20:04  
Автор: Fighter <Vladimir> Статус: Elderman
<"чистая" ссылка>
> Сообщение - известие о произошедшем событии (которого может
> не быть, а событие есть всегда), то есть информация о
> случившемся. Любое сообщение - событие. Таким образом,
Не совсем так. Любое сообщение - это просто сообщение. А вот появление (генерация) сообщения - это уже событие (и обработчик события типа OnMessageEvent)
> множество сообщений - подмножество множества событий, и
> если ты пишешь
> мегаглобальныйкласскоторыйзнаетобовсёмвсегдаисамбляаещёисам
> всёделает, то тогда включи в его название слово Event. Если
> ты обрабатываешь поток сообщений о событиях, произошедших
> где-то, то это msgmgr
Вооооттт... добираемся до сути вопроса :) 10.04.08 18:57  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
> Сообщение - известие о произошедшем событии (которого может
> не быть, а событие есть всегда), то есть информация о
> случившемся. Любое сообщение - событие. Таким образом,
> множество сообщений - подмножество множества событий, и
> если ты пишешь
> мегаглобальныйкласскоторыйзнаетобовсёмвсегдаисамбляаещёисам
> всёделает, то тогда включи в его название слово Event. Если
> ты обрабатываешь поток сообщений о событиях, произошедших
> где-то, то это msgmgr

Вооооттт... добираемся до сути вопроса :)
Любое событе уже несет в себе информацию о том, что же оно такое!
А если оно в себе содержит информацию - то это уже сообщение.
И если, цитирую, "Любое сообщение - событие.", а любое событие, как я сказал - несет в себе информацию о том что произошло, т.е. любое событие - это сообщение, то в чем же тогда между ними разница ? (пони бегает по кругу :) )
Сообщение, это отфильтрованная актуальная информация о событии 11.04.08 03:55  
Автор: Zef <Alloo Zef> Статус: Elderman
<"чистая" ссылка>
А фильтрует ее обработчик события. И отправляет сообщение только тем, кого это касается. Например, ОК отправляет приказ об увольнении директору на подпись.
Уже писать пора начинать :) 10.04.08 19:59  
Автор: Ustin <Ustin> Статус: Elderman
<"чистая" ссылка>
> Любое событе уже несет в себе информацию о том, что же оно
> такое!
Событие - изменение состояния во времени (причём даже если изменение = 0).
Сообщение - событие, из которого можно сделать вывод о событии-родителе, не вступая с ним "в контакт", то есть не являясь участником события-родителя.

> А если оно в себе содержит информацию - то это уже сообщение.
Не-а :) Оно-то, может, и содержит, только будет ли отдавать? Есть такое понятие "горизонт событий" - некая область, сообщения о событиях внутри которой не поступают. Так что событие - это не всегда сообщение

> И если, цитирую, "Любое сообщение - событие.", а любое
> событие, как я сказал - несет в себе информацию о том что
> произошло, т.е. любое событие - это сообщение, то в чем же
> тогда между ними разница ? (пони бегает по кругу :) )
Можно и так: Событие порождает событие. Если событие происходит в горизонте событий, то оно рождает сообщение о себе всегда (сообщение - всегда событие). Сообщение же может как инициировать событие (типа реакция), так и нет (папуасы там подрались или состояние объекта не изменилось и нам ничего не надо делать). То есть сообщения - особый класс событий, которые могут не инициировать следствия и у нашего мира есть 2 сущности, позволяющие ей не переполниться событиями: сообщения и чёрные дыры (пошёл докуривать)
[оффтоп] Невкурил. Это не трава, однозначно :)) 10.04.08 20:18  
Автор: Fighter <Vladimir> Статус: Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach