Мы должны учитывать семантику слов «практический» и «применение». Для некоторых студентов практическим является все, что поможет им сдать экзамены; для других - все, что может возникнуть на работе. В обоих случаях теория автоматов действительно очень практична.
Как отмечают другие, вы будете использовать грамматики, например, при изучении компиляторов. Но даже более того: понимание всей концепции наличия разных состояний и правил для переходов между ними может сделать вас лучшим программистом, когда вы поймете, например, что ваш код избыточен здесь и там, и что когда вы его улучшаете, вы применяют в своем коде те же концептуальные идеи, которые лежат в основе минимизации DFA.
Аналогично для «приложения». Что вы понимаете под этим словом? Даже если вы «практичный инженер», вы увидите и будете использовать идеи, схожие с идеями теории автоматов в реальных проектах: программный код, блок-схемы и даже простую, но блестящую концепцию стека. Для таких теоретиков, как я, я рассматриваю применение теории автоматов в других областях, таких как логика, алгебра и теория конечных моделей. Конечно, мне, вероятно, никогда не понадобится использовать насосную лемму при совершении покупок в супермаркете, но подобные теоремы помогли мне понять структуру определенных классов языков, не говоря уже о структурах логики и алгебраики, с которыми они соответствуют. И это то, что я ценю больше, чем любая мера практичности.