Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | | | | |
Вооооттт... добираемся до сути вопроса :) 10.04.08 18:57 Число просмотров: 2263
Автор: PS <PS> Статус: Elderman
|
> Сообщение - известие о произошедшем событии (которого может > не быть, а событие есть всегда), то есть информация о > случившемся. Любое сообщение - событие. Таким образом, > множество сообщений - подмножество множества событий, и > если ты пишешь > мегаглобальныйкласскоторыйзнаетобовсёмвсегдаисамбляаещёисам > всёделает, то тогда включи в его название слово Event. Если > ты обрабатываешь поток сообщений о событиях, произошедших > где-то, то это msgmgr
Вооооттт... добираемся до сути вопроса :)
Любое событе уже несет в себе информацию о том, что же оно такое!
А если оно в себе содержит информацию - то это уже сообщение.
И если, цитирую, "Любое сообщение - событие.", а любое событие, как я сказал - несет в себе информацию о том что произошло, т.е. любое событие - это сообщение, то в чем же тогда между ними разница ? (пони бегает по кругу :) )
|
<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
|
|
|
|