Здравствуйте, dmitryalexeeff, Вы писали:
D>Какая разница между "автоматным программированием" и "событийно-ориентированным" ?
Ну я понимаю так, что второе — это специфика реакции на внешние события, а первое — стиль внутренней организации. Первое обычно используется для второго, но не всегда.
Например, тупой светофор устроен как автомат, но не реагирует на внешние события.
С другой стороны, можно писать в стиле "вот сейчас мы до 3 секунд ждём события X2, Y4 или RHFGER и дальше действуем по тому, что пришло, а остальное нас сейчас не волнует", оно будет в каком-то смысле событийно-ориентированным, но не автоматным.
Как пример — в Erlang'овском OTP рекомендуется строить процессы событийно-управляемыми автоматами, но есть заметное исключение в виде gen_call — синхронный запрос другому процессу. До получения ответа, ошибки связи или таймаута процесс-клиент ни на что другое не реагирует, хотя ответы он так же получает через входную очередь, как и другие события. Если это не устраивает, то или gen_call дёргается из вспомогательного процесса, или вообще используется другой механизм связи (посылка тегированного запроса и внутреннее ожидание ответа параллельно с другими делами).
P.S. Форум неуместен, это скорее для философии. Повешу бомбочку на перенос.
Здравствуйте, dmitryalexeeff, Вы писали:
D>Какая разница между "автоматным программированием" и "событийно-ориентированным" ?
Событийно-ориентированное не обязательно построено на автоматах. Тоже классическое программирование под Win32 — событийно-ориентированное, но никто не заставляет реализовывать автомат.
D>Какая разница между "автоматным программированием" и "событийно-ориентированным" ?
В автоматном ключевой сущностью является текущее состояние. Действия (события) переводят автомат из одного состояния в другое.
В событийном главное — действие. Система находится в ожидании действий и в ответ на действие выполняет некоторый функционал.
Любая автоматная система может быть переделана в событийную и наоборот. В этом смысле они эквивалентны.
Здравствуйте, dmitryalexeeff, Вы писали:
D>Какая разница между "автоматным программированием" и "событийно-ориентированным" ?
Спасибо.Короче, резюмирую:
1. Автоматное программирование не является не надмножеством ни подмножеством событийного программирования. Суть автоматного программирования в том что у программы есть конечное число состояний, и она всегда гарантировано пребывает в одном из них. Переключение состояний может происходить как из-за внешних событий, так и по внутренним причинам.
2. Событийно-ориентированое программирование подразумевает что последовательность выполнения программы определяется исходя из внешних событий.
Здравствуйте, dmitryalexeeff, Вы писали:
D>Здравствуйте, dmitryalexeeff, Вы писали:
D>>Какая разница между "автоматным программированием" и "событийно-ориентированным" ?
D>Спасибо.Короче, резюмирую: D>1. Автоматное программирование не является не надмножеством ни подмножеством событийного программирования. Суть автоматного программирования в том что у программы есть конечное число состояний, и она всегда гарантировано пребывает в одном из них. Переключение состояний может происходить как из-за внешних событий, так и по внутренним причинам.
Я бы уточнил.. Если речь идет о программировании, то наверное идет речь о разных концепциях. С этой точки зрения работа автомата понимается как последовательное (во времени) выполнение команд. Т.е. в вычислитель последовательно попадают команды и выполняются. Событийная концепция предполагает независимое от времени возниконвение событий (или данных), которые запускают выполнение. Т.е. в процессор попадают данные, а не команды. Т.е. видим два отличия от автомата.
1. Независимость от времени.
2. На выполнение подаются данные, а не ккоманды.
В 80-х годаж японцы собирались открыть новое поколение машин управляемых потоком данных. Это самое оно и эта концепция лучше отражает реальность. Однако, такую машину очень не столь трудно реализовать, сколько трудно программировать. Мозги человека не заточены на параллельное мышление. Потому, как я понимаю, событийно-ориентированное программирование частично решает проблему программирования машин управляемых потоком данных. Из сего следует что автоматное программирование это подмножество событийно-ориентированного. В вырожденном случае автомат можно считать событийной машиной где только один вид события-поступление команды для выполнения да и то последовательное.
D>2. Событийно-ориентированое программирование подразумевает что последовательность выполнения программы определяется исходя из внешних событий.
Можно и так сказать, но хотел акцентировать только то, что события первичны и объективно реальны.. Ну, как вы и сказали потому и внешние..
И в развитие темы в своем языке расширил классическое определение события условием. Это позволяет проверять его независимо (в смысле параллельно) и реализовать даже аппаратно, не прерывая работу текущей программы. Да и на нескольких процессорах можно эффективней реализовать работу.
Здравствуйте, batu, Вы писали:
B>В 80-х годаж японцы собирались открыть новое поколение машин управляемых потоком данных. Это самое оно и эта концепция лучше отражает реальность. Однако, такую машину очень не столь трудно реализовать, сколько трудно программировать. Мозги человека не заточены на параллельное мышление. Потому, как я понимаю, событийно-ориентированное программирование частично решает проблему программирования машин управляемых потоком данных. Из сего следует что автоматное программирование это подмножество событийно-ориентированного. В вырожденном случае автомат можно считать событийной машиной где только один вид события-поступление команды для выполнения да и то последовательное.
Интересно. А в чём состоит "проблема программирования машин управляемых потоком данных"? И что понимается под программированием таких машин?
Здравствуйте, B0FEE664, Вы писали:
BFE>Здравствуйте, batu, Вы писали:
B>>В 80-х годаж японцы собирались открыть новое поколение машин управляемых потоком данных. Это самое оно и эта концепция лучше отражает реальность. Однако, такую машину очень не столь трудно реализовать, сколько трудно программировать. Мозги человека не заточены на параллельное мышление. Потому, как я понимаю, событийно-ориентированное программирование частично решает проблему программирования машин управляемых потоком данных. Из сего следует что автоматное программирование это подмножество событийно-ориентированного. В вырожденном случае автомат можно считать событийной машиной где только один вид события-поступление команды для выполнения да и то последовательное.
BFE>Интересно. А в чём состоит "проблема программирования машин управляемых потоком данных"? И что понимается под программированием таких машин?
Это к японцам.. Сделали они ее или нет.. и как ее программировали информации не имею. Но по тем годам (это 80-е) ООП еще не пахло и событий тем более еще не было. Так что развернуто не могу ответить на этот вопрос. А не развернуто вы и сами прикиньте.. С нынешнего опыта это выглядет проще.