
Об авторе: Анатолий Шалыто, профессор, д.т.н., Университет ИТМО
Прошло три года с того момента, как я на этом сайте опубликовал текст «Печальная история о применении конечных автоматов в программировании«. В этом тексте рассказывалось о молодом человеке, который в своей бакалаврской выпускной работе, посвящённой промышленной автоматике, не использовал автоматное программирование просто потому, что о нём даже не слышал. Конец статьи не был оптимистическим: «Меня не покидает ощущение, что нечто подобное мне придётся говорить и писать неоднократно».
Седьмого августа 2026 года вновь произошла печальная история, связанная с автоматным программированием, о которой я сейчас расскажу. Но перед этим сделаю замечание. Бакалаврскую работу молодой человек так или иначе защитил, и незнание о существовании автоматного программирования никак не повлияло на его судьбу. В излагаемой же ниже истории знание указанной парадигмы программирования могло бы изменить его судьбу.
Комиссии, в которую я входил, сдавал экзамен по ИИ молодой человек, поступающий к нам в аспирантуру при конкурсе 10 человек на место. При этом у него не было научного руководителя, а представление о том, что он хочет делать в аспирантуре, было весьма смутным. Оказалось, что он закончил магистратуру по специальности «Управление в технических системах» и работает по в компании, занимающейся промышленной автоматикой, программируя, в частности, логические контроллеры.
Для классного программирования в этой области я более тридцати лет назад предложил автоматное программирование, про которое все эти годы писал статьи, аспиранты защищали диссертации, а в 1998 году написал первую книгу, в которой, в частности, рассказал, как эффективно программировать контроллеры указанного класса. Она находится в открытом доступе.
В 2008 году я в соавторстве выпустил книгу, которая называется «Автоматное программирование», которую и сейчас в электронном виде за 39 рублей можно купить на сайте издательства «Питер». Но и эти деньги можно не тратить, так как она в открытом доступе находится на сайте с названием «Сайт по автоматному программированию и мотивации к творчеству», который существует почти 25 лет. Там опубликовано много примеров применения технологии, основанной на автоматном программировании, среди которых рекомендую ознакомиться с образцом проектной документации, размещённом здесь.
А вот отзывы на книгу «Автоматное программирование» на сайте «Литрес», которые писал не я, не мои ученики и даже не мои знакомые:
- «Мой первый опыт работы программирования в данном стиле (можно назвать методом) был связан с разработкой ПО под микроконтроллер STM32 для задачи управления несколькими двигателями с учётом показаний датчиков. Коллега порекомендовал почитать Шалыто «Автоматное программирование» и воспользоваться методами, указанными в книге. Результат превзошел мои ожидания, объём кода удалось сократить раза в два, читаемость улучшилась. Книга будет полезна в первую очередь начинающим разработчикам – примеры понятны, язык доступен. «Автоматное программирование» оказало существенное влияние на собственный стиль разработки ПО не только для микроконтроллеров, но и десктопных систем» (AlexisVaBel, 2014).
- «Автоматное программирование позволяет единообразно осуществлять разработку программного обеспечения, предназначенного для управления логическими контроллерами. Очень хорошо, что автор настойчиво продвигает свою идею, так как это отечественное ноу-хау» (leoleshXX, 2017).
- «По-моему, очень глубокая книга и при этом краткая. Автоматное программирование – один из подходов, которые должны помочь решить основное противоречие современного IT: чрезвычайная сложность и высокочастотная изменчивость прикладной логики эксплуатантов, при одновременном требовании высочайшей надёжности (предсказуемость, однозначность подведения и корректная обработка исключительных ситуаций). По мнению Шалыто нужен не «открытый исходный код» («открытый» часто лишь для того, кто его писал сам, а для остальных – «проще переписать заново!»), а «открытые спецификации», а по ним можно генерировать исполняемый код автоматически. Но по-настоящему «открытыми» спецификации могут стать только тогда, когда выражены очень просто, на языке, понятном специалисту предметной области, которую мы хотим автоматизировать. Пока же мы «хороним» прикладную логику под тоннами низкоуровневого кода на языках программирования, то поведение системы для эксплуатантов совершенно непонятно, а знания предметной области, накопленные за годы (!) эксплуатации системы, будут утеряны, так как выражены не в human-readable-спецификациях, а «размазаны» по «костыльному» коду. Начиная же с некоторого уровня сложности, который достигается «неожиданно» быстро, код становится непонятным даже для нас самих» (autoreg918102938, 2020).
Вряд ли указанные источники труднодоступны, доступны также и две обзорные статьи по этой тематике: «Автоматное программирование» (2021) и «Ещё об автоматном программировании» (2021).
Молодой человек, поступающий в аспирантуру, как и упомянутый выше бакалавр, также ничего не слышал об автоматном программировании, что для него закончилось печально, так как в аспирантуру по ИИ он не поступил, а пойти в аспирантуру ко мне по теме, которой он занимается на работе, ему по указанной причине в голову не пришло.
В заключение вопрос: что ещё мне надо сделать для того, чтобы люди, являющиеся якобы профессионалами в промышленной автоматике, создавали по-человечески написанные программы?












