Russian Qt Forum
Апрель 19, 2024, 06:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: FSM и HSM ?  (Прочитано 7464 раз)
Денис
Гость
« : Ноябрь 19, 2014, 11:20 »

Недавно открывал тему про паттерн HSM (Hierarhical State Machine).
Так вот тема заинтересовала и мне интересно есть ли у кого-то примеры хорошо реализованных паттернов FSM (Finite State Machine) и HSM на Си и C++ ?
Можно и самому реализовать, но интересно посмотреть действительно стоящие примеры, и примеры которые стали стандартом дефакто ?
Записан
Akon
Гость
« Ответ #1 : Ноябрь 19, 2014, 18:27 »

Полагаю, стоит посмотреть реализацию из буста.

PS.
Я ее не видел.
Записан
Денис
Гость
« Ответ #2 : Ноябрь 19, 2014, 23:17 »

Полагаю, стоит посмотреть реализацию из буста.

PS.
Я ее не видел.

А серьезно, кто-то программирует в стиле конечных автоматов ? Есть ли у кого-то интересные ссылки ?
Записан
Akon
Гость
« Ответ #3 : Ноябрь 20, 2014, 08:04 »

А что значит "стиле конечных автоматов"? Полагаю, машина состояний как отдельный класс должна использоваться, когда возможны несколько таких машин для класса (паттерн "Стратегия"). Ну или более общно - когда логика смены состояний должна быть инкапсулирована в отдельный класс по каким-либо причинам.
Записан
vulko
Гость
« Ответ #4 : Ноябрь 20, 2014, 09:52 »

В прикладных задачах чаще всего нет смысла использовать конечные автоматы.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #5 : Ноябрь 20, 2014, 10:07 »

В прикладных задачах чаще всего нет смысла использовать конечные автоматы.
Странное заявление. А какое смысл вы вкладываете в "прикладные задачи"?
Конечные автоматы замечательно описывают автоматические системы (которые должны работать сами и принимать решения на основании происходящих событий), не говоря уже о всяких протоколах. Позволяют легко их расширять (событиями и состояниями) без риска развалить весь комплекс, а когда состояний очень много (сотни, тысячи), то это наверное единственный способ описать такую систему, что бы она вообще заработала.
Записан
vulko
Гость
« Ответ #6 : Ноябрь 20, 2014, 12:48 »

В прикладных задачах чаще всего нет смысла использовать конечные автоматы.
Странное заявление. А какое смысл вы вкладываете в "прикладные задачи"?
Конечные автоматы замечательно описывают автоматические системы (которые должны работать сами и принимать решения на основании происходящих событий), не говоря уже о всяких протоколах. Позволяют легко их расширять (событиями и состояниями) без риска развалить весь комплекс, а когда состояний очень много (сотни, тысячи), то это наверное единственный способ описать такую систему, что бы она вообще заработала.

И каков процент таких задач? Ну например, есть состояния у виджета. В зависимости от состояния, layout меняется например.
Для такой задачи мне нужен конечный автомат?

Да, для автоматических систем они чудесно подходят. Но это все часто низкоуровневое программирование, близкое к железу. Ну ещё игры, пожалуй.


Это не странный комментарий, это просто ответ на
Цитировать
А серьезно, кто-то программирует в стиле конечных автоматов ? Есть ли у кого-то интересные ссылки ?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #7 : Ноябрь 20, 2014, 13:32 »

И каков процент таких задач? Ну например, есть состояния у виджета. В зависимости от состояния, layout меняется например.
Для такой задачи мне нужен конечный автомат?
Ну я бы это задачей не назвал. Поэтому, мое мнение: для такой ерунды конечные автоматы не нужны.

Это не странный комментарий, это просто ответ на
Вы отвечаете за всю отрасль?
Не надо, у нас уже есть такой специалист. Улыбающийся
« Последнее редактирование: Ноябрь 20, 2014, 14:25 от Old » Записан
vulko
Гость
« Ответ #8 : Ноябрь 20, 2014, 15:15 »

И каков процент таких задач? Ну например, есть состояния у виджета. В зависимости от состояния, layout меняется например.
Для такой задачи мне нужен конечный автомат?
Ну я бы это задачей не назвал. Поэтому, мое мнение: для такой ерунды конечные автоматы не нужны.

Это не странный комментарий, это просто ответ на
Вы отвечаете за всю отрасль?
Не надо, у нас уже есть такой специалист. Улыбающийся

