Возможно, что автоматное программирование еще не раз пригодится
В книге [1] я написал: «В 2000 г. я и Никита Туккель познакомились с Сергеем Александровичем Вагановым, который предложил новую среду программирования, в которой объектно-ориентированная программа строилась на «дереве». Мы совместными усилиями добавили автоматный подход в эту среду (Туккель Н.И., Шалыто А.А., Ваганов С.А. Использование SWITCH-технологии при разработке программ в среде FLORA/C++ (модель технологического процесса в цехе холодной прокатки), http://is.ifmo.ru/projects/cold/). Она показалась нам весьма интересной, и мы решили показать ее второкурсникам кафедры «Компьютерные технологии» СПбГИТМО, на которой с 1998 г. я работал по совместительству. В обсуждении самыми активными, естественно, были Георгий Корнеев и Андрей Станкевич, с которыми я тогда не был еще знаком. Автоматное программирование их тогда не увлекло». Через несколько лет Корнеев под моим руководством защитил кандидатскую диссертацию по применению … автоматного программирования при построении визуализаторов алгоритмов дискретной математики [2].
В то время Сергей Александрович был начальником отдела систем реального времени в компания Compass Plus («Компас Плюс») (Магнитогорск). (https://compassplusonline.ru/about/about-company.html), которая существует с 1989 г. и разрабатывает программные продукты для процессинговых центров и розничных банков. Ее конкурентами, в частности, являются компании OpenWay, в которой работало много выпускников нашей кафедры, и Solanteq, организованной нашим выпускником 2009 г. Дмитрием Кочалаевым [3].
Ко времени нашего знакомства под руководством Сергея Александровича была разработана технология программирования FloraWare, которая реализует объектный метод и содержит объектно-ориентированную среду разработки и исполнения приложений больших программных систем. Главная отличительная особенность этой технологии – реализация объектной модели непосредственно на объектной машине без создания промежуточной программы. В этом случае собственно написание программы можно исключить из цикла создания модели, которая будет собираться из стандартных готовых объектов. При этом для хранения объектов применялось дерево. Как и положено Флоре – богине цветов, расцвета, весны и полевых плодов – вагановская флора была прекрасна, но стать еще лучше ей мешала распределенная по всем обработчикам событий логика. Этот недостаток устранялся применением предложенной мной технологии автоматного программирования [4], одна из разновидностей которой была предназначена для программной реализации событийных объектно-ориентированных систем и была разработана совместно с Н. Туккелем [5]. При этом нами было предложено практически всю логику «вынести» из обработчиков событий в автоматы, к которым события только «обращались». Это позволило резко повысить централизацию логики программ этого класса.
На эту особенность нашего подхода понравилась Ваганову [6]. Вот, что он писал по этому поводу [7]: «Использование автоматного программирования органично вписалось во FloraWare. Это обусловлено тем, что в отличие от известных реализаций, где конечный автомат представляется текстом на языке программирования, во FloraWare конечный автомат представляет собой объект, реализованный на уровне ядра объектной машины. Разработка и внедрение объектов автоматного программирования – это качественно новая ступень в развитии технологии FloraWare. Для того чтобы это подчеркнуть, FloraWare, содержащая наряду с аппаратом шаблонов, объекты автоматного программирования и инструменты для работы с ними, получила рабочее название «FloraWare 2».
Эти события Сергей Александрович описывает также и более подробно: «Разработка концепции, архитектуры и реализация среды разработки FloraWare были выполнены в 1996-1998 гг. группой аналитиков и системных программистов компании «Компас Плюс». В 1998 и 1999 гг. FloraWare прошла апробацию в проекте по реализации программных продуктов для процессинговой системы электронных платежей TranzWare Online. В 2002 г. вышла вторая версия FloraWare, которая, в частности, была дополнена средствами автоматного программирования. Указанная система в настоящее время используется и, как положено программному обеспечению с четверть вековой историей, поддерживается в ряде отечественных и зарубежных банков (https://www.tadviser.ru/index.php/Компания:Compass_Plus).
Рассматриваемая технология в то время использовалась также в системах контроля и управления промышленными агрегатами. Ниже приведены ссылки на учебный пример использования автоматного программирования при разработке программ в среде Flora/C+. Приведенная там программа реализует визуальную модель технологического процесса в цехе холодной прокатки и основана на аналогичном примере, поставляемом компанией «Компас Плюс» вместе со средой Flora/C+ версии 2.1.4.0 [8, 9].
Обсуждаемая технология была создана большим коллективом молодых разработчиков под руководством Анатолия Виленовича Капцана и Сергея Александровича Ваганова, причем, как считает Ваганов, его вклад в создание FloraWare меньше вклада Анатолия Виленовича. По их мнению, затраты на ее разработку более 100 человеко-лет.
Подробный обзор рассматриваемой среды разработки приведен в [10].
Прошло 20 лет, и я вновь услышал о построении объектно-ориентированных программ на деревьях. При этом было предложено назвать такой подход к написанию программ «Архитектурным программированием». Это произошло в ходе интервью, взятого Егором Бугаенко (https://www.youtube.com/@yegor256) у Алексея Недоря [11]. Я слушал это интервью, так как не так давно Егор брал интервью у меня [12]. После этого я позвонил Алексею, с котором был знаком, и сообщил ему о наших работах с Вагановым, о которых он, естественно, не знал. При этом я предположил, что применение автоматного программирования может помочь Алексею в его работе, как это произошло у Ваганова.
Алексей поблагодарил и пообещал посмотреть приводимые ниже публикации. Жду «приговора».
Список публикаций
1. Шалыто А.А. Мои счастливые годы жизни на кафедре «Компьютерные технологии» Университета ИТМО. К двадцатилетию кафедры. СПб.: Мозаика-НК. 2012 (https://is.ifmo.ru/belletristic/Shalyto-moi-shastlivye-gody-na-CT.pdf).
2. Корнеев Г.А. Автоматизация построения визуализаторов алгоритмов дискретной математики на основе автоматного подхода // Диссертация на соискание ученой степени кандидата технических наук. СПбГУИТМО. 2006 (https://is.ifmo.ru/disser/korn_disser.pdf).
3. Кочелаев Д.Ю. Проектирование, спецификация и реализация автоматизированных классов // Магистерская работа. СПбГУИТМО. 2009 (https://is.ifmo.ru/diploma-theses/_2010_03_03_kochelaev.pdf).
4. Шалыто А.А. SWITCH-технология. Алгоритмизация и программирование задач логического управления. СПб.: Наука, 1998, 628 с. (https://is.ifmo.ru/books/switch/1).
5. Туккель Н.И., Шалыто А.А. SWITCH-технология – автоматный подход к созданию программного обеспечения «реактивных» систем // Программирование. 2001. № 5, с. 42-62. (https://is.ifmo.ru/works/switch/1/).
6. Туккель Н.И., Шалыто А.А., Ваганов С.А. Повышение централизации управления при программировании «реактивных» систем / Труды международной научно-методической конференции «Телематика'2001». СПбГИТМО (ТУ), 2001, с. 176, 177 (https://www.avrorasystems.com/ru/Data/Pressroom/Files/gitmo2.pdf).
7. Ваганов С.А. Автоматное программирование во «Флоре». 2001 (https://is.ifmo.ru/automata/vaganov/).
8. Туккель Н.И., Шалыто А.А., Ваганов С.А. Использование SWITCH-технологии при разработке программ в среде FLORA/C+ (Модель технологического процесса в цехе холодной прокатки). 2001 (https://is.ifmo.ru/projects/cold/, http://www.softcraft.ru/design/cold/).
9. Туккель Н.И., Шалыто А.А., Ваганов С.А. Использование SWITCH-технологии при разработке программ в среде FLORA/C+ (Модель технологического процесса в цехе холодной прокатки). Проектная документация. 2001 (https://is.ifmo.ru/download/cold.pdf).
10. Ваганов С.А. FloraWare – ускоритель разработки приложений (подробный обзор среды программирования). 2004 (http://www.softcraft.ru/paradigm/oop/flora/, https://www.osp.ru/os/2004/06/184465 ).
11. Недоря А.Е. Никлаус Вирт, Архитектурное программирование, Компиляторы, Кронос, Тривиль (https://www.youtube.com/watch?v=FGXws8lrkoI).
12. Шалыто А.А. ИТМО, ICPC, JetBrains, лучший айти стендап в России! (https://www.youtube.com/watch?v=TlO6lPZrC3g).
P.S. 1. После публикации этого текста получил вот такое письмо от моего выдающегося по ICPC ученика Матвея Казакова: «Слегка удивлен названием статьи. Мне кажется, что автоматное программирование (АП) как инструментарий уже вошло в арсенал профессиональных разработчиков наравне с парадигмами процедурного и объектного программирования. И уже перешло из экзотики в каждодневный инструмент. Как мне кажется, это большая победа, чем разрозненные исследования и разработки с использованием АП». Название «Возможно, что автоматное программирование еще раз пригодится» по совету Казакова исправил на более оптимистическое.
2. Дело пошло. Сначала отреагировал Ваганов: «Добрый день! Читаю с интересом. Хотелось бы пообщаться с Недоря: поговорить про FloraWare, и его деревья». После этого высказал пару замечаний, которые я учел.
3. Затем написал Недоря: «Анатолий Абрамович! Спасибо, очень интересно! На что сразу обратил внимание: «Главная отличительная особенность этой технологии – реализация объектной модели непосредственно на объектной машине без создания промежуточной программы. В этом случае собственно написание программы можно исключить из цикла создания модели, которая будет собираться из стандартных готовых объектов» и «Использование автоматного программирования органично вписалось во FloraWare. Это обусловлено тем, что в отличие от известных реализаций, где конечный автомат представляется текстом на языке программирования, во FloraWare конечный автомат представляет собой объект, реализованный на уровне ядра объектной машины». Буду читать и думать, как интегрировать. С уважением, Алексей». Я сообщил Алексею координаты Сергея Александровича. Возможно, что-то из этого получится…
4. После этого Ваганов написал: «Что касается самой идеи объектной машины и древовидной памяти с программой внутри, то их можно распространить на многоязыковые приложения с заменой существующей сейчас концепции исполняемых файлов в ОС. С некоторой периодичностью всплывают вопросы, в основном не сбывшегося, будущего FloraWare, и бередят былые раны. Это произошло, например, при чтении текста «ООП будущего: Барух Садогурский и Егор Бугаенко о том, как мы будем программировать через 20 лет». 2016 (https://habr.com/ru/companies/jugru/articles/308914/). На этот текст я давно хочу ответить что-то в духе «Будущее ООП наступило четверть века назад» и рассказать про FloraWare». В заключение Сергей Александрович предложил переименовать «Архитектурное программирование» в «Древовидное программирование». Я же, в свою очередь, посоветовал Егору, чтобы Ваганов сделал это в его блоге.
5. В указанном выше тексте Бугаенко говорит: «Я вижу, какой код пишут люди, как тяжело этот код потом понимать, поддерживать, как вообще неприятно программировать, и считаю, что с этим надо что-то делать. Специалисты говорят, что ООП противная концепция в принципе и предлагают её не использовать, потому что она помогает создавать spaghetti code.
6. Мой ответ на этот вопрос прост: «Используйте в программах вместо спагетти автоматы, и такие программы будут нравиться Вам больше».
