Russian Qt Forum
Ноябрь 23, 2024, 03:57
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
С/C++
>
FSM и HSM ?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: FSM и HSM ? (Прочитано 7902 раз)
Денис
Гость
FSM и HSM ?
«
:
Ноябрь 19, 2014, 11:20 »
Недавно открывал тему про паттерн
HSM
(
Hierarhical State Machine
).
Так вот тема заинтересовала и мне интересно есть ли у кого-то примеры хорошо реализованных паттернов
FSM
(
Finite State Machine
) и
HSM
на
Си
и
C++
?
Можно и самому реализовать, но интересно посмотреть действительно стоящие примеры, и примеры которые стали стандартом дефакто ?
Записан
Akon
Гость
Re: FSM и HSM ?
«
Ответ #1 :
Ноябрь 19, 2014, 18:27 »
Полагаю, стоит посмотреть реализацию из буста.
PS.
Я ее не видел.
Записан
Денис
Гость
Re: FSM и HSM ?
«
Ответ #2 :
Ноябрь 19, 2014, 23:17 »
Цитата: Akon от Ноябрь 19, 2014, 18:27
Полагаю, стоит посмотреть реализацию из буста.
PS.
Я ее не видел.
А серьезно, кто-то программирует в стиле конечных автоматов ? Есть ли у кого-то интересные ссылки ?
Записан
Akon
Гость
Re: FSM и HSM ?
«
Ответ #3 :
Ноябрь 20, 2014, 08:04 »
А что значит "стиле конечных автоматов"? Полагаю, машина состояний как отдельный класс должна использоваться, когда возможны несколько таких машин для класса (паттерн "Стратегия"). Ну или более общно - когда логика смены состояний должна быть инкапсулирована в отдельный класс по каким-либо причинам.
Записан
vulko
Гость
Re: FSM и HSM ?
«
Ответ #4 :
Ноябрь 20, 2014, 09:52 »
В прикладных задачах чаще всего нет смысла использовать конечные автоматы.
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: FSM и HSM ?
«
Ответ #5 :
Ноябрь 20, 2014, 10:07 »
Цитата: vulko от Ноябрь 20, 2014, 09:52
В прикладных задачах чаще всего нет смысла использовать конечные автоматы.
Странное заявление. А какое смысл вы вкладываете в "прикладные задачи"?
Конечные автоматы замечательно описывают автоматические системы (которые должны работать сами и принимать решения на основании происходящих событий), не говоря уже о всяких протоколах. Позволяют легко их расширять (событиями и состояниями) без риска развалить весь комплекс, а когда состояний очень много (сотни, тысячи), то это наверное единственный способ описать такую систему, что бы она вообще заработала.
Записан
vulko
Гость
Re: FSM и HSM ?
«
Ответ #6 :
Ноябрь 20, 2014, 12:48 »
Цитата: Old от Ноябрь 20, 2014, 10:07
Цитата: vulko от Ноябрь 20, 2014, 09:52
В прикладных задачах чаще всего нет смысла использовать конечные автоматы.
Странное заявление. А какое смысл вы вкладываете в "прикладные задачи"?
Конечные автоматы замечательно описывают автоматические системы (которые должны работать сами и принимать решения на основании происходящих событий), не говоря уже о всяких протоколах. Позволяют легко их расширять (событиями и состояниями) без риска развалить весь комплекс, а когда состояний очень много (сотни, тысячи), то это наверное единственный способ описать такую систему, что бы она вообще заработала.
И каков процент таких задач? Ну например, есть состояния у виджета. В зависимости от состояния, layout меняется например.
Для такой задачи мне нужен конечный автомат?
Да, для автоматических систем они чудесно подходят. Но это все часто низкоуровневое программирование, близкое к железу. Ну ещё игры, пожалуй.
Это не странный комментарий, это просто ответ на
Цитировать
А серьезно, кто-то программирует в стиле конечных автоматов ? Есть ли у кого-то интересные ссылки ?
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: FSM и HSM ?
«
Ответ #7 :
Ноябрь 20, 2014, 13:32 »
Цитата: vulko от Ноябрь 20, 2014, 12:48
И каков процент таких задач? Ну например, есть состояния у виджета. В зависимости от состояния, layout меняется например.
Для такой задачи мне нужен конечный автомат?
Ну я бы это задачей не назвал. Поэтому, мое мнение: для такой ерунды конечные автоматы не нужны.
Цитата: vulko от Ноябрь 20, 2014, 12:48
Это не странный комментарий, это просто ответ на
Вы отвечаете за всю отрасль?
Не надо, у нас уже есть такой специалист.
«
Последнее редактирование: Ноябрь 20, 2014, 14:25 от Old
»
Записан
vulko
Гость
Re: FSM и HSM ?
«
Ответ #8 :
Ноябрь 20, 2014, 15:15 »
Цитата: Old от Ноябрь 20, 2014, 13:32
Цитата: vulko от Ноябрь 20, 2014, 12:48
И каков процент таких задач? Ну например, есть состояния у виджета. В зависимости от состояния, layout меняется например.
Для такой задачи мне нужен конечный автомат?
Ну я бы это задачей не назвал. Поэтому, мое мнение: для такой ерунды конечные автоматы не нужны.
Цитата: vulko от Ноябрь 20, 2014, 12:48
Это не странный комментарий, это просто ответ на
Вы отвечаете за всю отрасль?
Не надо, у нас уже есть такой специалист.
Почему за всю отрасль?
Мне вот за 6 лет работы ниразу не повстречались конечные автоматы. Видел реализации стейт машин, но все это было очень упрощенно, в сравнении с универсальной реализацией той же HSM.
Я не отрицаю что где-то они нужны. Но таких областей не так уж много.
Записан
Денис
Гость
Re: FSM и HSM ?
«
Ответ #9 :
Ноябрь 20, 2014, 19:42 »
Цитата: vulko от Ноябрь 20, 2014, 15:15
Цитата: Old от Ноябрь 20, 2014, 13:32
Цитата: vulko от Ноябрь 20, 2014, 12:48
И каков процент таких задач? Ну например, есть состояния у виджета. В зависимости от состояния, layout меняется например.
Для такой задачи мне нужен конечный автомат?
Ну я бы это задачей не назвал. Поэтому, мое мнение: для такой ерунды конечные автоматы не нужны.
Цитата: vulko от Ноябрь 20, 2014, 12:48
Это не странный комментарий, это просто ответ на
Вы отвечаете за всю отрасль?
Не надо, у нас уже есть такой специалист.
Почему за всю отрасль?
Мне вот за 6 лет работы ниразу не повстречались конечные автоматы. Видел реализации стейт машин, но все это было очень упрощенно, в сравнении с универсальной реализацией той же HSM.
Я не отрицаю что где-то они нужны. Но таких областей не так уж много.
Боже мой ... отошли от сути вопроса !!!
Я спрашивал есть ли у кого-то стоящие примеры конечных автоматов, а не нужны ли они )
И естественно конкретно для определенных задач подходит программирование в стиле конечных автоматов, кое-где его и не надо использовать ... Но вопрос топика не о это ... Ссылки в студию !!!!!!!!! )
Для задачи с малым количество сообщений конечные автоматы не нужны, а вот где сообщения зашкаливают, в частности системы искусственного интеллекта, там без них не обойтись, бо придет тебе сообщение в такой системе заранее неизвестное и как программа будет себя вести ?
Во общем хотелось бы увидеть интересные ссылки на темы и паттерны посвященные такому программированию !?
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: FSM и HSM ?
«
Ответ #10 :
Ноябрь 20, 2014, 20:01 »
Цитата: Денис от Ноябрь 20, 2014, 19:42
Ссылки в студию !!!!!!!!! )
А какие ссылки вы ждете?
Две реализации State Machine есть в бусте, еще одна в Qt. Примеры использования есть в их документациях.
Записан
vulko
Гость
Re: FSM и HSM ?
«
Ответ #11 :
Ноябрь 20, 2014, 20:21 »
Цитата: Денис от Ноябрь 20, 2014, 19:42
Цитата: vulko от Ноябрь 20, 2014, 15:15
Цитата: Old от Ноябрь 20, 2014, 13:32
Цитата: vulko от Ноябрь 20, 2014, 12:48
И каков процент таких задач? Ну например, есть состояния у виджета. В зависимости от состояния, layout меняется например.
Для такой задачи мне нужен конечный автомат?
Ну я бы это задачей не назвал. Поэтому, мое мнение: для такой ерунды конечные автоматы не нужны.
Цитата: vulko от Ноябрь 20, 2014, 12:48
Это не странный комментарий, это просто ответ на
Вы отвечаете за всю отрасль?
Не надо, у нас уже есть такой специалист.
Почему за всю отрасль?
Мне вот за 6 лет работы ниразу не повстречались конечные автоматы. Видел реализации стейт машин, но все это было очень упрощенно, в сравнении с универсальной реализацией той же HSM.
Я не отрицаю что где-то они нужны. Но таких областей не так уж много.
Боже мой ... отошли от сути вопроса !!!
Я спрашивал есть ли у кого-то стоящие примеры конечных автоматов, а не нужны ли они )
И естественно конкретно для определенных задач подходит программирование в стиле конечных автоматов, кое-где его и не надо использовать ... Но вопрос топика не о это ... Ссылки в студию !!!!!!!!! )
Для задачи с малым количество сообщений конечные автоматы не нужны, а вот где сообщения зашкаливают, в частности системы искусственного интеллекта, там без них не обойтись, бо придет тебе сообщение в такой системе заранее неизвестное и как программа будет себя вести ?
Во общем хотелось бы увидеть интересные ссылки на темы и паттерны посвященные такому программированию !?
В state machine нет ничего сложного, чтобы изучать ссылки, паттерны и т.п.
10 минут можно потратить на создание своей имплементации, вместо того чтобы искать готовую.
На чистом С имплементация была в соседней теме где ты спрашивал про hsm.
Но там конечно криво спроектированно имхо. Возьми идею за основу, накидай свой код поверх.
Ты больше времени потратишь на гугл и осмысление названий и логики работы, чем если напишешь сам.
Записан
Денис
Гость
Re: FSM и HSM ?
«
Ответ #12 :
Ноябрь 20, 2014, 23:36 »
Цитата: vulko от Ноябрь 20, 2014, 20:21
Цитата: Денис от Ноябрь 20, 2014, 19:42
Цитата: vulko от Ноябрь 20, 2014, 15:15
Цитата: Old от Ноябрь 20, 2014, 13:32
Цитата: vulko от Ноябрь 20, 2014, 12:48
И каков процент таких задач? Ну например, есть состояния у виджета. В зависимости от состояния, layout меняется например.
Для такой задачи мне нужен конечный автомат?
Ну я бы это задачей не назвал. Поэтому, мое мнение: для такой ерунды конечные автоматы не нужны.
Цитата: vulko от Ноябрь 20, 2014, 12:48
Это не странный комментарий, это просто ответ на
Вы отвечаете за всю отрасль?
Не надо, у нас уже есть такой специалист.
Почему за всю отрасль?
Мне вот за 6 лет работы ниразу не повстречались конечные автоматы. Видел реализации стейт машин, но все это было очень упрощенно, в сравнении с универсальной реализацией той же HSM.
Я не отрицаю что где-то они нужны. Но таких областей не так уж много.
Боже мой ... отошли от сути вопроса !!!
Я спрашивал есть ли у кого-то стоящие примеры конечных автоматов, а не нужны ли они )
И естественно конкретно для определенных задач подходит программирование в стиле конечных автоматов, кое-где его и не надо использовать ... Но вопрос топика не о это ... Ссылки в студию !!!!!!!!! )
Для задачи с малым количество сообщений конечные автоматы не нужны, а вот где сообщения зашкаливают, в частности системы искусственного интеллекта, там без них не обойтись, бо придет тебе сообщение в такой системе заранее неизвестное и как программа будет себя вести ?
Во общем хотелось бы увидеть интересные ссылки на темы и паттерны посвященные такому программированию !?
В state machine нет ничего сложного, чтобы изучать ссылки, паттерны и т.п.
10 минут можно потратить на создание своей имплементации, вместо того чтобы искать готовую.
На чистом С имплементация была в соседней теме где ты спрашивал про hsm.
Но там конечно криво спроектированно имхо. Возьми идею за основу, накидай свой код поверх.
Ты больше времени потратишь на гугл и осмысление названий и логики работы, чем если напишешь сам.
Ну я также думал, а потом наткнулся на паттерн от
Quantum Leaps
и подумал нету ли чего-то еще похожего как и их библиотека
State Machine
?
Посмотрите какие фирмы пользуются их наработками в стиле конечных автоматов и обомлеете ... даже разработчики
Qt Framework
-а не брезгают прибегать к их решениям ...
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: FSM и HSM ?
«
Ответ #13 :
Ноябрь 20, 2014, 23:53 »
Цитировать
Ну я также думал, а потом наткнулся на паттерн от Quantum Leaps и подумал нету ли чего-то еще похожего как и их библиотека State Machine ?
Посмотрите какие фирмы пользуются их наработками в стиле конечных автоматов и обомлеете ... даже разработчики Qt Framework-а не брезгают прибегать к их решениям .
Ну так посмотрите на реализацию в boost'е.. Boost всёже далеко не глупыми людьми разрабатывался.. И вообще, считаю, что нужно стремиться к этой философии заложенной там (в boost'е).. Во всяком случае, мне приходилось писать под себя нечто, аналогичное (что есть в boost'е), лишь в очень-очень специфических задачах и то это па пальцам пересчитать..
Мораль в итоге такова:
Прежде чем изобретать свой велосипед (как рекомендуют тут асы 80 уровня) посмотрите на то, как это реализовано у тех, кто реально заслуживает авторитета и уже потом, если в чём то объективно не согласны, создавайте своё, бессмертное)
Всё же, повторюсь, boost далеко не дураки писали..
Посмотрите как там, а потом уже делайте выводы) Надо оно вам али нет..)
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
vulko
Гость
Re: FSM и HSM ?
«
Ответ #14 :
Ноябрь 21, 2014, 09:14 »
Цитата: m_ax от Ноябрь 20, 2014, 23:53
Цитировать
Ну я также думал, а потом наткнулся на паттерн от Quantum Leaps и подумал нету ли чего-то еще похожего как и их библиотека State Machine ?
Посмотрите какие фирмы пользуются их наработками в стиле конечных автоматов и обомлеете ... даже разработчики Qt Framework-а не брезгают прибегать к их решениям .
Ну так посмотрите на реализацию в boost'е.. Boost всёже далеко не глупыми людьми разрабатывался.. И вообще, считаю, что нужно стремиться к этой философии заложенной там (в boost'е).. Во всяком случае, мне приходилось писать под себя нечто, аналогичное (что есть в boost'е), лишь в очень-очень специфических задачах и то это па пальцам пересчитать..
Мораль в итоге такова:
Прежде чем изобретать свой велосипед (как рекомендуют тут асы 80 уровня) посмотрите на то, как это реализовано у тех, кто реально заслуживает авторитета и уже потом, если в чём то объективно не согласны, создавайте своё, бессмертное)
Всё же, повторюсь, boost далеко не дураки писали..
Посмотрите как там, а потом уже делайте выводы) Надо оно вам али нет..)
максимка, опять очки не протер?))
где я предложил изобрести свой велосипед?)
Цитировать
Возьми идею за основу, накидай свой код поверх.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...