Странный вопрос
От: dmitryalexeeff  
Дата: 20.02.12 02:13
Оценка:
Какая разница между "автоматным программированием" и "событийно-ориентированным" ?

20.02.12 13:29: Перенесено модератором из 'Компьютерные священные войны' — WolfHound
Re: Странный вопрос
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 20.02.12 06:14
Оценка:
Здравствуйте, dmitryalexeeff, Вы писали:

D>Какая разница между "автоматным программированием" и "событийно-ориентированным" ?


Ну я понимаю так, что второе — это специфика реакции на внешние события, а первое — стиль внутренней организации. Первое обычно используется для второго, но не всегда.
Например, тупой светофор устроен как автомат, но не реагирует на внешние события.
С другой стороны, можно писать в стиле "вот сейчас мы до 3 секунд ждём события X2, Y4 или RHFGER и дальше действуем по тому, что пришло, а остальное нас сейчас не волнует", оно будет в каком-то смысле событийно-ориентированным, но не автоматным.

Как пример — в Erlang'овском OTP рекомендуется строить процессы событийно-управляемыми автоматами, но есть заметное исключение в виде gen_call — синхронный запрос другому процессу. До получения ответа, ошибки связи или таймаута процесс-клиент ни на что другое не реагирует, хотя ответы он так же получает через входную очередь, как и другие события. Если это не устраивает, то или gen_call дёргается из вспомогательного процесса, или вообще используется другой механизм связи (посылка тегированного запроса и внутреннее ожидание ответа параллельно с другими делами).

P.S. Форум неуместен, это скорее для философии. Повешу бомбочку на перенос.
The God is real, unless declared integer.
Re: Странный вопрос
От: _Obelisk_ Россия http://www.ibm.com
Дата: 20.02.12 17:31
Оценка:
Здравствуйте, dmitryalexeeff, Вы писали:

D>Какая разница между "автоматным программированием" и "событийно-ориентированным" ?


Событийно-ориентированное не обязательно построено на автоматах. Тоже классическое программирование под Win32 — событийно-ориентированное, но никто не заставляет реализовывать автомат.



Душа обязана трудиться! (с) Н.Заболоцкий.
Re: Странный вопрос
От: abibok  
Дата: 22.02.12 00:37
Оценка:
D>Какая разница между "автоматным программированием" и "событийно-ориентированным" ?

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

Любая автоматная система может быть переделана в событийную и наоборот. В этом смысле они эквивалентны.
Re: Странный вопрос
От: dmitryalexeeff  
Дата: 27.02.12 09:10
Оценка:
Здравствуйте, dmitryalexeeff, Вы писали:

D>Какая разница между "автоматным программированием" и "событийно-ориентированным" ?


Спасибо.Короче, резюмирую:
1. Автоматное программирование не является не надмножеством ни подмножеством событийного программирования. Суть автоматного программирования в том что у программы есть конечное число состояний, и она всегда гарантировано пребывает в одном из них. Переключение состояний может происходить как из-за внешних событий, так и по внутренним причинам.
2. Событийно-ориентированое программирование подразумевает что последовательность выполнения программы определяется исходя из внешних событий.
Re[2]: Странный вопрос
От: batu Украина  
Дата: 27.02.12 10:16
Оценка: 1 (1) +1
Здравствуйте, dmitryalexeeff, Вы писали:

D>Здравствуйте, dmitryalexeeff, Вы писали:


D>>Какая разница между "автоматным программированием" и "событийно-ориентированным" ?


D>Спасибо.Короче, резюмирую:

D>1. Автоматное программирование не является не надмножеством ни подмножеством событийного программирования. Суть автоматного программирования в том что у программы есть конечное число состояний, и она всегда гарантировано пребывает в одном из них. Переключение состояний может происходить как из-за внешних событий, так и по внутренним причинам.
Я бы уточнил.. Если речь идет о программировании, то наверное идет речь о разных концепциях. С этой точки зрения работа автомата понимается как последовательное (во времени) выполнение команд. Т.е. в вычислитель последовательно попадают команды и выполняются. Событийная концепция предполагает независимое от времени возниконвение событий (или данных), которые запускают выполнение. Т.е. в процессор попадают данные, а не команды. Т.е. видим два отличия от автомата.
1. Независимость от времени.
2. На выполнение подаются данные, а не ккоманды.

В 80-х годаж японцы собирались открыть новое поколение машин управляемых потоком данных. Это самое оно и эта концепция лучше отражает реальность. Однако, такую машину очень не столь трудно реализовать, сколько трудно программировать. Мозги человека не заточены на параллельное мышление. Потому, как я понимаю, событийно-ориентированное программирование частично решает проблему программирования машин управляемых потоком данных. Из сего следует что автоматное программирование это подмножество событийно-ориентированного. В вырожденном случае автомат можно считать событийной машиной где только один вид события-поступление команды для выполнения да и то последовательное.

D>2. Событийно-ориентированое программирование подразумевает что последовательность выполнения программы определяется исходя из внешних событий.

Можно и так сказать, но хотел акцентировать только то, что события первичны и объективно реальны.. Ну, как вы и сказали потому и внешние..

И в развитие темы в своем языке расширил классическое определение события условием. Это позволяет проверять его независимо (в смысле параллельно) и реализовать даже аппаратно, не прерывая работу текущей программы. Да и на нескольких процессорах можно эффективней реализовать работу.
Re[3]: Странный вопрос
От: B0FEE664  
Дата: 27.02.12 15:00
Оценка:
Здравствуйте, batu, Вы писали:

B>В 80-х годаж японцы собирались открыть новое поколение машин управляемых потоком данных. Это самое оно и эта концепция лучше отражает реальность. Однако, такую машину очень не столь трудно реализовать, сколько трудно программировать. Мозги человека не заточены на параллельное мышление. Потому, как я понимаю, событийно-ориентированное программирование частично решает проблему программирования машин управляемых потоком данных. Из сего следует что автоматное программирование это подмножество событийно-ориентированного. В вырожденном случае автомат можно считать событийной машиной где только один вид события-поступление команды для выполнения да и то последовательное.


Интересно. А в чём состоит "проблема программирования машин управляемых потоком данных"? И что понимается под программированием таких машин?
И каждый день — без права на ошибку...
Re[4]: Странный вопрос
От: batu Украина  
Дата: 27.02.12 15:38
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Здравствуйте, batu, Вы писали:


B>>В 80-х годаж японцы собирались открыть новое поколение машин управляемых потоком данных. Это самое оно и эта концепция лучше отражает реальность. Однако, такую машину очень не столь трудно реализовать, сколько трудно программировать. Мозги человека не заточены на параллельное мышление. Потому, как я понимаю, событийно-ориентированное программирование частично решает проблему программирования машин управляемых потоком данных. Из сего следует что автоматное программирование это подмножество событийно-ориентированного. В вырожденном случае автомат можно считать событийной машиной где только один вид события-поступление команды для выполнения да и то последовательное.


BFE>Интересно. А в чём состоит "проблема программирования машин управляемых потоком данных"? И что понимается под программированием таких машин?

Это к японцам.. Сделали они ее или нет.. и как ее программировали информации не имею. Но по тем годам (это 80-е) ООП еще не пахло и событий тем более еще не было. Так что развернуто не могу ответить на этот вопрос. А не развернуто вы и сами прикиньте.. С нынешнего опыта это выглядет проще.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.