Комментарии 18
Есть ощущение, что автор оригинала только-только узнал, что существуют конечные автоматы и пытается их запихнуть всюду куда дотягиваются руки.
Это ромбики и овалы со стрелочками?
В любой момент времени система находится в одном из определённых состояний, а переходы инициируются при наступлении ...
Мне всегда было интересно послушать что скажут проповедники конечных автоматов на вопрос:
А в каком состоянии находится конечный автомат в момент перехода?
Но они почему-то всегда избегают ответа на этот вопрос.
Сперва ответьте на два вопроса:
Кто такие "проповедники конечных автоматов"?
С какой стати в системе, где переход не может произойти мгновенно (синхронно, атомарно), применяется автоматный подход?
Интересно, а где это переход может произойти мгновенно?
Пример можете привести?
В лексических анализаторах языков. Там весь переход заключается в одной операции присвоения.
Это классический пример. Вы когда-нибудь задумывались, что "под капотом" у регулярных выражений? А там - конечный автомат (либо автомат с магазинной памятью).
Вы когда-нибудь задумывались, что "под капотом" у регулярных выражений? А там - конечный автомат (либо автомат с магазинной памятью).
мне не надо задумываться, я код вижу.
Конечные автоматы это концепция из прошлого века, если не сказать из прошлого тысячилетия. По ней строились первые процессоры, но даже из архитектуры процессоров она отодвинулась на позицию исторических, хотя конечно фундаментальных знаний, потому что ее практическая ценность стремится к нулю при произошедшем значительном усложнении даже аппаратных систем. Считать состоянием то что записано к килобайтах, а тем более в мегабайтах - это что-то странное - сколько же у вас состояний? больше чем атомов во вселенной?
Регулярные выражения обрабатываются через стек вызовов, одного присваивания там явно не достаточно, исли вы конечно полноценные регулярные выражения имели ввиду, а не то на чем кто-то изучает конечные автоматы.
Конечные автоматы это концепция из прошлого века, если не сказать из прошлого тысячилетия.
Возраст - не повод полностью отказываться от инструмента или методологии. Последовательную запись и выполнение операторов, условные операторы и циклы тоже давным-давно придумали, но ничего, пользуемся и по сей день.
сколько же у вас состояний? больше чем атомов во вселенной?
Всех возможных состояний системы (в автоматном программировании их называют вычислительными) - да, может быть и больше, чем атомов. А вот важных для управления системой (это управляющие состояния) - намного меньше.
Как пример - баланс средств на счете может быть любым, от нуля до бесконечности. Значение баланса - вычислительное состояние. Но для совершения действия в системе (т.е. для управления системой) важно лишь, достаточно ли на счету средств для оплаты покупки. Вычислительных состояний потенциально бесконечно много, но управляющих в данном конкретном примере - всего два.
Примерно всё, что Вы написали в этом посте - неправда.
И реализацию регулярных выражений Вы, очевидно, тоже не смотрели.
Мне кажется, тут нужно различать состояния автомата и состояния системы, управляемой автоматом. Автомат должен быть спроектирован и реализован так, чтобы его состояния сменялись мгновенно/синхронно/атомарно. В таких условиях Ваш вопрос будет лишен смысла.
Автомат должен быть спроектирован и реализован так, чтобы его состояния сменялись мгновенно/синхронно/атомарно. В таких условиях Ваш вопрос будет лишен смысла.
Мне кажется что мой вопрос лишен смысла потому что тем кто оперирует терминологией конечных автоматов сейчас совершенно не интересно каким образом меняются состояния, им интересно порассуждать что считать состояниями. Эти рассуждения всегда очень красиво выглядят в глазах аудитории.
Давайте в этой ветке всегда будем уточнять, о состоянии чего в данный момент времени идет речь - о состоянии управляющего автомата или о состоянии управляемой системы.
Будем красиво выглядеть в глазах аудиториии и, возможно, придем к имеющему практический смысл соглашению :)
Это похоже на переходный процесс и чтобы все было корректно на время переходного процесса система не должна позволять другим процессам ничего менять в текущем. Как способ достижения этого можно взять например транзакцию.
Не статья, а вода просто. Да и заголовок вводит в заблуждение. В любой библиотеке для описания fsm то же самое напишут, только четко и по делу. Зачем тащить бесполезные статьи ноунеймов?
Создаём надёжные API для бэкенда при помощи конечных автоматов: подробное руководство