Ещё об автоматном программировании

Этот текст является дополнением к тексту «Автоматное программирование» (https://vk.com/@1077823-vtomatnoe-programmirovanie). В нем отражено развитие этой парадигмы программирования во времени.

Первый текст про автоматное программирование появился в 1991 г.: Шалыто А.А. Программная реализация управляющих автоматов // Судостроительная промышленность. Серия «Автоматика и телемеханика». 1991. Вып. 13, с. 41,42, https://is.ifmo.ru/works/switch_prr/.

В 1992 г. – еще один текст: Шалыто А.А. Технология программной реализации алгоритмов логического управления как средство повышения живучести кораблей и судов / Тезисы докладов научно-технической конференции «Проблемы обеспечения живучести кораблей и судов». СПб.: Судостроение. 1992, с. 87-89, https://is.ifmo.ru/download/10_02_2008_shalyto1.pdf.

В 1995 г. на эту тему было две мои публикации: 1. Shalyto A.A. Cognitive Properties of Hierarchical Representations of Complex Logical Structures / Proceedings of the 1995 International Symposium on Intelligent Control (ISIC). Workshop. 1995. Monterey. California, p. 391. http://is.ifmo.ru/science_cognitive_properties_of_hierarchical_representations_of_complex_logic_structures.pdf. 2. Шалыто А.А., Антипов В.В. Технология алгоритмизации и программирования задач логического управления // Научно-производственное объединение «Аврора». Юбилейный научно-технический сборник. 1995, с. 162-164. Первая работа – мое первое выступление за рубежом.

В 1996 году я опубликовал двухчастную статью как правильно строить схемы алгоритмов. При необходимости использовать схемы алгоритмов (этот термин заменил термин «граф-схемы алгоритмов»), предлагаю начинать их построение дешифратора состояний, а не дешифратора входных воздействий, как это делается обычно. Построенные таким образом схемы изоморфны конструкции switch в языках программирования, а схемы алгоритмов, построенные иначе – не изоморфны этой конструкции. Если не знать в каком состоянии находится система управления, то какой смысл опрашивать входные переменные? Однако большинство инженеров обращать на это внимание, почему-то, не хотят – видимо, потому что их так не учили программировать. Такие схемы названы мной – «автоматными схемами алгоритмов».

Этот подход описан в статье Шалыто А.А. Использование граф-схем и графов переходов при программной реализации алгоритмов логического управления. I, II // Автоматика и телемеханика. 1996. № 6, 7. (http://www.mathnet.ru/php/archive.phtml?wshow=paper&jrnid=at&paperid=3235&option_lang=rus, http://www.mathnet.ru/php/archive.phtml?wshow=paper&jrnid=at&paperid=3251&option_lang=rus).

Эта статья опубликована и на английском языке, так как этот журнал переводится: Shalyto A.A. Algorithmic Graph Schemes and Transition Graphs: Their Use in Software Realization of Logical Control Algorithms. I. // Automation and Remote Control. 1996. Vol. 57. No 6, pp. 890-897 и Shalyto A.A. Algorithmic Graph Schemes and Transition Graphs: Their Use in Software Realization of Logical Control Algorithms. II. // Automation and Remote Control. 1996. Vol. 57. No 7, pp.1027-1045.

В 1997 г. была еще одна наша публикация на английском: Shalyto A., Bagluk U. Switch-technology. Algorithmic and Programming Methods in Solution the Logic Control Problems of Shipping Equipment / Proceedings of International Conference on Informatics and Control (ICI&C 97). V.1. St. Petersburg. 1997, pp. 58-60.

Публиковался я тогда мало, так как писал толстую книгу на эту тему без какой-либо надежды издать ее в то мрачное время. Однако, как сказал поэт Александр Кушнер: «Времена не выбирают, / В них живут и умирают» (https://m.rupoem.ru/poets/kushner/vremena-ne-vybirayut). Поэтому несмотря ни на что я продолжал её писать...

Прошло несколько лет и Аркадий Ключев – преподаватель кафедры «Вычислительная техника» Университета ИТМО – отметил: «У нас с литературой все плохо (2000 г., А.Ш.). Можно перечислить достойные упоминания книги по пальцам. Из особо идейных можно отметить Буча, Страуструпа, Брукса (их, видимо, по ошибке перевели и издали!), с некоторой натяжкой – Рихтера. Ну, еще вышли тощая книжка про UML и книжка Йордона... Книжка Шалыто про автоматы единственная в своем роде за последние лет 15. В общем – все запущено. Иногда создается впечатление, что у нас в стране только две категории компьютерщиков: чайники и начинающие администраторы сетей, с жутким трудом осваивающие Perl и HTML. Ах, да, есть еще мода на Linux...» (http://is.ifmo.ru/aboutus/1/).

Потом он продолжил: «Толчком к применению конечных автоматов для программирования контроллеров собственного производства послужила брошюра Шалыто (Шалыто А.А., Антипов В.В. Алгоритмизация и программирование задач логического управления техническими средствами. СПб.: Моринтех, 1996. 90 с.), которую я купил в Доме книги (вариант этой брошюры, опубликованный в 1998 г., приведен здесь: http://is.ifmo.ru/books/alg_log). Она вышла до издания книги Шалыто (Шалыто А.А. Switch-технология. Алгоритмизация и программирование задач логического управления. СПб.: Наука, 1998. 628 с., http://is.ifmo.ru/books/switch/1).

В классических (советских) книгах по конечным автоматам слабо рассмотрена прикладная область (если это не счетчик в аппаратуре или лексический анализатор в программном обеспечении, А.Ш.), в основном только теория. Несмотря на то, что я в свое время изучал курс «Прикладная теория цифровых автоматов», мне раньше был не очень понятен способ применения автоматов в программировании (мои недоброжелатели и по сей день считают, что в этом вопросе всё и всегда было ясно, А.Ш.). Никто вокруг не практиковал их применение в прикладном программировании, да и я сам до этого не додумался. В настоящее время «Switch-технология» практически единственная, доступная книга по автоматам (в программировании, А.Ш.), которую можно рекомендовать студентам...».

Грант Российского фонда фундаментальных исследований на издание этой книги объемом в 40 печатных листов и тиражом 1000 экземпляров я выиграл в 1995 г. (проект № 96-01-14066).

В 1999 г. была опубликована статья Шалыто А.А. Switch-технология. Алгоритмизация и программирование задач логического управления // Промышленные АСУ и контроллеры. 1999. № 9, c. 33-37.

В 2000 г. Министерство образования РФ открыло в Университете ИТМО в качестве государственного задания научно-исследовательскую работу «Разработка технологии создания программного обеспечения систем управления на основе автоматного подхода», которая продолжалась до 2011 г. В ходе выполнения работы она изменила название: «Разработка основных положений создания программных систем управления со сложным поведением на основе объектно-ориентированного и автоматного подходов». Отчеты по нескольким ее этапам опубликованы по адресу http://is.ifmo.ru/science/1/. Руководитель – А.А. Шалыто.

В этом же году я опубликовал еще одну толстую книгу: Шалыто А.А. Логическое управление. Методы аппаратной и программной реализации алгоритмов. СПб.: Наука. 2000, 780 с. http://is.ifmo.ru/books/log_upr/1, и четыре статьи на эту тему: 1. Шалыто А.А. Автоматное проектирование программ. Алгоритмизация и программирование задач логического управления // Известия РАН. Теория и системы управления. 2000. № 6, c. 63-81 (https://is.ifmo.ru/download/app-aplu.pdf). Эта статья на английском: Shalyto A.A. Software Automation Design: Algorithmization and Programming of Problems of Logical Control // Journal of Computer and Systems Sciences International. 2000. Vol.39. No 6, pp. 899-916. http://is.ifmo.ru/articles_en/2000/shalyto-switch-2000.pdf. 2. Шалыто А.А. Реализация алгоритмов логического управления программами на языке функциональных блоков // Промышленные АСУ и контроллеры. 2000. № 4, с. 45-50. 3. Шалыто А.А., Туккель Н.И. Switch-технология – автоматный подход к созданию программного обеспечения «реактивных» систем // Промышленные АСУ и контроллеры. 2000. № 10, с. 44-48. 4. Шалыто А.А., Туккель Н.И. Автоматный подход к созданию программного обеспечения для систем логического управления и «реактивных» систем // Системы управления и обработки информации. 2000. Вып. 2, c. 165-173. http://is.ifmo.ru/works/_avtomatnij_podhod_k_sozdaniju_programmnogo_obespechenija.pdf.

В этом же году мой соавтор и коллега по НПО «Аврора» Борис Павлович Кузнецов опубликовал статью «Психология автоматного программирования» (http://www.softcraft.ru/design/ap/), а несколько позднее высказал свое мнение об этом подходе к программированию (http://is.ifmo.ru/automata/2012/kuznetsov-shalyto.pdf). Там же приводится мой ответ на его критику.

2001 г. был у меня весьма продуктивным: 1. Шалыто А.А. Алгоритмизация и программирование для систем логического управления и «реактивных» систем //Автоматика и телемеханика. 2001. № 1, с. 3-39. http://www.mathnet.ru/links/67df370047def9581c5d8713f122c865/at1715.pdf. Эта статья на английском: Shalyto A.A. Logic Control and «Reactive» Systems: Algorithmization and Programming // Automation and Remote Control. 2001. Vol. 62. No. 1, pp. 1-29. http://is.ifmo.ru/articles_en/_log_control.pdf. 2. Шалыто А.А., Туккель Н.И. Switch-технология – автоматный подход к созданию программного обеспечения «реактивных» систем // Программирование. 2001. № 5, с. 45-62. http://is.ifmo.ru/download/switch.pdf. Эта статья на английском: Shalyto A.A., Tukkel N.I. Switch-Technology: An Automated Approach to Developing Software for Reactive Systems // Programming and Computer Software. 2001. Vol. 27. No.5, pp. 260-276. https://dl.acm.org/citation.cfm?id=597470. 3. Шалыто А.А., Туккель Н.И. Switch-технология – автоматный подход к созданию программного обеспечения «реактивных» систем // Известия высших учебных заведений. Приборостроение. 2001. № 9, c. 28-35. 4. Туккель Н.И., Шалыто А.А. Реализация вычислительных алгоритмов на основе автоматного подхода // Телекоммуникации и информатизация образования. 2001. № 6, с. 35-53. http://is.ifmo.ru/progeny/_2011_01_03_shalyto-tukkel.pdf. 5. Шалыто А.А., Туккель Н.И. Программирование с явным выделением состояний. Части 1, 2 // Мир ПК. 2001. № 8, с. 116-121; № 9, с. 132-138. http://is.ifmo.ru/works/mirk/.

В этом же году я и Никита Туккель познакомились с Сергеем Александровичем Вагановым на «почве» введения автоматов в разработанную им среду FLORA/C+ (http://is.ifmo.ru/automata/vaganov/): Туккель Н.И., Шалыто А.А., Ваганов С.А. Использование Switch-технологии при разработке программ в среде FLORA/C+ (модель технологического процесса в цехе холодной прокатки) (http://is.ifmo.ru/projects/cold/).

В 2001 г. Никитой и мной был выполнен проект «Система управления танком для игры Robocode. Вариант 1. Объектно-ориентированное программирование с явным выделением состояний. Проектная документация» (http://is.ifmo.ru/projects/tanks/).

В этом году вышла рецензия на мою последнюю книгу: Богатырев Р. «Об автоматном и асинхронном программировании» // Открытые системы. 2001. № 3, с. 68, 69 (http://is.ifmo.ru/recensions/bogatyrev/), в которой, в частности, сказано: «Книга затрагивает не просто область конечных автоматов, а куда более важные вопросы единства математических основ аппаратуры и программного обеспечения, а также проблемы доказательного и автоматического программирования, которое предусматривает автоматический синтез программ на основе формальной спецификации и базы знаний предметной области».

В следующем году был выполнен проект: Туккель Н.И., Шалыто А.А. Система управления дизель-генератором (фрагмент). Программирование с явным выделением состояний. Проектная документация. 2002 (http://is.ifmo.ru/projects/dg/), а Российский фонд фундаментальных исследований (РФФИ) в результате нашей победы на конкурсе открыл на 2002, 2003 гг. тему: «Разработка технологии автоматного программирования». Руководитель – А.А. Шалыто.

В 2002 г. в одиннадцатом номере журнала «Магия ПК» появилась статья Озерова А.А. Четыре танкиста и компьютер (еще раз об игре Robocode), http://is.ifmo.ru/?i0=aboutus&i1=5, в которой есть такие слова: «В Интернете существует достаточно много сайтов, посвященных программированию и реализации своих собственных танков. Так, например, на сайте компании IBM представлен целый раздел с описанием различных тактик и методов ведения танковой войны. Среди них можно найти несколько полезных советов, помогающих реализовать систему движения или сканирования поля битвы на предмет других танков. Однако наибольший интерес вызвала российская реализация танка с использованием Switch-технологии – парадигмы программирования, основанной на применении конечных автоматов (уже тогда некоторые специалисты называли предложенный мной подход парадигмой программирования, А.Ш.). Эта реализация была предложена сотрудниками ИТМО Н.И. Туккелем и А.А. Шалыто. Они на основе теории конечных автоматов создали модель танка, который запросто обыгрывает многих участников лиги роботов. Точная математическая модель и использование современных методик программирования, позволили российскому танку занять достойное место в лиге Robocode. Этот танк обладает тремя особенностями, делающими его уникальным среди остальных: он построен «по науке», программа входит в состав проектной документации (http://is.ifmo.ru/projects/tanks/, http://is.ifmo.ru/projects/robocode2/), и при всем этом он еще и «неплохо» играет».

Озеров написал мне: «Спасибо за отличный пример использования Switch-технологии в таком нетривиальном контексте как компьютерная игра-симулятор. Я не мог не упомянуть Ваш труд в рамках своей статьи, так как считаю предлагаемый подход очень толковым и оригинальным. Мне симпатичны и другие Ваши работы на http://is.ifmo.ru».

В 2002 г. выпускник МИФИ Александр Головешин написал мне, что разработал под предложенную в нашей статье в журнале «Программирование» нотацию графов переходов инструментальное средство для поддержки автоматного программирования Visio2Switch, но он прислал только exe-файл этого средства (http://is.ifmo.ru/progeny/visio2switch/).

До этого Александр использовал в программах флаги, и ему «надоело по-убогому ваять программы для железяк. Каждый раз все держится на тонкой грани – достаточно что-то изменить или добавить, и все приходится переписывать» (http://is.ifmo.ru/aboutus/1/). Такие программы ему не нравились, так как они практически при каждом изменении падали. Он прочел нашу статью и разработал конвертер Visio2Switch, который прислал мне, чтобы я выложил его в открытый доступ. Это было весьма затруднительно, так как своего сайта у меня тогда еще не было, но потом усилиями Саши Наумова он появился, и мы выложили конвертер (http://is.ifmo.ru/automata/visio2switch/). Конвертер также опубликован по адресу: http://www.softcraft.ru/auto/switch/v2s/.

В дальнейшем я стал сравнивать программы с флагами со «слонами на тонких ножках», изображенными С. Дали на картине «Искушение Святого Антония» (http://www.arthistory.ru/dali2.htm). При этом я всегда отмечаю, что такие слоны уникальны – встречаются только на этой картине, а программы с флагами применяются повсеместно, обладая устойчивостью :-) тонконогих слонов!

А вот, что в том же году написал еще один тогда неизвестный мне человек: Вавилов К. Программирование за... 1 (одну) минуту // Компьютер Price. 2002. № 31, с. 288-293 (http://is.ifmo.ru/automata/1minute/): «Ни с чем не сравнимое чувство возникает, когда точно и сразу знаешь (на основе протоколов, автоматически строящихся в терминах автоматов, А.Ш.) место и условия возникновения логической ошибки». Как потом выяснилось, Вавилову тогда было 32 года, и ему, видимо, уже было с чем сравнивать :-). Он написал также: «Вы были у нас в «ТЯЖПРОМЭЛЕКТРОПРОЕКТЕ» и прочитали лекцию. Так, что к автоматам я пришел только через Вас». Казалось бы, легко было прийти к этому, как считают недоброжелатели, и без меня, но мне неизвестно у кого это получалось.

В то же время неизвестный мне Алексей Перро прислал такое письмо: «С тех пор, как разобрался с конечными автоматами, я уверен, что любой сложности задачу (в известных рамках) смогу реализовать быстро, правильно, а главное – с первого раза, а не проводить бессонные ночи за отладчиком, тщетно пытаясь увеличить объем мозга, для того, чтобы запомнить все».

Примерно тогда же я узнал и такую историю: «Я использовал Switch-технологию для автоматизации процесса безразборной мойки. Пока не изучил ее, не знал даже как подойти к реализации этой весьма сложной программы. Она написана под PLC Sattcon OP45 на языке DOX 5. Основываясь на Вашей технологии, я разработал схему преобразования автоматов в программу, и все пошло на ура. Программа построена по 22 графам переходов автоматов, связанных по вложенности и обмену номерами состояний, которые изображены в MS Visio с помощью шаблона (http://is.ifmo.ru/progeny/visio2switch/), взятого на Вашем сайте. Автоматы имеют следующее число состояний – 3,3,4,4,4,4,4,4,5,5,5,5,5,6,6,7,8,8,8,10,14,15. Общее число состояний – 147. Когда я до этого консультировался во многих фирмах, все утверждали, что такого этапа как проектирование программ для PLC не существует, и мол «надо программы на них уметь писать», но меня это не устраивало. О сроках выполнения проекта: полмесяца изучал технологический процесс и выбирал технологию построения программы; полмесяца изучал Switch-технологию (материалы Вашего сайта); полмесяца создавал первый проект автоматной программы; полмесяца изучал возможности DOX5 для реализации и придумывал правила кодирования; один месяц экспериментальных пусков на установке, доработка самой установки, автоматов и программы; два месяца опытной эксплуатации, проводимой под моим контролем. И все! С уважением, инженер-электроник Группы предприятий Parmalat Россия ОАО «Белгородский молочный комбинат», Магомедов Анатолий Анатольевич, tolick-list@inbox.ru» (http://is.ifmo.ru/aboutus/33/?print=yes).

В 2002 г. было опубликовано пять статей с моим участием: 1. Шалыто А.А., Туккель Н.И. Преобразование итеративных алгоритмов в автоматные // Программирование. 2002. № 5, c. 12-26. http://is.ifmo.ru/works/iter/. Эта статья на английском: Shalyto A.A., Tukkel N.I. Translating Iterative Algorithms into Automation Ones // Programming and Computer Software. 2002. Vol. 28, No 5, pp. 250-260. https://link.springer.com/article/10.1023/A:1020208127964. 2. Туккель Н.И., Шалыто А.А., Шамгунов Н.Н. Реализация рекурсивных алгоритмов на основе автоматного подхода // Телекоммуникации и информатизация образования. 2002. № 5, с. 72-99. http://is.ifmo.ru/works/recurse/. 3. Шалыто А.А., Туккель Н.И. От тьюрингова программирования к автоматному // Мир ПК. 2002. № 2, с. 144-149. https://is.ifmo.ru/download/turing.pdf. 4. Туккель Н.И., Шалыто А.А. Проектирование программного обеспечения системы управления дизель-генераторами на основе автоматного подхода // Системы управления и обработки информации. 2002. Вып. 5, с. 66-82. http://is.ifmo.ru/works/diesel/. 5. Туккель Н.И., Шалыто А.А. Реализация автоматов при программировании событийных систем // Программист. 2002. № 4, с. 74-80. http://is.ifmo.ru/download/evsys.pdf.

В первых двух из этих статей показано как схемы программ с флагами преобразуются в схемы программ с состояниями – в графы переходов.

Вот, что говорил в то время мой соавтор Никита Туккель: «Бывают программисты, которые сразу бросаются «гнуть трубы», а бывают инженеры-программисты, в которых живет верность инженерным принципам и которые стараются проектировать и использовать при этом инженерные методы. До понимания изложенного надо дорасти, как я когда-то. Мне повезло – я встретил Шалыто. Правда, до этого я всю сознательную программистскую жизнь ощущал мучительный недостаток в реально работающих формальных методах. Поэтому идеи Шалыто попали на очень удачную для них почву. Главное –программирование сложного поведения без автоматов я теперь просто не мыслю».

Автоматы продолжают приносить нам и не только нам практическую пользу. Это наш выпускник Иван Арбузов сформулировал так: «Конечные автоматы на самом деле, похоже, бесконечны».

В 2003 г. призер чемпионатов мира по программированию 2000 и 2001 гг. наш студент Денис Кузнецов вел кружок для старшеклассников во Дворце пионеров в Санкт-Петербурге. Летом он выбирал достаточно сложный проект, который было бы интересно делать детям. Для этой цели он выбрал игру Robocode. Потом увидел на моем сайте нашу с Туккелем работу на эту тему, и на ее основе, готовясь к преподаванию школьникам, сделал по моему курсу проект «Система управления танком для игры Robocode. Вариант 2» (http://is.ifmo.ru/projects/robocode2/). В аннотации проекту Денис пишет: «Работа является развитием проекта Шалыто А.А., Туккель Н.И. Система управления танком для игры Robocode. Вариант 1. Объектно-ориентированное программирование с явным выделением состояний (http://is.ifmo.ru/projects/tanks/). Хорошая проектная документация по указанному проекту позволила весьма просто внести следующие изменения: 1. Выполнен переход от процедурного программирования с использованием классов к более полному применению объектно-ориентированного программирования. 2. Осуществлено отделение автоматов управления от управляемых объектов в коде. 3. Учтены последние изменения в интерфейсе среды Robocode, что, в свою очередь, позволило упростить логику программы и сократить число автоматов на один. 4. Улучшена программная документация проекта, как за счет усовершенствования самодокументируемости кода, так и за счет использования средства javadoc. Приведена проектная документация, которая, наряду с программной документацией, дает полное представление о решении задачи построения системы управления танком».

В том же году большим тиражом была опубликована моя статья «Технология автоматного программирования» (https://www.osp.ru/pcworld/2003/10/166609).

В 2003 г. в книге Окулова С.М. Конгнитивная информатика. Киров: ВятГГУ, 2003 было сказано: «... абсолютно неоднозначно то, что общепринятая на сегодня парадигма развития технологий программирования является наиболее эффективной. Альтернативные варианты предлагаются в настоящее время, например, в работах Анатолия Абрамовича Шалыто – доктора технических наук, профессора, автора автоматной технологии программирования».

В этом же году была опубликована книга Непейвода Н.Н., Скопин И.Н. Основания программирования. Ижевск-Москва: РХД, 2003, в которой было введено понятие «стиль программирования». Среди стилей программирования авторами был выделен и такой, который они с ссылкой на мою книгу назвали «программирование от состояний» (http://is.ifmo.ru/aboutus/_log_prog2.pdf).

В 2003 г. этой тематике было опубликовано девять работ с моим участием: 1. Naumov L., Shalyto A. Automata Theory for Multi-Agent Systems Implementation / Proceedings of International Conference Integration of Knowledge Intensive Multi-Agent Systems: Modeling, Exploration and Engineering. (KIMAS-03). Boston: IEEE Boston Section. 2003, pp. 65-70. https://www.academia.edu/31854746/Automata_theory_for_multi-agent_systems_implementation. 2. Шопырин Д.Г., Шалыто А.А. Объектно-ориентированный подход к автоматному программированию // Информационно-управляющие системы. 2003. № 5, с. 29-39. http://i-us.ru/index.php/ius/article/view/14376. 3. Наумов Л.А., Шалыто А.А. Искусство программирования лифта. Объектно-ориентированное программирование с явным выделением состояний // Информационно-управляющие системы. 2003. № 6, с. 38-49. http://i-us.ru/index.php/ius/article/view/14406. 4. Шалыто А.А., Туккель Н.И. Автоматное и синхронное программирование // Искусственный интеллект. 2003. № 4, c. 82-88. http://iai.dn.ua/public/JournalAI_2003_4/Razdel1/12_Shalyto_Tukkel%27.pdf. 5. Shalyto A.A., Naumov L.A. Automata Programming as a Synchronous Programming / Proceedings of the «East-West Design & Test Conference» (EWDTC-03). IEEE Ukrainian Department. Yalta: Kharkov National University of Radio-electronics. 2003, p. 140-143. https://cyberleninka.ru/article/n/automata-programming-as-a-sort-of-synchronous-programming/viewer. 6. Шалыто А.А. Технология автоматного программирования // Сборник научных статей «Современные технологии». СПбГУ ИТМО. 2003, с. 18-26. https://www.elibrary.ru/item.asp?id=32370471. 7. Шалыто А.А. Технология автоматного программирования // Мир ПК. 2003. № 10, с. 74-78. http://is.ifmo.ru/works/tech_aut_prog. 8. Шалыто А.А. Технология автоматного программирования / Материалы Всероссийской научно-технической конференции «Методы и средства обработки информации» (МСО-2003). МГУ. 2003, с. 528-535. http://is.ifmo.ru/works/tech_aut_prog. 9. Мазин М.А., Парфенов В.Г., Шалыто А.А. Анимация. FLASH-технология. Автоматы // Компьютерные инструменты в образовании. 2003. № 4, с. 39-47. http://is.ifmo.ru/download/flash.pdf.

В 2004 г. появился первый релиз инструментального средства для поддержки автоматного программирования UniMod (https://unimod.sourceforge.io/, https://www.youtube.com/watch?v=Y4et51dz-HE).

Публикации по этой тематике начались со статьи: Гуров В.С., Мазин М.А., Нарвский А.С., Шалыто А.А. UML. Switch-технология. Eclipse // Информационно-управляющие системы. 2004. № 6, с. 12-17. http://i-us.ru/index.php/ius/article/view/14489.

Это средство в дальнейшем использовалось не только в учебном процессе в Университете ИТМО (http://is.ifmo.ru/unimod-projects/), но и в Италии (https://sepl.dibris.unige.it/publications/2012-ricca-MiSE.pdf). Потом мы получили свидетельства о государственной регистрации программ для ЭВМ с такими названиями: «Ядро автоматного программирования» (http://is.ifmo.ru/unimod/_svid.pdf) и «Встраиваемый модуль автоматного программирования для среды разработки Eclipse» (http://is.ifmo.ru/unimod/_svid2.pdf). У некоторых программистов UniMod стал любимым инструментом (https://biese.wordpress.com/2007/02/06/using-finite-state-machine-tools-to-solve-the-probelm/).

В 2004 г. при моем участии были опубликованы еще две статьи по рассматриваемой тематике: 1. Шопырин Д.Г., Шалыто А.А. Синхронное программирование // Информационно-управляющие системы. 2004. № 3, с. 35-42. http://i-us.ru/index.php/ius/article/view/14452. 2. Корнеев Г.А., Шамгунов Н.Н., Шалыто А.А. Паттерн State Machine для объектно-ориентированного проектирования автоматов // Информационно-управляющие системы. 2004. № 5, с.13-25. http://i-us.ru/index.php/ius/article/view/14476.

В этом же году Игорь Одинцов с матмеха СПбГУ в книге Профессиональное программирование. Системный подход. БХВ-Петербург. 2004 (https://www.studmed.ru/view/odincov-i-professionalnoe-programmirovanie-sistemnyy-podhod_cd4f159c838.html?page=1), рассказывая не о самых популярных методологиях программирования, начинает с методологии автоматного программирования и ссылается на меня (с. 106). Я также упоминаюсь там и в связи с инициативой об открытой проектной документации (с. 597). Примеры открытой проектной документации с моего сайта https://is.ifmo.ru/ названы удачными (с. 598).

В 2005 г. я опубликовал две статьи: 1. Шалыто А.А. Автоматно-ориентированное программирование // Научно-технический вестник СПбГУ ИТМО. № 5 (21). Актуальные проблемы современных оптико-информационных систем и технологий. 2005, с. 35-41. https://ntv.ifmo.ru/ru/journal/102/journal_102.htm. 2. Шалыто А.А. Автоматно-ориентированное программирование / Материалы IX Всероссийской конференции по проблемам науки и высшей школы «Фундаментальные исследования в технических университетах». СПб.: Политех. 2005, с. 44-52. http://is.ifmo.ru/works/_politeh.pdf.

В этом же году Н.Н. Непейвода опубликовал книгу Стили и методы программирования. М.: Интернет-Университет Информационных технологий. 2005. 316 с., в которой автоматное программирование рассматривается как стиль программирования. При этом в качестве ключевых слов к главе «Автоматное программирование» используются следующие термины: А.А. Шалыто, таблица состояний и переходов, состояние, переход, автомат Мура, автомат Мили, автоматное программирование, блок-схема.

Там Николай Николаевич написал: «Термин «автоматное программирование» принадлежит, насколько нам известно, А. Шалыто. Во всяком случае, ему принадлежит заслуга в его развитии вопреки моде и мнению большинства». Все это осталось и в изданиях книги 2012 и 2016 гг.

На основе этой книги на портале «ИНТУИТ. Национальный открытый университет» Непейвода опубликовал четыре лекции (с девятой по двенадцатую) по автоматному программированию, причем в аннотации к первой из них приведены указанные выше слова о мнении большинства (https://intuit.ru/studies/courses/40/40/info).

Кстати, о терминах. «Математику трудно согласиться с тем, что введение нового термина, не сопровождающееся открытием новых фактов, является значительным достижением. Однако успех таких терминов, как, например, «фрактал», «аттрактор» и «хаос» показывает плодотворность словотворчества как метода научной работы» (В. Арнольд).

В 2005, 2006 гг. в рамках Федеральной целевой программы «Исследования и разработки по приоритетным направлениям науки и техники» на 2002-2006 годы мы выиграли государственный контракт на выполнение опытно-конструкторской работы на тему: «Технология автоматного программирования: применение и инструментальные средства». Руководитель – А.А. Шалыто. Работа вошла в число 15 наиболее перспективных научных проектов, которые находились в 2005/2006 гг. в распоряжении Федерального агентства по науке и инновациям (Коммерсантъ Business Guide. 2005. № 215, с. 36. http://www.kommersant.ru/doc/625381).

В 2005 г. Вавилов К.В. выполнил три работы: Программируемые логические контроллеры SIMATIC S7-200 (SIEMENS). Методика алгоритмизации и программирования задач логического управления. 2005. http://is.ifmo.ru/automata/_metod065.pdf; Контроллеры SIMATIC S7-300 (SIEMENS). Организация взаимодействия независимых локальных систем управления на основе автоматного подхода и функционального разделения автоматов управления. 2005. http://is.ifmo.ru/automata/s7300.pdf; LabVIEW и Switch-технология. Методика алгоритмизации и программирования задач логического управления. 2005. http://is.ifmo.ru/automata/_vavilov2.pdf.zip.

В этом же году в сети появился текст «Автоматное программирование для начинающих» (https://tdocs.su/4199), а на странице «Олимпиадное программирование на Физтехе» среди парадигм программирования приводится и «автоматная». Сегодня эта парадигма указана, например, здесь: https://znanierussia.ru/articles/Парадигмы_программирования.

В 2005 г. появилась статья Козаченко В.Ф. Эффективный метод программной реализации дискретных управляющих автоматов в встроенных системах управления (http://www.l-avt.ru/support/library/articles/state_mashine.pdf). Вот, что в это время Владимир Филиппович написал мне: «Интересно, как мы впервые познакомились с Вашими работами в этой области. Я вел курсы повышения квалификации специалистов в области встраиваемых микроконтроллерных систем управления и читал лекцию о современных методах реализации программ для логических контроллеров и дискретных управляющих автоматов на сигнальных процессорах. Один из слушателей сказал, так это же очень похоже на то, как делает А.А. Шалыто, и показал Вашу статью. Мы были поражены схожестью подходов. Директор Учебно-научно-консультационного центра «Texas Instruments-МЭИ», Генеральный директор «Научно-производственной фирмы «ВЕКТОР» Козаченко В.Ф.».

В 2005 г. в журнале «Радиолюбитель» А. Черномырдин опубликовал серию статей о применении автоматного программирования для микроконтроллеров (http://is.ifmo.ru/automata/_autmicroc.pdf, http://is.ifmo.ru/automata/_autmicroc2.pdf). В этом же году в журнале RSDN Magazine была опубликована статья «Реализация систем, управляемых событиями. Использование конечных автоматов» (https://rsdn.org/article/patterns/Protocols.xml). Ее авторы «гордые» – ни на кого не сослались.

В 2005 г. Сергеем Канжелевым и мной было предложено инструментальное средство MetaAuto для автоматической генерации автоматных программ на любом априори заданном языке программирования по графам переходов (http://is.ifmo.ru/projects/metaauto/). Предложенный подход к генерации программ описан в статье: Канжелев С.Ю., Шалыто А.А. Автоматическая генерация автоматного кода // Информационно-управляющие системы. 2006. № 6, с. 35-42. http://is.ifmo.ru/works/_autogen.pdf. Презентация этого средства размещена по адресу: http://www.myshared.ru/slide/128477/. Оно используется в АО «Концерн НПО «Аврора» моим аспирантом А.В. Калачинским в его технологии автоматного программирования судовых систем управления.

А вот другие наши статьи, опубликованные по теме в этом году: 1. Yartsev B., Korneev G., Kotov V., Shalyto A. Automata-Based Programming of the Reactive Multi-Agent Control Systems / 2005 International Conference on Integration of Knowledge Intensive Multi-Agent Systems: Modeling, Exploration and Engineering (KIMAS-05). Boston: IEEE Boston Section. 2005, pp. 449-453. http://swan.kgeorgiy.info/papers/Yartsev_B__Korneev_G__Shalyto_A__Kotov_V_--_Automata-Based_Programming.pdf. 2. Naumov L., Korneev G., Shalyto A. Methods of Object-Oriented Reactive Agents Implementation on the Basis of Finite Automata / 2005 International Conference on Integration of Knowledge Intensive Multi-Agent Systems: Modeling, Exploration and Engineering (KIMAS-05). Boston: IEEE Boston Section. 2005, pp. 460-465. http://www.kgeorgiy.info/papers/Shalyto_A__Naumov_L__Korneev_G_--_OO_FSA.pdf. 3. Кретинин А.В., Солдатов Д.В., Шалыто А.А., Шостак А.В. Ракеты. Автоматы. Нейронные сети // Нейрокомпьютеры: разработка и применение. 2005. № 5, с. 50-59. http://is.ifmo.ru/works/_rocketaut.pdf. 4. Кретинин А.В., Солдатов Д.В., Шалыто А.А., Шостак А.В. Использование нейросетевых конечных автоматов для моделирования функционирования агрегатов жидкостного ракетного двигателя // Информационные технологии. 2005. № 8, с. 47-53. 5. Альтерман И.З., Шалыто А.А. Формальные методы программирования логических контроллеров // Промышленные АСУ и контроллеры. 2005. № 10, c. 49-52. http://is.ifmo.ru/works/formalcontroller.pdf. 6. Корнеев Г.А., Шамгунов Н.Н., Шалыто А.А. State Machine – расширение языка Java для эффективной реализации автоматов // Информационно-управляющие системы. 2005. № 1, с. 16-24. http://i-us.ru/index.php/ius/article/view/14503. 7. Шопырин Д.Г. Объектно-ориентированная реализация конечных автоматов на основе виртуальных методов // Информационно-управляющие системы. 2005. № 3, с. 36-40. http://i-us.ru/index.php/ius/article/view/14533.

В этом же году был опубликован стандарт для построения распределенных систем управления и автоматизации IEC 61499 (https://ru.wikipedia.org/wiki/IEC_61499), в котором поведение базовых блоков предложено описывать графами переходов, чего не было в дополняемым им стандарте IEC 61131-3 (https://ru.wikipedia.org/wiki/IEC_61131-3), описывающем языки программирования программируемых логических контроллеров, первая редакция которого была разработана в 1993 г. При этом отмечу, что Виктор Николаевич Дубинин защитил докторскую диссертацию по этой тематике (https://science.pnzgu.ru/files/science.pnzgu.ru/science.pnzgu.ru/dissertaciya_dubinina_v_n_.pdf) только в 2014 г. Книги на русском языке по этой теме размещены здесь: https://vt.pnzgu.ru/files/vt.pnzgu.ru/sotrudniki/dubinin/dlya_rezyume/monografiya/fb_monography.pdf, https://www.gov.kz/uploads/2020/10/7/37c2918c51d61ec3ab8cb6a849771402_original.13380269.pdf. Есть основания предполагать, что «новый» стандарт станет определяющим при автоматизации в промышленности (https://www.eclipse.org/4diac/), особенно в нефтяной, хотя нотация, применяемая в нём, по моему мнению, громоздка и не наглядна.

В 2006 г. я опубликовал статью Автоматное программирование // Известия Уральского государственного университета. 2006. № 43. Компьютерные науки и информационные технологии. Вып. 1, с.181-190. http://elar.urfu.ru/bitstream/10995/24543/1/iurm-2006-43-13.pdf.

Другие статьи, написанные при моем участии в этом году: 1. Shalyto A., Shamgunov N., Korneev G. State Machine Design Pattern //.NET Technologies 2006. Shot communication papers conference proceedings. 4-th International Conference in Central Europe on .NET Technologies. University of West Bohemia. 2006, pp. 51-58. http://is.ifmo.ru/articles_en/2006/shalyto-shamgunov-korneev-2006.pdf. 2. Paraschenko D., Shalyto A., Tsarev F. Modeling Technology for One Class of Multi-Agent Systems with Automata Based Programming / Proceedings of 2006 IEEE International Conference on Computational Intelligence for Measurement Systems and Applications (CIMSA-2006). La Coruna. Spain. 2006, pp.15-20. https://www.academia.edu/31854706/Modeling_Technology_for_One_Class_of_Multi-Agent_Systems_with_Automata_Based_Programming. 3. О проекте «Технология автоматного программирования: применение и инструментальные средства» // Информационные технологии. 2006. № 2, с. 79. http://novtex.ru/IT/it2006/number02.htm. 4. Вавилов К.В., Шалыто А.А. LabVIEW и Switch-технология // Промышленные АСУ и контроллеры. 2006. № 6, с. 43-45. http://is.ifmo.ru/works/_lv.pdf. 5. Оршанский С.А., Шалыто А.А. Применение динамического программирования при решении задач на конечных автоматах // Компьютерные инструменты в образовании. 2006. № 4, c. 26-35. http://is.ifmo.ru/works/_2007_09_10_orshanskiy.pdf.

В этом же году было издано учебно-методическое пособие по этой тематике: Зюбин В. Программирование информационно-управляющих систем на основе конечных автоматов. Новосибирский государственный университет, 2006 (http://reflex-language.narod.ru/articles/06ICSonFA.pdf). в котором на странице 58 обсуждается Switch-технология. Мое письмо к Владимиру после прочтения его пособия приведено здесь: http://is.ifmo.ru/books/shalyto-zubinu.

В 2006 г. вышла книга Салмре И. Программирование мобильных устройств на платформе .Net Compact Framework. М.: Вильямс. 2006 (http://www.uhlib.ru/kompyutery_i_internet/programmirovanie_mobilnyh_ustroistv_na_platforme_net_compact_framework/index.php), в которой в главе «Наш друг конечный автомат» «звучит гимн» применению конечных автоматов при программировании мобильных устройств (http://is.ifmo.ru/automata/mobdev/).

В этом же году в журнале «Компоненты и технологии» № 8 была опубликована статья Татарчевского В. Некоторые мысли по поводу программирования встроенных систем» (http://is.ifmo.ru/automata/_19_60.pdf), в которой обсуждались наши публикации по применению автоматного программирования. Потом появилась еще одна его статья по этой тематике: Татарчевский В.А. Switch-технология в задачах логического управления // Программные продукты и системы. 2006. № 4, с. 30-32 (http://is.ifmo.ru/works/_Tatarch.pdf, http://www.swsys.ru/index.php?page=article&id=441), в которой я получил благодарность от автора за помощь в ее подготовке. После этого вышла статья этого автора Применение Switch-технологии в задачах управления технологическими процессами // Надежность. 2007. № 1, с. 21-27 (http://is.ifmo.ru/works/_ALL.pdf). А еще он в 2006, 2007 гг. опубликовал в журнале «Компоненты и технологии» несколько статей под общим названием «Применение Switch-технологии при разработке прикладного программного обеспечения для микроконтроллеров (https://disk.yandex.ru/d/89YWXdYIdMy42).

Затем со ссылками на Татарчевского появилась статья В. Васильева с важным для программистов словосочетанием: «Конечные автоматы, как программировать без запарок» (http://popayaem.ru/konechnye-avtomaty-kak-programmirovat-bez-zaparok.html). В ней автор пишет: «Речь пойдет о таком интересном стиле программирования микроконтроллеров как автоматное программирование. Точнее это даже не стиль программирования, а целая концепция, благодаря которой программист микроконтроллеров может значительно облегчить себе жизнь. Благодаря ее применения многие задачи, которые встают перед программистом, решаются гораздо легче и проще, избавляя программиста от головной боли. Кстати, автоматное программирование часто называют Switch-технологией».

В 2006, 2007 гг. на Физтехе при подготовке к олимпиадам по программированию читался курс «Сравнительный анализ языков программирования», в программе которого в разделе «Парадигмы программирования» обсуждалось «Программирование от состояний – автоматное программирование».

В 2007 г. мы опубликовали в СПбГУ ИТМО учебно-методическое пособие: Поликарпова Н.И., Шалыто А.А. Автоматное программирование (http://is.ifmo.ru/books/_umk.pdf), а А.Е. Генельтучебное пособие «Автоматизированные методы разработки архитектуры программного обеспечения» (http://is.ifmo.ru/books/_henelt2.pdf), в котором есть раздел «Автоматное программирование».

А вот статьи с моим участием, опубликованные в этом году: 1. Шопырин Д.Г., Шалыто А.А. Графическая нотация наследования автоматных классов // Программирование. 2007. № 5, с. 62-74. http://is.ifmo.ru/works/_12_12_2007_shopyrin.pdf. Эта статья на английском: Shopyrin D., Shalyto A. Graphical Inheritance Notation for State-Based Classes // Programming and Computer Software. 2007. Vol. 33. No. 5, pp. 283-292. http://is.ifmo.ru/articles_en/_2007_09_03_PCS283.pdf. 2. Лобанов П.Г., Шалыто А.А. Использование генетических алгоритмов для автоматического построения конечных автоматов в задаче о флибах // Известия РАН. Теория и системы управления. 2007. № 5, с. 127-136. Эта статья на английском: Lobanov P.G., Shalyto A.A. Application of Genetic Algorithms for Automatic Construction of Finite-State Automata in the Problem of Flibs // Journal of Computer and Systems Sciences International. 2007. Vol. 46. No. 5, pp. 792-801. http://is.ifmo.ru/articles_en/_lobanov.pdf. 3. Гуров В.С., Мазин М.А., Нарвский А.С., Шалыто А.А. Инструментальное средство для поддержки автоматного программирования // Программирование. 2007. № 6, с. 65-80. https://www.academia.edu/31854647/Tools_for_support_of_automata-based_programming, http://is.ifmo.ru/works/_2008_01_27_gurov.pdf. Эта статья на английском: Gurov V.S., Mazin M.A., Narvsky A.S., Shalyto A.A. Tools for Support of Automata-Based Programming // Programming and Computer Software. 2007. Vol. 33. No. 6, pp. 343-355. https://www.researchgate.net/publication/220203978_Tools_for_support_of_automata-based_programming. 4. Кретинин А.В., Солдатов Д.В., Шалыто А.А., Шостак А.В. Диагностирование аварийных состояний турбонасосного агрегата жидкостного ракетного двигателя // Нейрокомпьютеры: разработка, применение. 2007. № 9, с. 372-379. http://is.ifmo.ru/works/_kshh.pdf. 5. Вельдер С.Э., Шалыто А.А. О верификации простых автоматных программ на основе метода Model Checking // Информационно-управляющие системы. 2007. № 3, с. 27-38. http://i-us.ru/index.php/ius/article/view/14670. 6. Степанов О.Г., Шалыто А.А., Шопырин Д.Г. Предметно-ориентированный язык автоматного программирования на базе динамического языка RUBY // Информационно-управляющие системы. 2007. № 4, с. 22-27. http://i-us.ru/index.php/ius/article/view/14683. 7. Вавилов К.В., Шалыто А.А. Что плохого в неавтоматном подходе к программированию контроллеров? // Промышленные АСУ и контроллеры. 2007. № 1, с. 49-51. http://is.ifmo.ru/works/_Asu-2007-01.pdf.

В 2007 г. во втором, третьем и четвертом номерах журнала «Компоненты и технологии» были опубликованы четвертая (с. 148-150), пятая (с. 180-182) и шестая (с. 202-204) части статьи В. Татарчевского «Применение Switch-технологии при разработке программного обеспечения для микроконтроллеров» (https://disk.yandex.ru/d/89YWXdYIdMy42).

В 2007, 2008 гг. рамках Федеральной целевой программы «Исследования и разработки по приоритетным направлениям развития научно-технологического комплекса России на 2007-2012 годы». «Проведение проблемно-ориентированных поисковых исследований и создание научно-технического задела по перспективным технологиям в области информационно-телекоммуникационных систем» мы выиграли два конкурса на выполнение работ по темам: «Технология генетического программирования для генерации автоматов управления системами со сложным поведением» и «Разработка технологии верификации управляющих программ со сложным поведением, построенных на основе автоматного подхода». Руководитель тем – А.А. Шалыто. Я думаю, что первая из этих работ была первой в ИТМО по искусственному интеллекту.

В 2008 г. мы подготовили и передали в издательство «Питер» рукопись книги Поликарпова Н.И., Шалыто А.А. Автоматное программирование, оформленную по предложенному нам шаблону (http://is.ifmo.ru/books/_book.pdf).

В этом же году мы впервые в мире опубликовали сборник по автоматному программированию: Научно-технический вестник СПбГУ ИТМО. 2008. № 8 (53). Автоматное программирование (https://ntv.ifmo.ru/file/journal/61.pdf), содержащий 314 страниц, в котором приведены 28 (!) статей (http://is.ifmo.ru/works/) по различным аспектам автоматного программирования. Сборник начинается с большой моей статьи, названной «Парадигма автоматного программирования».

В 2008 г. мой обзор «Автоматное программирование» (https://is.ifmo.ru/works/_2010_09_08_automata_progr.pdf) стал одним из победителей Всероссийского конкурсного отбора обзорно-аналитических статей по приоритетному направлению «Информационно-телекоммуникационные системы» (http://www.news.sfu-kras.ru/node/2860).

А вот еще две статьи на эту тему: Анисимов А.Е. Автоматное программирование. Часть 1 // Потенциал. 2008. № 3 (39), с. 27-35 (http://is.ifmo.ru/automata/_autonemi_3.pdf) и Анисимов А.Е. Автоматное программирование. Часть 2 // Потенциал. 2008. № 4 (40), с. 42-52 (http://is.ifmo.ru/automata/_autonemi_1.pdf). В этих статьях библиография – книги Непейводы и мой сайт. Андрей Евгеньевич совместно с Пупышевым В.В. является автором книги: Сборник заданий по основам программирования. М.: Интуит, 2014 (https://www.ozon.ru/context/detail/id/2699626/), в которой есть задания и по автоматному программированию.

В этом же году разразилась склока с неким DrCroco (как выяснилось с А. Столяровым с ВМК МГУ) (https://www.wikiwand.com/ru/Обсуждение:Автоматное_программирование) по поводу статьи «Автоматное программирование» в русскоязычной «Википедии» (https://ru.wikipedia.org/wiki/Автоматное_программирование). Куратор этой статьи (физик-теоретик) принял сторону Столярова, который попытался свой текст перенести в англоязычную «Википедию», что ему в полной мере осуществить не удалось (https://en.wikipedia.org/wiki/Automata-based_programming) – в начале англоязычной статьи есть такая ссылка: For other uses, see Automata-based programming (Shalyto's approach). Эта статья размещена по адресу: https://en.wikipedia.org/wiki/Automata-based_programming_(Shalyto's_approach). Она также существует и по адресу: https://en.academic.ru/dic.nsf/enwiki/9300552/Automata.

Все эти годы я утверждал и продолжаю утверждать, что оба термина «Автоматное программирование» и Automata-Based Programming предложены мной (https://vk.com/@1077823-vtomatnoe-programmirovanie). По второму термину доказательство приведено здесь: https://www.semanticscholar.org/topic/Automata-based-programming/2609355. Этот термин обсуждается в учебнике английского языка: https://studfile.net/preview/4603166/page:32/. Оба термины очень важны, так как известно, что «как лодку назовешь, так она и поплывет»…

А вот, что по этому поводу написано в комментарии к тексту DrCroco обо мне (https://ru-cs.livejournal.com/7377.html): «Да, я тоже в свое время поразился этой ситуации... Но знаете, в чем забавная деталь? Словосочетание «автоматное программирование» никто не догадался в свое время «закопирайтить». А г-н Шалыто догадался! И что теперь? Попробуйте найти этот термин в другом месте, без ссылок на Шалыто» (rg_software). И это написал не мой знакомый или мой ученик...

А еще я предложил термин Automata-Based Control (Shalyto A.A. Automata-Based Programming and Automata-Based Control. 2009. http://is.ifmo.ru/articles_en/_2009_10_07_automata_based_programming.pdf). Интересно, что на русском языке термин «Автоматное управление» был предложен не мной: он был использован в названии книги «Автоматное управление асинхронными процессами в ЭВМ и дискретных системах. Под редакцией В.И. Варшавский. М.: Наука, 1986. ­­­ 398 c.», однако в английском переводе этой книги была применена совсем другая терминология: Self-Timed Control of Concurrent Prosses. Kluwer Academic Publishers. Editor: V.I. Varshavsky. 1990.

Термин «Автоматное управление» использовал также и я, но значительно позднее: в 2009-2011 гг. в рамках «Аналитической ведомственной целевой программы «Развитие научного потенциала высшей школы». «Проведение фундаментальных исследований в области естественных, технических и гуманитарных наук. Научно-методическое обеспечение развитие инфраструктуры вузовской науки» мы в Университете ИТМО выиграли грант на выполнение работ по теме: «Адаптивное и автоматное управление мобильными роботами». Руководители – А.А. Бобцов и А.А. Шалыто.

В 2008 г. мы познакомились с выдающимся учителем информатики из известного на всю страну московского лицея «Вторая школа» Ильей Дединским. Он привез к нам на кафедру трех школьников не старше восьмого класса, прослушав которых Георгий Корнеев, сказал, что если бы его так учили программированию в школе, то не знает каких бы высот добился. Один из этих ребят восьмиклассник Леонид Столяров стал заниматься автоматным программированием, потом увлек еще парочку школьников. В результате были опубликованы следующие работы: 1. Столяров Л.В., Дединский И.Р., Шалыто А.А. Трансляция описаний автоматов, представленных в формате Microsoft Visio, в исходный код на языке C // Прикладная дискретная математика. Приложение. 2009. № 1, c. 81-83. http://www.lib.tsu.ru/mminfo/000349342/04-01/image/04-01-073.pdf. 2. Столяров Л.В.Трансляция описаний автоматов, представленных в формате Microsoft Visio в исходный код на языке C // Компьютерные инструменты в образовании. 2009. № 5, с. 35-44. http://is.ifmo.ru/works/_2010_01_21_stolyarov.pdf. 3. Столяров Л.В., Петряйкин Ф.А., Уваров Н.С. Разработка платформы для автоматного моделирования и проведения соревнований автоматных интеллектов с трехмерной визуализацией /Материалы II Международной научно-практической конференции «Объектные системы-2010» (Зимняя сессия). Ростов-на-Дону. 2010, с. 75-81. http://is.ifmo.ru/works/_2010_12_25_stoljarov.pdf. А здесь (http://vimeo.com/9122399) опубликовано видео про созданную этими ребятами игровую платформу, реализованную с использованием автоматного программирования.

После общения с нами Дединский написал в газету для учителей информатики России статью: Дединский И.Р. Почему мы стали заниматься автоматным программированием? // Информатика. 2009. № 8, с. 8, 9. http://inf.1september.ru/view_article.php?ID=200900802, http://is.ifmo.ru/automata_school/_dedinskij.pdf. В ней, в частности, говорится: «Помню, будучи студентом, был удивлен одному из неформальных советов собирающимся заниматься научной работой: выбирай не тему, выбирай руководителя. Поэтому, когда я узнал о том, что в Университете ИТМО есть факультет, кафедра и люди, занимающиеся некой современной тематикой (автоматным программированием), доступной для понимания сильными школьниками, и не гнушающиеся с этими школьниками всерьез и напряженно работать – то, как говорят, я «сделал стойку». Почему я сказал «некой тематикой» – потому что не тема красит научный коллектив, а коллектив – тему, и да простит меня Анатолий Абрамович Шалыто за такие слова, если бы он и его коллектив занимались чем-то другим, я все равно бы сделал эту «стойку», выбирая не тему – выбирая людей». Таким был выданный нам аванс, который, к сожалению, мы оправдали лишь частично.

В 2008 г. мы получили премию Правительства РФ по образованию (https://rg.ru/2009/01/16/premii-obrazovanie-dok.html), которая имела такое название: «Инновационная система поиска и подготовки высококвалифицированных специалистов в области производства программного обеспечения на основе проектного и соревновательного подходов». Я был включен в авторский коллектив за создания подхода к обучению студентов проектному подходу на основе автоматного программирования (http://is.ifmo.ru/award/_award.pdf).

В этом году в Ярославском ГУ была защищена диссертация: Кубасов С.В. Верификация автоматных программ в контексте синхронного программирования (http://is.ifmo.ru/disser/kubasov_disser.pdf).

В 2009 г. было опубликовано первое издание книги Поликарпова Н.И., Шалыто А.А. Автоматное программирование. СПб.: Питер. 2009, содержащее содержащее издательские неточности из-за нашей невнимательности при чтении верстки (http://is.ifmo.ru/automata/shalytobook/).

Забавно, что какое-то время одна из полок в Доме книги в Питере выглядела так: Д. Кнут, Н. Поликарпова и А.А. Шалыто, Б. Мейер (http://is.ifmo.ru/books/book_dk). Вот рецензии на нашу книгу: http://is.ifmo.ru/books/_trudy_spiiran.pdf, http://is.ifmo.ru/books/Pages_30-31_from%20itn_125(2009-05).pdf, http://is.ifmo.ru/books/hard, а что написал на нашей книге Джон Хопкрофт можно посмотреть здесь: http://is.ifmo.ru/books/hopkroft_and_book.

В 2009, 2010 гг. рамках Федеральной целевой программы «Научные и научно-педагогические кадры инновационной России» на 2009–2013 годы. «Проведение научных исследований целевыми аспирантами» мы выиграли открытый конкурс на выполнение НИР по направлению «Информатика» по теме «Разработка методов машинного обучения на основе генетических алгоритмов для построения управляющих конечных автоматов». Руководитель ­– Ф.Н. Царев.

В 2009-2011 гг. в рамках Федеральной целевой программы «Научные и научно-педагогические кадры инновационной России» на 2009-2013 годы. «Проведение научных исследований молодыми ученымикандидатами наук» мы выиграли открытый конкурс на выполнение НИР по направлению «Информатика» по теме «Разработка методов совместного применения генетического и автоматного программирования для построения систем управления беспилотными летательными объектами». Руководитель – В.С. Гуров.

В те же годы в рамках Федеральной целевой программы «Научные и научно-педагогические кадры инновационной России» на 2009-2013 годы. «Проведение научных исследований научными группами под руководством кандидатов наук» мы выиграли открытый конкурс на выполнение НИР по направлению «Механика», «Информатика», «Математика» по теме «Методы повышения качества при разработке автоматных программ с использованием функциональных и и объектно-ориентированных языков программирования». Руководитель – Д.Г. Шопырин.

В 2010 г. было опубликовано второе издание книги Поликарпова Н.И., Шалыто А.А. Автоматное программирование. СПб.: Питер, в котором издательские неточности были устранены. (https://www.piter.com/product/avtomatnoe-programmirovanie-2-e-izd).

18.10.2010 г. у меня был пленарный доклад «Автоматное программирование» на Второй российской конференции с международным участием «Технические и программные средства систем управления, контроля и измерения» в организации, которую в молодости я почти что боготворил – Институте проблем управления РАН. С текстом этого доклада можно ознакомиться по адресу http://is.ifmo.ru/works/2010/UKI-shalyto-automata-programming.pdf.

22.11.2010 г. я и Федор Царев были в ETH (Цюрих) на конференции, посвященной шестидесятилетию Бертрана Мейера, который в то время начинал работать на нашем факультете Университета по совместительству. На фотографиях (https://vk.com/id1077823?z=album1077823_122563144) изображены: Никлаус Вирт, Эрих Гамма, Джозеф Сифакис, Давид Парнас, Юрий Гуревич, Андрей Терехов и другие участники конференции.

Отмечу, что в свое время я попал в очень хорошую компанию – в «Bertrand Meyer's gallery of computer scientists» (http://se.inf.ethz.ch/old/people/meyer/gallery/), в которой есть все упомянутые выше ученые, но потом «Бертранова любовь» ко мне вместе с моим портретом исчезла, как впрочем, и любовь к ИТМО.

В Цюрихе произошла интересная история, начало которой я описал еще в 2003 г. и назвал «Лучше, чем документация на телевизор» (http://is.ifmo.ru/reflections/mystories/): «Один мой студент, увидев документацию на проект создания программы, выполненный по Switch-технологии, сказал задумчиво: «Это лучше, чем документация на телевизор. Это, видимо, как документация на системы управления подводной лодкой».

Вот ее продолжение. Когда на конференции в ETH, я показал одному из докладчиков – David Parnas (https://en.wikipedia.org/wiki/David_Parnas) – классно оформленную проектную документацию на программу (http://is.ifmo.ru/projects/dg/), он незамедлительно предположил, что я связан с военно-промышленным комплексом, так как, по его мнению, в иных местах документация так хорошо не оформляется.

Мое отрицание этого факта, он всерьез не воспринял, так как сам был оттуда и этого, в отличие от меня, не скрывал. Да и как я мог «не попасться», если даже в указанной выше статье в Wikipedia о Parnas, есть такие слова: «He is also noted for his advocacy of precise documentation» – он пропагандировал точную (четкую, аккуратную) документацию.

Еще одна история, произошедшая там, состояла в том, что я хотел рассказать Джозефу Сифакису (одному из создателей метода верификации Model Checking, за который они получили премию Тьюринга) о том, что их метод классно работает на автоматных программах. Это объясняеться тем, что описание парадигмы Model Checking начинается со слов: «По программе строится модель» со всеми вытекающими отсюда неприятными последствиями, в то время как при проименении автоматного программирования «по автоматной модели формально и изоморфно строится программа». После этого все встает на свои места, и можно эффективно применять Model Checking к автоматной модели, с которой все начинается.

Однако до доклада я не смог узнать Сифакиса – так сильно он изменился по сравнению с опубликованными ранее фотографиями, а после доклада – он сразу же исчез, так как обиделся ... на юбиляра, который тоже не узнал его. Так Сифакис остался в неведении об удобстве верификации их методом именно автоматных программ... Обе эти истории описаны здесь: https://vk.com/@1077823-luchshe-chem-na-televizor.

Сегодня вместо термина «верификация автоматных программ» я использую (https://ntv.ifmo.ru/file/article/21921.pdf) термины «верификация автоматных моделей» (для простейших систем управления технологическими процессами) и «валидацией автоматных спецификаций» (систем управления, используемых на практике).

Несколько слов о спецификациях в автоматном программировании. Это система взаимосвязанных (в том числе иерархических) графов переходов. При этом она может быть формально и изоморфно реализована на различных языках программирования, как это описано в моей книге о Switch-технологии. Однако наибольший кайф можно получить, когда языки спецификации и программирования совпадают – имеет место исполняемая спецификация, как это, например, имеет место при использовании инструментального средства StateFlow, применение которого изложено в моих работах с Ю.Ю. Янкиным.

Ссылки на некоторые работы по Switch-технологии автоматному программированию с 2003 по 2010 г. приведены здесь: http://is.ifmo.ru/aboutus/ssilki_switch/.

В 2011 г. мы опубликовали два книжных издания:

– Вельдер С.Э., Лукин М.А., Шалыто А.А., Яминов Б.Р. Верификация автоматных программ. СПб.: Наука. 2011. 242 с. http://is.ifmo.ru/verification/velder_verification_posobie_nauka.pdf);

– Вельдер С.Э., Лукин М.А., Шалыто А.А., Яминов Б.Р. Верификация автоматных программ. Учебное пособие. СПбГУ ИТМО, 2011. 242 с. http://is.ifmo.ru/verification/velder_verification_posobie.pdf.

Сегодня эти книги я бы назвал «Валидация автоматных спецификаций».

В 2011 г. был опубликован второй тираж второго издания книги Поликарповой Н.И., Шалыто А.А. Автоматное программирование.

В 2011-2013 гг. рамках Федеральной целевой программы «Научные и научно-педагогические кадры инновационной России» на 2009–2013 годы. «Проведение научных исследований научными группами под руководством докторов наук по направлениям «Механика», «Информатика», «Математика» мы выиграли конкурс на выполнение работ по теме «Разработка метода машинного обучения на основе алгоритмов решения задачи о выполнимости булевой формулы для построения управляющих конечных автоматов». Руководитель – А.А. Шалыто. Ответственный исполнитель – В.И. Ульянцев. Мы заняли первое место в стране в этом труднейшем конкурсе.

В 2011 г. был опубликован «Научно-технический вестник СПбГУ ИТМО. 2011. № 2 (72)». http://is.ifmo.ru/works/. Он содержит 17 наших статей и имеет подзаголовок «Технологии автоматного программирования и искусственного интеллекта».

В этом же году В.И. Шелехов опубликовал статью «Язык и технология автоматного программирования» (https://persons.iis.nsk.su/files/persons/pages/automatProg.pdf), в которой он пишет, что концепция автоматного программирования разработана Анатолем Шалыто. Наконец-то, не только Куракин из «Войны и мира», но и я стал Анатолем!

В 2012 г. была опубликована статья «Автоматное программирование как новый способ создания автоматических торговых систем» (https://www.mql5.com/ru/articles/446). Во введении к ней сказано: «В России А.А. Шалыто (заведующий кафедрой «Технологии программирования» СПбГУ ИТМО) в 1991 г. разработал подход к программированию, названный им «автоматное программирование». Я думаю, что читателям будет интересно увидеть простоту и легкость автоматного программирования, на основе которого создана Switch-технология. Это настолько удобное программирование трейдерских систем, что лучше не придумаешь. Такой стиль очень точно вписывается в систему принятия сложнейших решений».

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

В 2012 г. рамках Федеральной целевой программы «Научные и научно-педагогические кадры инновационной России» на 2009-2013 гг. мы выиграли конкурс (первое место при 55 организациях) на заключение государственного контракта на проведение научных исследований научной группой под руководством доктора наук в области «Механика», «Информатика», «Математика» по теме «Разработка методов построения управляющих конечных автоматов по обучающим примерам на основе решения задачи удовлетворения ограничений». Руководитель – А.А. Шалыто. Ответственный исполнитель – В.И. Ульянцев. Предыдущий конкурс был по направлениям «Механика», «Информатика», «Математика».

В 2014 г. появился такой текст: «Концепция автоматного программирования разработана Анатолием Шалыто, в том числе в интеграции с объектно-ориентированным программированием. Автоматная программа определяется как совокупность классических конечных автоматов. Используются графическое и текстовое представления программы. Управляющие состояния являются значениями переменной, соответствующий этим состояниям. При реализации автоматной программы применяется Switch-технология. Термин «автоматное программирование» и его аналог «Automata-Based Programming» применяется только в России. Тем не менее, автоматные методы программирования заложены во многих языках. Автор благодарен А.А. Шалыто за его работы по автоматному программированию. Предлагаемое мной понятие автоматной программы концептуально не отличается от введенного Анатолием Шалыто, однако различия в языке и технологии существенны» (Шелехов В.И., http://persons.iis.nsk.su/files/persons/pages/automatProg.pdf).

Интересно, что и в следующей работе того же 2014 г. Шелехов, с которым я не знаком, еще раз благодарит меня: «Автор благодарен А.А. Шалыто за работы по автоматному программированию, стимулировавшие мои исследования» (https://persons.iis.nsk.su/files/persons/pages/req_tech.pdf).

В 2014, 2015 гг. в рамках конкурса инициативных научных проектов РФФИ, выполняемых молодыми учеными «Мой первый грант», мы выиграли два гранта для выполнения работ по темам «Разработка метода построения конечных автоматов для управления объектами со сложным поведением на основе обучающих примеров» (Казаков С.В., Бужинский И.П. (руководитель). и «Разработка методов автоматизированного построения надежного программного обеспечения по обучающим примерам и темпоральным свойствам на основе автоматного подхода» (Чивилихин Д.С., Ульянцев В.И. (руководитель)).

В 2014-2016 гг. в рамках конкурса РФФИ мы получили право на выполнение работ по теме «Разработка муравьиных алгоритмов для построения конечных автоматов», а в рамках государственного задания Министерства образования и науки РФ (раздел «Компьютерные и информационные науки») – по теме «Технология разработки программного обеспечения систем управления ответственными объектами на основе методов машинного обучения и конечных автоматов». Руководитель – А.А. Шалыто.

В 2014 г. в сети появилась работа Карпов В.Э. Автоматное программирование и робототехника (http://raai.lgg.ru/about/persons/karpov/), а письмо Карпова ко мне размещено здесь: : http://is.ifmo.ru/books/karpov_letter.

В 2015-2016 гг. появилась надежда на применение автоматного программирования при создании больших программных систем (Шалыто А.А. Может быть, при построении определенного класса больших программных систем лед тронулся? 29.06.2015. https://is.ifmo.ru/main/bank.pdf; Шалыто А.А. Автоматное программирование начинает новую жизнь. 15.01.2016. https://is.ifmo.ru/main/new-life.pdf). Внедрение состоялось в платформе Corezoid, но сегодня в 2024 г. все ссылки о внедрении в этих статьях не действуют.

В 2016 г. наша книга Поликарпова Н.И., Шалыто А.А. Автоматное программирование. СПб.: Питер. 2011, 176 с. стала вечной, так как была опубликована в цифровой форме (https://www.ozon.ru/context/detail/id/28260411/) и распространяется в электронном виде, в частности, с помощью портала «ЛитРес» (https://www.litres.ru/anatoliy-shalyto/avtomatnoe-programmirovanie-585075/otzivi/).

Вот отзыв, приведенный там: «Мой первый опыт программирования в данном стиле (можно назвать методом) был связан с разработкой ПО под микроконтроллер STM32 для задачи управления несколькими двигателями. Коллега порекомендовал почитать книгу Шалыто «Автоматное программирование» и воспользоваться подходами, приведенными там. Результат превзошел ожидания, объем кода удалось сократить раза в два, читаемость улучшилась. Книга будет полезна в первую очередь начинающим разработчикам – примеры понятны, язык доступен. «Автоматное программирование» оказало существенное влияние на мой стиль разработки ПО не только для микроконтроллеров, но и десктопных систем» (AlexisVaBel). Теперь еще один отзыв: «Автоматное программирование позволяет единообразно осуществлять разработку программного обеспечения, предназначенного для управления логическими контроллерами. Очень хорошо, что автор настойчиво продвигает свою идею. И хорошо то, что это отечественное ноу-хау» (Dastini).

В 2016 г. Ф. Новиков и И. Афанасьева в статье «Кооперативное взаимодействие автоматных объектов // Информационно-управляющие системы. 2016. № 6, с. 50-64» (http://i-us.ru/index.php/ius/article/view/4265) написали следующее: «Уже более четверти века развивается парадигма автоматного программирования – подход к описанию поведения, основанный на явном выделении состояний. Несравненные заслуги в развитии и продвижении этого подхода принадлежат профессору А.А. Шалыто».

У этих авторов было еще несколько статей по этой тематике: 1. Levonevskiy D., Novikov F., Fedorchenko L,, Afanasieva I. Verification of internet protocol properties using cooperating automaton objects / Proceedings of the 12th International Conference of Information and Networks. 2019. Article 25, pp. 1-4. https://dl.acm.org/doi/10.1145/3357613.3357639. 2. Афанасьева И.В., Новиков Ф.А., Федорченко Л.Н. Методика построения событийно-управляемых программных систем с использованием языка спецификации CIAO // Труды СПИИ РАН. 2020. Т. 19. № 3, с. 481-514. https://ia.spcras.ru/index.php/sp/article/view/13269/12190. 3. Афанасьева И.В., Новиков Ф.А., Федорченко Л.Н. Verification of event-driven software systems using the specification language of cooperating automata objects (Верификация событийно-управляемых программных систем с использованием языка спецификации взаимодействующих автоматных объектов) // Научно-технический вестник информационных технологий, механики и оптики, 2023. Т. 23. № 4, с. 750-756. https://ntv.ifmo.ru/file/article/22199.pdf.

А вот, что пишет «моими словами» профессор Е.М. Лаврищева в учебно-методическом пособии «Программная инженерия. Тема 1. Теория программирования. М.: МФТИ, 2016, 48 с.» (http://www.computer-museum.ru/books/lavrischeva_1_programming.pdf): «Автоматное программирование основано на применении конечных автоматов для описания поведения программ. Автоматы задаются графами переходов, для различения вершин в которых вводится понятие «кодирование состояний». Особенность автоматного программирования состоит в том, что графы переходов используются при спецификации, проектировании, реализации, отладке, документировании и сопровождении программ. (Они могут применяться также и как язык программирования, А.Ш.).

Программирование начинается «через состояния», а не «через события и переменные», что позволяет лучше понять и специфицировать задачу и ее составные части. Переход от графового представления к текстовому осуществляется формально и изоморфно с применением оператора switch (в языке С) или ее аналогов (в других языках). Поэтому стиль автоматного программирования часто называют «Switch-технологией». В этом случае используется многозначное кодирование состояний.

В настоящее время этот стиль развивается в нескольких вариантах, различающихся как классом решаемых задач, так и типом вычислительных устройств, на которых осуществляется программирование. Известны, например, его варианты для систем логического управления, в которых события отсутствуют, входные и выходные воздействия являются двоичными переменными, а операционная система работает в режиме сканирования.

Автоматный подход распространен и на событийные системы, называемые также реактивными. В них входные воздействия используют события, выходные воздействия – произвольные функции (автомат в этом случае является гибритдным), а в качестве операционных систем – любые операционные системы реального времени. Для программирования событийных систем с применением автоматов применяется процедурный подход, такой стиль программирования называется «программированием с явным выделением состояний». Известен также подход, основанный на совместном использовании объектного и автоматного стилей и называемый «объектно-ориентированным программированием с явным выделением состояний». В контексте обеспечения качества применение автоматов проясняет поведение программы, а наличие хорошей проектной документации упрощает ее изменение путем рефакторинга программы».

В 2016 г. проходил конкурс по проекту: «Проведение исследований по приоритетным направлениям с участием научно-исследовательских организаций и университетов Швеции и/или Финляндии и/или Норвегии и/или Великобритании». На конкурс было подано 69 заявок, из которых 56 были допущены до конкурса. Первое место завоевал проект «Разработка методов, средств и технологий проектирования, верификации и тестирования ответственных киберфизических систем», представленный Университетом ИТМО совместно с университетом Aalto. Руководитель – ­А.А. Шалыто.

В 2017-2019 гг. в рамках государственного задания Министерства образования и науки РФ. «Инициативные научные проекты фундаментального характера» мы получили право на выполнение работ по теме «Технология разработки программного обеспечения систем управления ответственными объектами на основе глубокого обучения и конечных автоматов». Руководитель – ­ А.А. Фильченков.

20.01.2017 г. в газете «Коммерсант» появилась статья «В Росатоме нашли проблемы с ядром» (https://www.kommersant.ru/doc/3196399), в которой обсуждался вопрос о проблемах с программным обеспечением на некоторых атомных станциях России. В ней, в частности, отмечалось отсутствие документации на программную платформу.

27.02.2017 г. в ответ я написал статью «Программа как инженерный продукт, или зачем заказчику понимать структуру ПО изнутри» (http://news.ifmo.ru/ru/science/it/news/6472/), в которой отметил, что с 1991 г. я развиваю в России автоматный подход к проектированию программ, применение которого уменьшило бы число проблем, указанных в статье, например в части проектной документации на программное обеспечение (ПО). Эта документация при использовании предлагаемого мной подхода в наглядной форме содержит алгоритмы управления, контроля и сигнализации. В моей статье, в частности, говорится: «Имеющееся ПО не позволяет понимать, как программа будет себя вести в тех или иных состояниях, как именно и какие в нее вносили изменения. Более того, в тексте статьи в «Коммерсанте» сказано, что на этот софт нет никакой документации, а не только проектной. И это при том, что объект автоматизации – ядерный реактор (Таккер К. Как управлять ядерным реактором. М.: ДМЕ, 2022, 230 с., https://dmkpress.com/files/PDF/978-5-93700-132-0.pdf), и почти никто, кроме, возможно, разработчика, которого, естественно, нет на объекте, а то уже и в живых, не понимает, как работает программа, управляющая им. И такой бардак с ПО творится почти везде в мире. Нормально ли это?»

В тот же день эта статья вышла и на английском: Why Design Programs: Anatoly Shalyto on Automata-Based Programming (http://news.ifmo.ru/en/science/it/news/6472/).

03.03.2017 г. на Хабре пресс-служба Университета ИТМО на базе этой моей статьи опубликовала текст «Лекарство от болезни»: автоматное программирование» (https://habr.com/ru/company/spbifmo/blog/323122/)».

В это время стало известно, что разработана отечественная среда моделирования технических системами SimInTech, в которой, в частности, могут применяться конечные автоматы (https://help.simintech.ru/#metodika/konechnye_avtomaty/konechnye_avtomaty_v_simintech.html). Однако при ее использовании они применяются крайне редко. В НПО «Аврора» эта среда используется, а автоматы в ней нет (видимо, из-за громоздкости их изображения, https://simintech.ru/). С этой средой можно ознакомиться не только по документации, но и здесь: Карташов Б.А., Шабаев Е.А., Козлов О.С., Щекатуров А.М. Среда динамического моделирования технических систем SimInTech. М.: ДМК Пресс. 2017. 424 c. (https://dmkpress.com/catalog/computer/handbooks/978-5-97060-482-3/).

В 2018-2020 гг. в рамках гранта РФФИ мы получили право на выполнение работ по теме «Разработка методов машинного обучения для синтеза автоматных моделей систем управления с учетом темпоральных свойств и временных отсечек на основе пропозиционального кодирования». Руководитель – В.И. Ульянцев.

В эти же годы мы выиграли молодежный грант РФФИ на проведение работ по теме «Разработка эффективных методов машинного обучения для построения детерминированных конечных автоматов на основе решения задачи выполнимости». Руководитель – И.Т. Закирзянов.

Кто-то в комментариях к одному из постов спросил, используется ли где-либо автоматное программирование. На это Михаил Глухов ответил: «Да, я не только видел использующих эту технологию, но и сам из них». После этого он написал мне: «Благодарю Вас за автоматное программирование, которое я неоднократно применял в своих проектах, начиная с той Вашей лекции, на которой впервые узнал о нем и получил книжку. Это было примерно 20 лет назад. Теперь уже у меня появились свои ученики, и я хотел бы попросить у Вас посоветовать, как проще научить их автоматному подходу». «Прочесть статью «Автоматное программирование» (https://vk.com/@1077823-vtomatnoe-programmirovanie)», – ответил я.

В 2018 г. мой давний знакомый Вячеслав Любченко выступил на тему «Автоматное программирование: определение, модель, реализация» (https://www.youtube.com/watch?v=SrnjMx2G2MM, https://habr.com/ru/articles/682422/) в лаборатории Александра Константиновича Петренко в Институте системного программирования РАН (http://sdat.ispras.ru/?p=802). Доклад начинался с меня :-). Он что-то говорит на эту тему – даже не критикует, а потом долго рассказывает о своем.

При этом отмечу, что создание несколько десятков ответственных систем моими аспирантами из «НПО «Аврора» Юрием Янкиным (https://www.youtube.com/watch?v=YNWdmnwHZi8) и Антоном Калачинским подтверждает правильность поведения Любченко в том смысле, что он меня не критикует! По-моему, в его лекции упоминаются только одна фамилия, одно имя и одно отчество – мои.

Access restricted
Access to this video has been restricted by its creator

Перекличку со мной Любченко ведет с давних пор. Вот примеры статей «обо мне»: «Машина Тьюринга, как модель автоматных программ» (https://habr.com/ru/post/481998/), «Автоматы – вещь событийная?» (https://habr.com/ru/post/483610/) и «Автоматные рекурсивные вычисления» (https://habr.com/ru/post/492958/). При этом отмечу, что статьи по этой тематике я публиковал еще в начале двухтысячных. Приведу два примера: Туккель Н.И., Шалыто А.А. От тьюрингова программирования к автоматному // Мир ПК. 2002. № 2, с. 144-149 (http://is.ifmo.ru/works/turing/) и Туккель Н.И., Шалыто А.А., Шамгунов Н.Н. Реализация рекурсивных алгоритмов на основе автоматного подхода // Телекоммуникации и информатизация образования. 2002. № 5, с. 72-99 (http://is.ifmo.ru/works/recurse/).

В 2019 г. на своем YouTube-канале (https://www.youtube.com/@AnatolyShalytoITMO) я выложил лекцию про автоматное программирование в лучшем качестве (https://www.youtube.com/watch?v=PPWTxceMutk), чем она была опубликована на том же канале на два года раньше (https://www.youtube.com/watch?v=tUo9ssPVa4c). Было несколько комментариев на нее: «Смотрел на одном дыхании, огромное спасибо за лекцию и привет родной Альма-матер!» (Александр Сальников), «Большое спасибо. Вспомнил родной МехМат» (Олег Масальгов), «Купил Вашу книгу. Спасибо за лекцию. Пожалуйста, выкладывайте больше» (Denys Bushulyak), «Супер!» (Сергей Куксов), а Андрей Миронов из МГУ написал: «Шалыто, как всегда, гениален». Удивило... Более содержательным был пост от Кирилла Калишева «Я помню, когда еще был студентом в 90-х, работал в промышленной автоматизации, real time control и сложные состояния... Ваша книжка по Switch-технологии про то, что всю эту помойку нужно и можно генерировать из высокоуровневых описаний была откровением! Спасибо!»

А вот, что написал неизвестный мне Vadim Gor: «Анатолий Шалыто (хотя я с Вами и не знаком), хочу засвидетельствовать свое почтение за изобретение Switch-технологии! Чудесная вещь. Она близка к системной методологии, где имеет прямое отношение к моделированию доминант и детерминант в сложных системах. В молодости я с очень большим воодушевлением ее использовал в своей работе. Да и сейчас – тоже. На всех программистских специальностях ее надо изучать сразу, чтобы мозги у программистов сразу вставали на место. Потом их ставить труднее. В своей лекции Вы все очень правильно говорите, начиная от того, что «графы должны быть по возможности планарны, а схемы красивы». Автоматная модель – это несравнимо лучше превентивного кодерства».

Потом Вадим написал текст «О спорах относительно парадигм программирования», в котором, в частности, сказано: «Желание написать такой материал навеяло автоматное программирование (Switch-технология) от Анатолия Шалыто, предложившего его. Дело, конечно, не в открытии многоуровневых конечных автоматов для программирования, а в их удобном технологическом оформлении, сильно упрощающем как макетирование систем до непосредственного программирования на языках программирования, так и верификацию кода, вместе множеством достоинств, связанных с проблемами согласования алгоритмов с заказчиками программ. Автоматное программирование вполне совместимо с объектно-ориентированным программированием (ООП) и является средством построения «крепких» каркасов ООП-программ и, естественно, функционального кода тоже. Следовательно, хотелось бы раскрыть «Настоящее ООП = ООП + Каркасное программирование + Шаблоны проектирования + Автоматное программирование», не противопоставляя его функциональному программированию, а просто показав приверженцам функционального подхода место последнего в указанной троице (каркасы и шаблоны по большому счету одно и то же, только на разных масштабах архитектуры)».

02.04.2019 г. Валерий Ракитин прочитал блестящую лекцию на тему «Бесконечные возможности конечных автоматов» (https://www.youtube.com/watch?v=6xzn78onzQk). Автор предлагает «писать» программы до того, как начать кодировать. По его мнению, должны создаваться «вечные» («бессмертные») программы за счет того, что в них в них легко вносить изменения. Методологии, направленные на это, Ракитин назвал «экологическим программированием» (eco-programming). Это может, например, пригодиться во время тендера, когда его организаторы в последний момент меняют условия задачи с целью обеспечения преимуществ той команды, в которой организаторы тендера заинтересованы. Та из них, что сможет быстро внести изменения в свой прототип, имеет шанс победить даже ангажированную команду. К одной из таких методологий автор относит подход, основанный на применении конечных автоматовавтоматное программирование в моей терминологии. Вот реакция одного из слушателей на эту лекцию: «Не каждому дано сразу понять, что за конечными автоматами будущее!» При этом, однако, автор понимает, что при использовании автоматного подхода только на первый взгляд «все понятно и все довольны. На деле, же не все так просто потому, что это совершенно другой подход к программированию, своя парадигма программирования и этому надо учить и учиться».

Вот как парадигма автоматного программирования сформулирована мной: «Парадигма автоматного программирования состоит в представлении и реализации программ как систем автоматизированных объектов управления» (Шалыто А.А. Парадигма автоматного программирования // Научно-технический вестник СПбГУ ИТМО. 2008. Выпуск 53. Автоматное программирование, с. 3-24. http://is.ifmo.ru/works/2008/Vestnik/53/01-automata-based-programming.pdf). С идеями парадигм программирования можно ознакомиться здесь: https://znanierussia.ru/articles/Парадигмы_программирования.

13.12.2019 г. была опубликована лекция А. Попцова «Введение в автоматное программирование» (https://www.youtube.com/watch?v=7LwqznbApaY), которая имеет подзаголовок «Автоматное программирование. Секретное оружие программиста при решении сложных задач». Автор считает, что программы – это способ выражения идей, и поэтому они должны быть написаны по-человечески. Это во многом обеспечивается применением автоматного программирования. Интересно, что в списке литературы (засечки с 1:27:56 по 1:29:44) только наши работы: книга с Поликарповой, названная канонической, моя книга о Switch-технологии, статья с Туккелем и сборник ИТМО (Выпуск 53 за 2008 г.), целиком посвященный автоматному программированию.

В 2019-2021 гг. мы провели исследования по гранту РФФИ по теме: «Разработка методов машинного обучения на основе SAT-решателей для синтеза модульных логических контроллеров киберфизических систем». Руководитель – Д.С. Чивилихин.

В 2020 г. нами был выигран конкурс «Научное наставничество» на лучшие проекты фундаментальных научных исследований, выполняемые молодыми учеными под руководством ведущего ученого – наставника, проводимого совместно Российским фондом фундаментальных исследований и образовательным фондом «Талант и успех» («Сириус») – https://www.rfbr.ru/rffi/ru/rffi_contest_results/o_2099426. Тема проекта «Разработка методов синтеза конечно-автоматных алгоритмов управления для программируемых логических контроллеров в распределенных киберфизических системах». Молодые ученые: Д.М. Суворов, А.Л. Павленко, К.И. Чухарев, П.А. Овсянникова, И.Т. Закирзянов, Д.С. Чивилихин и В.И. Ульянцев. Наставник – В.В. Вяткин.

24.06.2020 г. на «Хабре» была опубликована статья Александа Соловьева (Dr_Dash) «Автоматное программирование – новая веха или миф? Часть 1», которая популяризирует этот стиль программирования (https://habr.com/ru/post/331556/). Седьмого июля появилась вторая ее часть, в которой термин «миф» уже не используется: «Автоматное программирование. Часть 2. Диаграммы состояний и переходов» (https://habr.com/ru/post/332508/), а 11 ноября – третья. В ней было продолжено обсуждение диаграмм состояний и переходов (https://habr.com/ru/post/332664/). 18 ноября появилась четвертая часть, посвященная эффективности автоматно-спроектированных программ (https://habr.com/ru/post/341888/). 25 ноября и второго декабря Соловьев опубликовал двухчастную статью под названием «Автоматный практикум» (https://habr.com/ru/post/342048/, https://habr.com/ru/post/343736/).

Отмечу, что в этих статьях какая-либо библиография отсутствует, как будто в этом вопросе автор с Луны свалился, как впрочем, и его читатели – на Луне, действительно, могут не знать, что этот подход к программированию на Земле развивается более 30 лет (Harel D. Statecharts: a Visual Formalism for Complex Systems // Science of Computer Programming. V. 8. 1987. Issue 3, pp. 231-274). Хотя в последних комментариях ко второй статье Соловьев, все-таки, написал: «Стоит отдать должное Шалыто (если считает нужным – пусть отдает, А.Ш.): он популяризирует автоматное программирование судя по его книгам уже лет 30этакий Дон Кихот и первопроходец. Может он и увидит эру автоматного программирования». В этот момент «проснулся» один его читатель: «Если еще не знакомы, возможно Вам будет интересно познакомится с работами Анатолия Абрамовича Шалыто (http://www.softcraft.ru/auto/). Можно хотя бы сюда зайти: http://www.softcraft.ru/auto/switch/aptech/. Ну, или совсем кратко: https://ru.wikipedia.org/wiki/Switch-технология».

Среди курсов по обучению программированию на JavaScript на сайте «Хекслет» я обнаружил курс «Автоматное программирование», который был обновлен 23.08.2020 г., 23.09.2023 г. и 06.05.2025 г. (https://ru.hexlet.io/courses/js-abp).

Второго ноября 2023 г. сооснователь онлайн-школы «Хекслет»
Кирилл Мокевнин прочел лекцию на тему «Конечные автоматы как способ значительно упростить логику и понимание кода» (https://www.youtube.com/watch?v=knoVv2ncwVI), в начале которой он сказал: «Это очень важная тема. Она одна из самых важных в программировании. Эта лекция не о техниках, а о мышлении. Поняв эту тему, Вы будете видеть все системы через призму конечных автоматов». В этом ролике на засечке 12.35 появляется обложка нашей книги «Автоматное программирование» (https://is.ifmo.ru/books/_book.pdf).

Однако, до широкого признания автоматной парадигмы даже в России еще далеко, хотя отдельные проблески в этом отношении есть. Например, в книге DocCroco, который активно боролся со мной и с моим взглядом на автоматное программирование в Wikipedia (Столяров А.В. Программирование: ведение в профессию. III: системы м сети. М.: МАКС Пресс. 2017. 400 с., http://www.stolyarov.info/books/pdf/progintro_vol3.pdf) имеется раздел 6.4.5, названный «Сеанс работы как конечный автомат». Этот раздел заканчивается так: «Иногда говорят, что состояние в обычных имперсивных (построенных на приказаниях) программах присутствует неявно – в отличие от случая, когда состояние явным образом определяется значениями переменных. Такой стиль написания программ называют программирование в терминах явных состояний».

Эту тему автор продолжает в следующем томе книги: Столяров А.В. Программирование: ведение в профессию. IV: Парадигмы. М.: МАКС Пресс. 2020. 656 с., http://www.stolyarov.info/books/pdf/progintro_vol4.pdf). При этом в разделе «9.4.2. Программирование в терминах явных состояний» он пишет, что «такое программирование иногда называют автоматным программированием поскольку необходимый при этом стиль мышления очень похож на тот, что приходится применять при работе с формальными автоматами. Можно сказать, что «автоматное программирование как раз и состоит в переходе от неявных составляющих состояний выполнения программы к их явному указанию в виде значений переменных». В этом же разделе: «Парадигмы программирования – особенности мышления программиста. Они не в компьютере, а в голове программиста, определяя то под каким углом зрения программист рассматривает решение поставленной задачи». После этого автор вскользь упоминает «автоматную парадигму».

«Два» слова о склоке. Она не стоит и выеденного яйца, так как до тех пор, пока автоматное программирование не начнет широко внедряться на практике, это ни на что не влияет, так как даже «известное известно немногим» (Аристотель).

Далеко не у всех так плохо, как у DocCroco, дело обстоит с «автоматами» – некоторые их даже применяют в программировании, причем с приятными для меня комментариями. 25.02.2021 г. на Хабре появилась статья Ильи Казначеева «Автоматы на службе распределенных транзакций» (https://habr.com/ru/post/544042/), в которой рассказывается о доменах, построенных на основе конечных автоматов, и распределенных транзакциях, реализованных с их помощью. При этом автор пишет: «Термин «автоматизированный домен» был мной взят у Анатолия Шалыто (http://is.ifmo.ru/books/_book.pdf) по аналогии с его «автоматизированными объектами управления» и «автоматизированными классами» («автоматизированные объекты управления как классы»).

О работах В. Шелехова и М. Нейзова, а также одной из последних работ В. Зюбина, я написал в статье «О развитии автоматного программирования» (https://vk.com/@1077823-o-razvitii-avtomatnogo-programmirovaniya). Там, в частности, отмечено, что автоматное программирование излагается Шелеховым в курсе лекций в Новосибирском государственном университете.

Приведенный выше текст относится в основном к работам по автоматному программированию на русском языке. О предложенной мной терминологии на английском языке рассказано здесь: https://vk.com/@1077823-vtomatnoe-programmirovanie. Выше была упомянута классическая работа Харела, опубликованная в 1987 г. Приведу также книги, близкие по духу к тому, что делаю я:

1. Samek M. Practical Statecharts in C/C++: Quantum Programming for Embedded Systems. CMP Books, 2002. 387 p. https://www.state-machine.com/doc/PSiCC.pdf;

2. Samek M. Practical UML Statecharts in C/C++. Second Edition. Event-Driven Programming for Embedded Systems. CMP Books. 2009. 712 p. https://www.state-machine.com/doc/PSiCC2.pdf.

3. Application Note. A Crash Course in UML State Machines (Примечание по применению. Ускоренный курс по конечным автоматам UML). Quantum Leaps (https://www.state-machine.com/). 2015. 30 p. https://www.state-machine.com/doc/AN_Crash_Course_in_UML_State_Machines.pdf.

4. Wagner F., Schmuki R., Wagner Th., Wolstenholme P. Modeling Software with Finite State Machines. A Practical Approach (http://is.ifmo.ru/download/modelingsoftwarewithfinitestatemachinesapracticalapproach.pdf).

В 2007 г. историю о создании Statecharts, которая в некотором смысле напоминает рассказываемую мной о создании автоматного программирования (https://vk.com/@1077823-vtomatnoe-programmirovanie), поведал Дэвид Харел: Statecharts in the Making: A Personal Account (https://dl.acm.org/doi/10.1145/1467247.1467274). Он оказался предусмотрительнее :-) меня, так как сохранил и привел в статье черновики, посвященные созданию Statecharts. Когда он разрабатывал эти диаграммы, Интернета еще не было, а иностранные журналы мне были практически недоступны, но в своей книге 1998 г. на статью Харела 1987 г., указанную выше, я сослался. Может это и хорошо, что все, что я сделал в этой области, было сделано независимо – иначе либо «руки не поднялись», либо «опустились», а так многое удалось придумать самому и рассказать другим, в том числе и студентам.

Интересно, что в моих работах на английском языке, которые появлялись до выхода и после выхода моей книги о Switch-технологии, рецензенты не указывали мне на работы Харела – возможно, они и сами тогда их еще не знали. Этого даже не произошло и в 1995 г., когда я выступал в Monterey (California) с докладом на эту тему (http://is.ifmo.ru/science/_cognitive_properties_of_hierarchical_representations_of_complex_logic_structures.pdf) на Workshop «Architectures for Semiotic Modeling and Situation Analysis in Large Complex Systems», проходившем под руководством Джима Альбуса из Национального института стандартов и технологий США и Дмитрия Поспелова, которому предложенный мной автоматный подход к программированию понравился (https://vk.com/@1077823-vtomatnoe-programmirovanie).

Вопрос о приоритете в чем-либо (даже в достаточно узкой области) весьма сложный. Об этом, в частности, мой текст «Автоматное программирование, водка и буква Ё» (http://is.ifmo.ru/download/2008-03-17_automata.pdf), опубликованный еще в 2008 г., а также текст «О приоритете» (https://vk.com/@1077823-o-prioritete). Приведу примеры.

Первый пример: «Довод Шалыто о том, что именно он оформил программирование состояний в некую стройную систему, которую он назвал «автоматным программированием» и именно в этом его заслуга, вполне оправдан. Поэтому и говорят, что автоматное программирование изобрел Шалыто. Это как с буквой Ё. Мало кто знает что её придумала Екатерина Дашкова, но все знают что первым применять её начал Николай Карамзин, поэтому зачастую говорят, что буква Ё – буква Карамзина» (https://alexott.livejournal.com/321730.html?thread=1717698#t1717698). Это написал человек, с которым я не был знаком ни тогда, ни теперь.

Второй пример: «Есть история про исследования раствора ... из воды и спирта, которые проводил Дмитрий Менделеев, до открытия им Периодического закона. Представляете, как бы над ним некоторые смеялись сейчас, не открой он этот закон: «Водку на Руси давно пили, и зачем там что-то еще изучать, ха-ха-ха». А может быть, и тогда смеялись, но об этом ничего не известно. Зато теперь над ним никто не смеется – победителей, ведь, не судят, правда?».

Тот же Менделеев писал: «Справедливость требует не тому отдать наибольшую научную славу, кто первым высказал истину, а тому, кто сумел убедить в ней других, показал ее достоверность и сделал ее применимой», а другой Дмитрий – Поспелов говорил: «В науке первым часто оказывается не тот, кто сказал «А», а тот, кто сказал «Я».

Третий пример. Вот что сказал в подтверждение этих слов Нобелевский лауреат Жорес Алферов (https://dzen.ru/a/YE4ziQERgUR7k1Lxhttps://dzen.ru/a/YE4ziQERgUR7k1Lx): «Герберт Кремер (с ним Жорес Иванович разделил половину Нобелевской премии за разработку полупроводниковых гетероструктур, А.Ш.) свои теоретические работы по гетероструктурам публиковал в 1950-е годы, намного раньше меня. Я стал заниматься ими только в конце 1962-го. Поэтому он пионер, но он теоретик, а мы пионеры тоже, но практики: мы довольно рано поняли, что гетероструктуры в целом позволяют создавать принципиально новый класс материалов и на их основе можно иначе управлять потоками электронов и фотонов и создать новую электроникуhttps://dzen.ru/a/YE4ziQERgUR7k1Lx». https://dzen.ru/a/YE4ziQERgUR7k1Lxhttps://dzen.ru/a/YE4ziQERgUR7k1Lx

https://dzen.ru/a/YE4ziQERgUR7k1Lx

https://dzen.ru/a/YE4ziQERgUR7k1Lx

Четвертый пример. Кто знает, мыли ли врачи руки (https://ru.wikipedia.org/wiki/Мытьё_рук) перед принятием родов – видимо, кто-то мыл, а кто-то и нет. В результате от родильной горячки в одной из лучших клиник Европы умирала каждая шестая женщина. Игнац Земмельвайс (1818-1865), казалось бы, всего-то на всего, пытался внедрить в медицину практику мытья рук, инструментов и постельного белья хлорной водой. Его предложение опровергало сразу несколько догм, распространенных в медицине того времени, и поэтому большинство коллег категорически отказывались внедрять его практику. В конце концов, Земмельвайса (https://www.kinopoisk.ru/film/5069690) без его согласия поместили в психиатрическую больницу, где он и умер (https://ru.wikipedia.org/wiki/Земмельвейс,_Игнац_Филипп), но его предложение в конце концов (https://vk.com/@1077823-vsegda-li-pervyi-vliyaet-na-hod-istorii) победило!

Еще раз повторю слова Аристотеля: «Известное известно немногим». Про тех, кто внезапно открывает для себя целесообразность применения автоматов в программировании после многолетней моей писанины об этом, я написал текст «Конечный автомат многим не враг» (https://vk.com/@1077823-konechnyi-avtomat-mnogim-ne-vrag).

После предварительного знакомства с этим текстом упомянутый выше Константин Вавилов написал: «Лично для меня это Великая история с несомненным применением автоматов в различных разработках алгоритмов и ПО. На любую критику у меня есть конкретные примеры – автоматные программы, реально работающие на объектах Петербурга и России, эффективные, задокументированные, понятные». После этого я спросил Костю: «И сейчас применяешь?». Он ответил: «Да. По другому уже не получается мыслить…».

Недавно я узнал, что автоматы (https://docs.unrealengine.com/5.0/en-US/state-machines-in-unreal-engine/) применяются и в Unreal Engine 5 (https://ru.wikipedia.org/wiki/Unreal_Engine) – игровом движке, разрабатываемом и поддерживаемом компанией Epic Games, на базе которого разработано немереное число игр (https://ru.wikipedia.org/wiki/Список_игр_на_движке_Unreal_Engine).

В 2023 г. были опубликованы наши работы по рассматриваемой тематике: Шалыто А.А. Валидация автоматных спецификаций // Научно-технический вестник информационных технологий, механики и оптики. 2023. № 2, с. 436-438. https://ntv.ifmo.ru/file/article/21921.pdf и Калачинский А.В. Этапы становления технологии проектирования программного обеспечения систем дискретного управления на основе автоматного подхода // Системы управления и обработки информации. 2023. № 3, с. 30-47.

А тем временем автоматное программирование «двинулось» к детям: Воеводина А.И., Воеводин И.Г., Цырульников Е.С., Шумак К.А. Основы событийного программирования и программирования расширенных иерархических машин состояний (ПРИМС). Ассоциация участников технологических кружков. Национальная киберфизическая платформа. Астрахань, Москва, Уфа. 2024. 63 с. https://disk.yandex.ru/i/d-E8Npwn5X0evw.

15.08.2024 г. опубликован отличный доклад Ускова А. «Автоматное программирование, и его применение в видеостриминге» (https://www.youtube.com/watch?v=3gu2-Ph8K6c), в котором изложен практический опыт использования этой парадигмы программирования.

Автоматы также «пошли» и в роботы: https://arxiv.org/pdf/2503.01842, а в феврале 2025 г. В. Вяткин рассказал о генерации большими языковыми моделями конечных автоматов по промту: Function Block Assistant (https://www.youtube.com/live/aR20KBmZnA4). Об этом также наша статья: LLM-based Iterative Requirements Refinement in FSM with IEC 61499 Code Generation.

21 мая 2025 г. состоял доклад на тему «Разработка управляющей логики с использованием конечных автоматов в Engee» (https://exponenta.ru/events/modelirovanie-konechnih-avtmatov-v-engee). Engeeэто платформа математических вычислений и модельно-ориентированного проектирования, разработанная российской компанией «Экспонента» (https://exponenta.ru/engee).

И в заключение. «Свидетельство ненормальности – повторение одного и того же поступка с ожиданием разных результатов». Потом прочел еще где-то: «Самая большая глупость – делать то же самое и на надеяться на другой результат». Хотел бы поверить в это, но конечные автоматы при повторении одних и тех же входных воздействий могут формировать разные выходные воздействия.

Фридл Дж. (автор книги Регулярные выражения. Питер, 2001) на странице 121 пишет: «Две базовые технологии, на основе которых строятся механизмы регулярных выражений, носят устрашающие названия «недетерминированный конечный автомат» и «детерминированный конечный автомат». А в примечании, приведенном на этой странице, он пишет: «Вероятно, мне бы следовало объяснить азы теории конечных автоматов..., если бы я ее знал!» Я думаю, что аналогичное впечатление о теории автоматов возникает и многих других людей, которые знакомились с ней, например, по хорошей, но очень математической книге Ахо А. и Ульмана Дж. Теория синтаксического анализа, перевода и компиляции. М.: Мир, 1978, изданной в двух томах. Поэтому, мне кажется, что у людей, знакомых с этой книгой, когда они слышат об автоматном программировании, положительных эмоций не возникает. В дополнение к сказанному отметим, что в значительно более понятной «простым» людям книге Хопкрофта Д., Мотвани Р. и Ульмана Д. Введение в теорию автоматов, языков и вычислений. М.: Вильямс, 2002, у автоматов нет выходов, а в резюме по второй главе сказано, что «автомат допускает цепочки». При такой трактовке автоматов они весьма специфичны, и об их широком применении для решения различных задач, отличных от работы с текстами, на первый взгляд, нет речи. Материалы, представленные здесь и в основном тексте, а также и на сайте https://is.ifmo.ru/, призваны показать, что это не так.

11.03.20212026.

731 views·8 shares