Автор Тема: [Oberon rev 2013] CASE  (Прочитано 16204 раз)

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: [Oberon rev 2013] CASE
« Ответ #30 : Декабрь 02, 2013, 03:36:05 pm »
Пример:
if msg = m1 then
   do1();
elif msg = m2 then
   do2();
else
   do3();
end;
Даем конструкции новую мессагу m4 и приехали... Кот работает как ни в чем не бывало. И только по побочным эффектам от багов можно будет догадаться, что забыл добавить обработку этой новой мессаги.

Обероновская шина сообщений по такому принципу и работает -- кто понял сообщение, то его принял и обработал, а кто не понял -- игнорирует. А иначе при добавлении каждого нового сообщения придётся переделывать, а затем и перекомпилировать все модули, использующие эту шину сообщений, а это противоречит самим принципам оберон-систем...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: [Oberon rev 2013] CASE
« Ответ #31 : Декабрь 02, 2013, 05:09:35 pm »
Что за "Обероновская шина сообщений"?

Есть конкретные практические задачи в которых обработчик сообщений обязан знать все типы сообщений. В таких задачах нужен HALT.
И есть, да, другие задачи где обработчик должен знать только часть типов, а остальные пропускать дальше по шине. Вот на этот случай нужен ELSE, т.е. мы явно указываем поведение обработчика.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: [Oberon rev 2013] CASE
« Ответ #32 : Декабрь 02, 2013, 05:21:53 pm »
Что за "Обероновская шина сообщений"?

"generic message bus" же
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: [Oberon rev 2013] CASE
« Ответ #33 : Декабрь 02, 2013, 05:26:12 pm »
"message bus" оно и в Африке "message bus"
"generic" или не "generic" - в данном случае значения не имеет.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: [Oberon rev 2013] CASE
« Ответ #34 : Декабрь 02, 2013, 05:36:21 pm »
Есть конкретные практические задачи в которых обработчик сообщений обязан знать все типы сообщений. В таких задачах нужен HALT.

Нет у Вирта таких задач. Вопрос закрыт :)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: [Oberon rev 2013] CASE
« Ответ #35 : Декабрь 02, 2013, 05:42:00 pm »
Видимо да.  :D