Почему за всю отрасль?
Мне вот за 6 лет работы ниразу не повстречались конечные автоматы. Видел реализации стейт машин, но все это было очень упрощенно, в сравнении с универсальной реализацией той же HSM.
Я не отрицаю что где-то они нужны. Но таких областей не так уж много.
Записан
Денис
Гость
« Ответ #9 : Ноябрь 20, 2014, 19:42 »

И каков процент таких задач? Ну например, есть состояния у виджета. В зависимости от состояния, layout меняется например.
Для такой задачи мне нужен конечный автомат?
Ну я бы это задачей не назвал. Поэтому, мое мнение: для такой ерунды конечные автоматы не нужны.

Это не странный комментарий, это просто ответ на
Вы отвечаете за всю отрасль?
Не надо, у нас уже есть такой специалист. Улыбающийся

Почему за всю отрасль?
Мне вот за 6 лет работы ниразу не повстречались конечные автоматы. Видел реализации стейт машин, но все это было очень упрощенно, в сравнении с универсальной реализацией той же HSM.
Я не отрицаю что где-то они нужны. Но таких областей не так уж много.

Боже мой ... отошли от сути вопроса !!!
Я спрашивал есть ли у кого-то стоящие примеры конечных автоматов, а не нужны ли они )
И естественно конкретно для определенных задач подходит программирование в стиле конечных автоматов, кое-где его и не надо использовать ... Но вопрос топика не о это ... Ссылки в студию !!!!!!!!! )  Смеющийся
Для задачи с малым количество сообщений конечные автоматы не нужны, а вот где сообщения зашкаливают, в частности системы искусственного интеллекта, там без них не обойтись, бо придет тебе сообщение в такой системе заранее неизвестное и как программа будет себя вести ?
Во общем хотелось бы увидеть интересные ссылки на темы и паттерны посвященные такому программированию !?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #10 : Ноябрь 20, 2014, 20:01 »

Ссылки в студию !!!!!!!!! )  Смеющийся
А какие ссылки вы ждете? Улыбающийся
Две реализации State Machine есть в бусте, еще одна в Qt. Примеры использования есть в их документациях.
Записан
vulko
Гость
« Ответ #11 : Ноябрь 20, 2014, 20:21 »

И каков процент таких задач? Ну например, есть состояния у виджета. В зависимости от состояния, layout меняется например.
Для такой задачи мне нужен конечный автомат?
Ну я бы это задачей не назвал. Поэтому, мое мнение: для такой ерунды конечные автоматы не нужны.

Это не странный комментарий, это просто ответ на
Вы отвечаете за всю отрасль?
Не надо, у нас уже есть такой специалист. Улыбающийся

Почему за всю отрасль?
Мне вот за 6 лет работы ниразу не повстречались конечные автоматы. Видел реализации стейт машин, но все это было очень упрощенно, в сравнении с универсальной реализацией той же HSM.
Я не отрицаю что где-то они нужны. Но таких областей не так уж много.

Боже мой ... отошли от сути вопроса !!!
Я спрашивал есть ли у кого-то стоящие примеры конечных автоматов, а не нужны ли они )
И естественно конкретно для определенных задач подходит программирование в стиле конечных автоматов, кое-где его и не надо использовать ... Но вопрос топика не о это ... Ссылки в студию !!!!!!!!! )  Смеющийся
Для задачи с малым количество сообщений конечные автоматы не нужны, а вот где сообщения зашкаливают, в частности системы искусственного интеллекта, там без них не обойтись, бо придет тебе сообщение в такой системе заранее неизвестное и как программа будет себя вести ?
Во общем хотелось бы увидеть интересные ссылки на темы и паттерны посвященные такому программированию !?

В state machine нет ничего сложного, чтобы изучать ссылки, паттерны и т.п.
10 минут можно потратить на создание своей имплементации, вместо того чтобы искать готовую.
На чистом С имплементация была в соседней теме где ты спрашивал про hsm.
Но там конечно криво спроектированно имхо. Возьми идею за основу, накидай свой код поверх.

Ты больше времени потратишь на гугл и осмысление названий и логики работы, чем если напишешь сам.
Записан
Денис
Гость
« Ответ #12 : Ноябрь 20, 2014, 23:36 »

И каков процент таких задач? Ну например, есть состояния у виджета. В зависимости от состояния, layout меняется например.
Для такой задачи мне нужен конечный автомат?
Ну я бы это задачей не назвал. Поэтому, мое мнение: для такой ерунды конечные автоматы не нужны.

Это не странный комментарий, это просто ответ на
Вы отвечаете за всю отрасль?
Не надо, у нас уже есть такой специалист. Улыбающийся

