Я не знаю, какие академические статьи вы уже прочитали, но на самом деле не так сложно понять, как реализовать конечный автомат. Есть немного интересной математики, но идея на самом деле очень тривиальна для понимания. Самый простой способ понять FSM - это ввод и вывод (на самом деле, это включает в себя большую часть формального определения, которое я не буду здесь описывать). «Состояние», по сути, просто описывает набор входов и выходов, которые произошли и могут возникнуть в определенной точке.
Конечные автоматы легче всего понять с помощью диаграмм. Например:
альтернативный текст http://img6.imageshack.us/img6/7571/mathfinitestatemachinedco3.gif
Все это говорит о том, что если вы начинаете в каком-то состоянии q0 (то, что рядом с символом «Пуск»), вы можете перейти в другие состояния. Каждое государство представляет собой круг. Каждая стрелка представляет собой вход или выход (в зависимости от того, как вы на это смотрите). Другой способ представить конечный автомат - это «допустимый» или «приемлемый» ввод. Существуют определенные выходные строки, которые НЕ возможны для определенных конечных автоматов; это позволит вам "сопоставить" выражения.
Теперь предположим, что вы начинаете с q0. Теперь, если вы введете 0, вы перейдете в состояние q1. Однако, если вы введете 1, вы перейдете в состояние q2. Это видно по символам над стрелками ввода / вывода.
Допустим, вы начинаете с q0 и получаете этот ввод
0, 1, 0, 1, 1, 1
Это означает, что вы прошли через состояния (нет ввода для q0, вы просто начинаете там):
q0 -> q1 -> q0 -> q1 -> q0 -> q2 -> q3 -> q3
Проследите изображение пальцем, если оно не имеет смысла. Обратите внимание, что q3 возвращается к самому себе для обоих входов 0 и 1.
Еще один способ сказать все это: «Если вы находитесь в состоянии q0 и видите 0, переходите к q1, но если вы видите 1, переходите к q2». Если вы делаете эти условия для каждого состояния, вы почти закончили определять свой конечный автомат. Все, что вам нужно сделать, это иметь переменную состояния, а затем способ ввода ввода, и это в основном то, что есть.
Хорошо, так почему это важно в отношении заявления Джоэла? Что ж, построение «ОДНОГО ИСТИННОГО РЕГУЛЯРНОГО ВЫРАЖЕНИЯ, ЧТОБЫ УПРАВЛЯТЬ ИМИ ВСЕМИ» может быть очень трудным, а также трудно поддерживать модификацию или даже для других, чтобы они возвращались и понимали. Кроме того, в некоторых случаях это более эффективно.
Конечно, конечные автоматы имеют много других применений. Надеюсь, это поможет немного. Обратите внимание, я не стал вдаваться в теорию, но есть несколько интересных доказательств, касающихся автоматов.