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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Филосовский вопрос по словообразованию 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