Название: FSM и HSM ? Отправлено: Денис от Ноябрь 19, 2014, 11:20 Недавно открывал тему про паттерн HSM (Hierarhical State Machine).
Так вот тема заинтересовала и мне интересно есть ли у кого-то примеры хорошо реализованных паттернов FSM (Finite State Machine) и HSM на Си и C++ ? Можно и самому реализовать, но интересно посмотреть действительно стоящие примеры, и примеры которые стали стандартом дефакто ? Название: Re: FSM и HSM ? Отправлено: Akon от Ноябрь 19, 2014, 18:27 Полагаю, стоит посмотреть реализацию из буста.
PS. Я ее не видел. Название: Re: FSM и HSM ? Отправлено: Денис от Ноябрь 19, 2014, 23:17 Полагаю, стоит посмотреть реализацию из буста. PS. Я ее не видел. А серьезно, кто-то программирует в стиле конечных автоматов ? Есть ли у кого-то интересные ссылки ? Название: Re: FSM и HSM ? Отправлено: Akon от Ноябрь 20, 2014, 08:04 А что значит "стиле конечных автоматов"? Полагаю, машина состояний как отдельный класс должна использоваться, когда возможны несколько таких машин для класса (паттерн "Стратегия"). Ну или более общно - когда логика смены состояний должна быть инкапсулирована в отдельный класс по каким-либо причинам.
Название: Re: FSM и HSM ? Отправлено: vulko от Ноябрь 20, 2014, 09:52 В прикладных задачах чаще всего нет смысла использовать конечные автоматы.
Название: Re: FSM и HSM ? Отправлено: Old от Ноябрь 20, 2014, 10:07 В прикладных задачах чаще всего нет смысла использовать конечные автоматы. Странное заявление. А какое смысл вы вкладываете в "прикладные задачи"?Конечные автоматы замечательно описывают автоматические системы (которые должны работать сами и принимать решения на основании происходящих событий), не говоря уже о всяких протоколах. Позволяют легко их расширять (событиями и состояниями) без риска развалить весь комплекс, а когда состояний очень много (сотни, тысячи), то это наверное единственный способ описать такую систему, что бы она вообще заработала. Название: Re: FSM и HSM ? Отправлено: vulko от Ноябрь 20, 2014, 12:48 В прикладных задачах чаще всего нет смысла использовать конечные автоматы. Странное заявление. А какое смысл вы вкладываете в "прикладные задачи"?Конечные автоматы замечательно описывают автоматические системы (которые должны работать сами и принимать решения на основании происходящих событий), не говоря уже о всяких протоколах. Позволяют легко их расширять (событиями и состояниями) без риска развалить весь комплекс, а когда состояний очень много (сотни, тысячи), то это наверное единственный способ описать такую систему, что бы она вообще заработала. И каков процент таких задач? Ну например, есть состояния у виджета. В зависимости от состояния, layout меняется например. Для такой задачи мне нужен конечный автомат? Да, для автоматических систем они чудесно подходят. Но это все часто низкоуровневое программирование, близкое к железу. Ну ещё игры, пожалуй. Это не странный комментарий, это просто ответ на Цитировать А серьезно, кто-то программирует в стиле конечных автоматов ? Есть ли у кого-то интересные ссылки ? Название: Re: FSM и HSM ? Отправлено: Old от Ноябрь 20, 2014, 13:32 И каков процент таких задач? Ну например, есть состояния у виджета. В зависимости от состояния, layout меняется например. Ну я бы это задачей не назвал. Поэтому, мое мнение: для такой ерунды конечные автоматы не нужны.Для такой задачи мне нужен конечный автомат? Это не странный комментарий, это просто ответ на Вы отвечаете за всю отрасль?Не надо, у нас уже есть такой специалист. :) Название: Re: FSM и HSM ? Отправлено: vulko от Ноябрь 20, 2014, 15:15 И каков процент таких задач? Ну например, есть состояния у виджета. В зависимости от состояния, layout меняется например. Ну я бы это задачей не назвал. Поэтому, мое мнение: для такой ерунды конечные автоматы не нужны.Для такой задачи мне нужен конечный автомат? Это не странный комментарий, это просто ответ на Вы отвечаете за всю отрасль?Не надо, у нас уже есть такой специалист. :) Почему за всю отрасль? Мне вот за 6 лет работы ниразу не повстречались конечные автоматы. Видел реализации стейт машин, но все это было очень упрощенно, в сравнении с универсальной реализацией той же HSM. Я не отрицаю что где-то они нужны. Но таких областей не так уж много. Название: Re: FSM и HSM ? Отправлено: Денис от Ноябрь 20, 2014, 19:42 И каков процент таких задач? Ну например, есть состояния у виджета. В зависимости от состояния, layout меняется например. Ну я бы это задачей не назвал. Поэтому, мое мнение: для такой ерунды конечные автоматы не нужны.Для такой задачи мне нужен конечный автомат? Это не странный комментарий, это просто ответ на Вы отвечаете за всю отрасль?Не надо, у нас уже есть такой специалист. :) Почему за всю отрасль? Мне вот за 6 лет работы ниразу не повстречались конечные автоматы. Видел реализации стейт машин, но все это было очень упрощенно, в сравнении с универсальной реализацией той же HSM. Я не отрицаю что где-то они нужны. Но таких областей не так уж много. Боже мой ... отошли от сути вопроса !!! Я спрашивал есть ли у кого-то стоящие примеры конечных автоматов, а не нужны ли они ) И естественно конкретно для определенных задач подходит программирование в стиле конечных автоматов, кое-где его и не надо использовать ... Но вопрос топика не о это ... Ссылки в студию !!!!!!!!! ) ;D Для задачи с малым количество сообщений конечные автоматы не нужны, а вот где сообщения зашкаливают, в частности системы искусственного интеллекта, там без них не обойтись, бо придет тебе сообщение в такой системе заранее неизвестное и как программа будет себя вести ? Во общем хотелось бы увидеть интересные ссылки на темы и паттерны посвященные такому программированию !? Название: Re: FSM и HSM ? Отправлено: Old от Ноябрь 20, 2014, 20:01 Ссылки в студию !!!!!!!!! ) ;D А какие ссылки вы ждете? :) Две реализации State Machine есть в бусте, еще одна в Qt. Примеры использования есть в их документациях. Название: Re: FSM и HSM ? Отправлено: vulko от Ноябрь 20, 2014, 20:21 И каков процент таких задач? Ну например, есть состояния у виджета. В зависимости от состояния, layout меняется например. Ну я бы это задачей не назвал. Поэтому, мое мнение: для такой ерунды конечные автоматы не нужны.Для такой задачи мне нужен конечный автомат? Это не странный комментарий, это просто ответ на Вы отвечаете за всю отрасль?Не надо, у нас уже есть такой специалист. :) Почему за всю отрасль? Мне вот за 6 лет работы ниразу не повстречались конечные автоматы. Видел реализации стейт машин, но все это было очень упрощенно, в сравнении с универсальной реализацией той же HSM. Я не отрицаю что где-то они нужны. Но таких областей не так уж много. Боже мой ... отошли от сути вопроса !!! Я спрашивал есть ли у кого-то стоящие примеры конечных автоматов, а не нужны ли они ) И естественно конкретно для определенных задач подходит программирование в стиле конечных автоматов, кое-где его и не надо использовать ... Но вопрос топика не о это ... Ссылки в студию !!!!!!!!! ) ;D Для задачи с малым количество сообщений конечные автоматы не нужны, а вот где сообщения зашкаливают, в частности системы искусственного интеллекта, там без них не обойтись, бо придет тебе сообщение в такой системе заранее неизвестное и как программа будет себя вести ? Во общем хотелось бы увидеть интересные ссылки на темы и паттерны посвященные такому программированию !? В state machine нет ничего сложного, чтобы изучать ссылки, паттерны и т.п. 10 минут можно потратить на создание своей имплементации, вместо того чтобы искать готовую. На чистом С имплементация была в соседней теме где ты спрашивал про hsm. Но там конечно криво спроектированно имхо. Возьми идею за основу, накидай свой код поверх. Ты больше времени потратишь на гугл и осмысление названий и логики работы, чем если напишешь сам. Название: Re: FSM и HSM ? Отправлено: Денис от Ноябрь 20, 2014, 23:36 И каков процент таких задач? Ну например, есть состояния у виджета. В зависимости от состояния, layout меняется например. Ну я бы это задачей не назвал. Поэтому, мое мнение: для такой ерунды конечные автоматы не нужны.Для такой задачи мне нужен конечный автомат? Это не странный комментарий, это просто ответ на Вы отвечаете за всю отрасль?Не надо, у нас уже есть такой специалист. :) Почему за всю отрасль? Мне вот за 6 лет работы ниразу не повстречались конечные автоматы. Видел реализации стейт машин, но все это было очень упрощенно, в сравнении с универсальной реализацией той же HSM. Я не отрицаю что где-то они нужны. Но таких областей не так уж много. Боже мой ... отошли от сути вопроса !!! Я спрашивал есть ли у кого-то стоящие примеры конечных автоматов, а не нужны ли они ) И естественно конкретно для определенных задач подходит программирование в стиле конечных автоматов, кое-где его и не надо использовать ... Но вопрос топика не о это ... Ссылки в студию !!!!!!!!! ) ;D Для задачи с малым количество сообщений конечные автоматы не нужны, а вот где сообщения зашкаливают, в частности системы искусственного интеллекта, там без них не обойтись, бо придет тебе сообщение в такой системе заранее неизвестное и как программа будет себя вести ? Во общем хотелось бы увидеть интересные ссылки на темы и паттерны посвященные такому программированию !? В state machine нет ничего сложного, чтобы изучать ссылки, паттерны и т.п. 10 минут можно потратить на создание своей имплементации, вместо того чтобы искать готовую. На чистом С имплементация была в соседней теме где ты спрашивал про hsm. Но там конечно криво спроектированно имхо. Возьми идею за основу, накидай свой код поверх. Ты больше времени потратишь на гугл и осмысление названий и логики работы, чем если напишешь сам. Ну я также думал, а потом наткнулся на паттерн от Quantum Leaps и подумал нету ли чего-то еще похожего как и их библиотека State Machine ? Посмотрите какие фирмы пользуются их наработками в стиле конечных автоматов и обомлеете ... даже разработчики Qt Framework-а не брезгают прибегать к их решениям ... Название: Re: FSM и HSM ? Отправлено: m_ax от Ноябрь 20, 2014, 23:53 Цитировать Ну я также думал, а потом наткнулся на паттерн от Quantum Leaps и подумал нету ли чего-то еще похожего как и их библиотека State Machine ? Ну так посмотрите на реализацию в boost'е.. Boost всёже далеко не глупыми людьми разрабатывался.. И вообще, считаю, что нужно стремиться к этой философии заложенной там (в boost'е).. Во всяком случае, мне приходилось писать под себя нечто, аналогичное (что есть в boost'е), лишь в очень-очень специфических задачах и то это па пальцам пересчитать.. Посмотрите какие фирмы пользуются их наработками в стиле конечных автоматов и обомлеете ... даже разработчики Qt Framework-а не брезгают прибегать к их решениям . Мораль в итоге такова: Прежде чем изобретать свой велосипед (как рекомендуют тут асы 80 уровня) посмотрите на то, как это реализовано у тех, кто реально заслуживает авторитета и уже потом, если в чём то объективно не согласны, создавайте своё, бессмертное) Всё же, повторюсь, boost далеко не дураки писали.. Посмотрите как там, а потом уже делайте выводы) Надо оно вам али нет..) Название: Re: FSM и HSM ? Отправлено: vulko от Ноябрь 21, 2014, 09:14 Цитировать Ну я также думал, а потом наткнулся на паттерн от Quantum Leaps и подумал нету ли чего-то еще похожего как и их библиотека State Machine ? Ну так посмотрите на реализацию в boost'е.. Boost всёже далеко не глупыми людьми разрабатывался.. И вообще, считаю, что нужно стремиться к этой философии заложенной там (в boost'е).. Во всяком случае, мне приходилось писать под себя нечто, аналогичное (что есть в boost'е), лишь в очень-очень специфических задачах и то это па пальцам пересчитать.. Посмотрите какие фирмы пользуются их наработками в стиле конечных автоматов и обомлеете ... даже разработчики Qt Framework-а не брезгают прибегать к их решениям . Мораль в итоге такова: Прежде чем изобретать свой велосипед (как рекомендуют тут асы 80 уровня) посмотрите на то, как это реализовано у тех, кто реально заслуживает авторитета и уже потом, если в чём то объективно не согласны, создавайте своё, бессмертное) Всё же, повторюсь, boost далеко не дураки писали.. Посмотрите как там, а потом уже делайте выводы) Надо оно вам али нет..) максимка, опять очки не протер?)) где я предложил изобрести свой велосипед?) Цитировать Возьми идею за основу, накидай свой код поверх. |