Почему за всю отрасль?
Мне вот за 6 лет работы ниразу не повстречались конечные автоматы. Видел реализации стейт машин, но все это было очень упрощенно, в сравнении с универсальной реализацией той же HSM.
Я не отрицаю что где-то они нужны. Но таких областей не так уж много.

Боже мой ... отошли от сути вопроса !!!
Я спрашивал есть ли у кого-то стоящие примеры конечных автоматов, а не нужны ли они )
И естественно конкретно для определенных задач подходит программирование в стиле конечных автоматов, кое-где его и не надо использовать ... Но вопрос топика не о это ... Ссылки в студию !!!!!!!!! )  Смеющийся
Для задачи с малым количество сообщений конечные автоматы не нужны, а вот где сообщения зашкаливают, в частности системы искусственного интеллекта, там без них не обойтись, бо придет тебе сообщение в такой системе заранее неизвестное и как программа будет себя вести ?
Во общем хотелось бы увидеть интересные ссылки на темы и паттерны посвященные такому программированию !?

В state machine нет ничего сложного, чтобы изучать ссылки, паттерны и т.п.
10 минут можно потратить на создание своей имплементации, вместо того чтобы искать готовую.
На чистом С имплементация была в соседней теме где ты спрашивал про hsm.
Но там конечно криво спроектированно имхо. Возьми идею за основу, накидай свой код поверх.

Ты больше времени потратишь на гугл и осмысление названий и логики работы, чем если напишешь сам.

Ну я также думал, а потом наткнулся на паттерн от Quantum Leaps и подумал нету ли чего-то еще похожего как и их библиотека State Machine ?
Посмотрите какие фирмы пользуются их наработками в стиле конечных автоматов и обомлеете ... даже разработчики Qt Framework-а не брезгают прибегать к их решениям ...
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #13 : Ноябрь 20, 2014, 23:53 »

Цитировать
Ну я также думал, а потом наткнулся на паттерн от Quantum Leaps и подумал нету ли чего-то еще похожего как и их библиотека State Machine ?
Посмотрите какие фирмы пользуются их наработками в стиле конечных автоматов и обомлеете ... даже разработчики Qt Framework-а не брезгают прибегать к их решениям .
Ну так посмотрите на реализацию в boost'е.. Boost всёже далеко не глупыми людьми разрабатывался.. И вообще, считаю, что нужно стремиться к этой философии заложенной там (в boost'е).. Во всяком случае, мне приходилось писать под себя нечто, аналогичное (что есть в boost'е),  лишь в очень-очень специфических задачах и то это па пальцам пересчитать..
Мораль в итоге такова:
Прежде чем изобретать свой велосипед (как рекомендуют тут асы 80 уровня) посмотрите на то, как это реализовано у тех, кто реально заслуживает авторитета  и уже потом, если в чём то объективно не согласны, создавайте своё, бессмертное)
Всё же, повторюсь,  boost далеко  не дураки писали..

Посмотрите как там, а потом уже делайте выводы) Надо оно вам али нет..)
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
vulko
Гость
« Ответ #14 : Ноябрь 21, 2014, 09:14 »

Цитировать
Ну я также думал, а потом наткнулся на паттерн от Quantum Leaps и подумал нету ли чего-то еще похожего как и их библиотека State Machine ?
Посмотрите какие фирмы пользуются их наработками в стиле конечных автоматов и обомлеете ... даже разработчики Qt Framework-а не брезгают прибегать к их решениям .
Ну так посмотрите на реализацию в boost'е.. Boost всёже далеко не глупыми людьми разрабатывался.. И вообще, считаю, что нужно стремиться к этой философии заложенной там (в boost'е).. Во всяком случае, мне приходилось писать под себя нечто, аналогичное (что есть в boost'е),  лишь в очень-очень специфических задачах и то это па пальцам пересчитать..
Мораль в итоге такова:
Прежде чем изобретать свой велосипед (как рекомендуют тут асы 80 уровня) посмотрите на то, как это реализовано у тех, кто реально заслуживает авторитета  и уже потом, если в чём то объективно не согласны, создавайте своё, бессмертное)
Всё же, повторюсь,  boost далеко  не дураки писали..

Посмотрите как там, а потом уже делайте выводы) Надо оно вам али нет..)


максимка, опять очки не протер?))

где я предложил изобрести свой велосипед?)
Цитировать
Возьми идею за основу, накидай свой код поверх.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.058 секунд. Запросов: 22.