Скромное обаяние автоматного программирования

В 1998 г. мне исполнилось пятьдесят лет, и, как отмечено выше, вышла моя книга о SWITCH-технологии (http://is.ifmo.ru/books/switch/1). Из рецензии на эту книгу: «Недавно в редакции PC Magazine/RE появилась книга Шалыто А.А. SWITCH-технология. Алгоритмизация и программирование задач логического управления. СПб.: Наука, 1998. В монографии показывается, каким образом можно пересмотреть концепции программирования, если рассматривать программы как конечные автоматы. Представлять современные системы, управляемые событиями, именно таким образом настолько естественно, что единственная мысль, которая возникла у меня после внимательного ознакомления с книгой, была: «Почему до этого никто раньше не додумался?» (Герр Р. Новый поворот // PC Magazine/RE. 1998. № 10, с. 88-90. http://is.ifmo.ru/recensions/gerr/). Интересно, что Герр не написал, как любят писать и говорить некоторые: «Что тут такого – ведь так делают все». (https://vk.com/@1077823-ob-avtomatizacii-stiralnyh-mashin).

Когда люди «наезжают» на меня за слишком активную пропаганду автоматного программирования, то я им скромно сообщаю о том, что «более 99% всех микропроцессоров, проданных в мире в 1998 г., применялись во встроенных системах», в которых автоматы могут эффективно использоваться (Ослэндер Д., Риджли Д., Ринггенберг Д. Управляющие программы для механических систем. Объектно-ориентированное проектирование систем реального времени. М.: БИНОМ, 2004). При этом разговор сразу сводится к тому, что сложность программ распределяется обратно пропорционально – в одном проценте оставшихся микропроцессоров выполняется 99% программ других типов.

Точность последнего утверждения, однако, обычно ничем не подтверждается. Более того, Бертран Мейер, выступая 2.06.2006 г. в СПбГУ ИТМО, сказал, что число микропроцессоров в одном современном автомобиле достигает 65, а объем программ в них уже превышает 10 млн строк.

Как вы думаете, какого типа программы используются в автомобиле?

Вчера один человек сказал мне: «Хороший у Вас подход. Я на шесть лет увольнялся, а когда вернулся, полчаса посмотрел на графы переходов для дизель-генератора, и все вспомнил!».

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

Один молодой кандидат наук при мне спросил Бертрана Мейера: «Если поступить к Вам в постдокторантуру, то там можно будет заниматься чем-то, отличным от исследований в области языка Eiffel?». Мейер ответил: «Нет. И не по тому, что я считаю, что нет других достойных тем для исследований в Software Engineering или в Computer Science, а просто у меня жизнь одна и ресурсы ограничены».

При этом я заметил, что поступаю аналогично применительно к автоматному программированию. На это Бертран Мейер по-русски сказал: «И правильно!».

Теперь приведу несколько слов академика РАН В.Б. Кудрявцева, заведующего кафедрой «Математической теории интеллектуальных систем» мехмата МГУ об особой значимости автоматов в кибернетике: «Из всех видов управляющих систем наиболее полно вобрала в себя черты управляющей системы модель автомата, поскольку она фактичекски получается путем лишь сужения множеств значений всех параметров управляющей системы до конечных множеств. При аппроксимационном подходе к изучению управляющих систем, состоящем в допущении только конечных множеств значений всех характеристик этих систем, по существу приводят к модели автомата, которая тем самым обретает свойство универсальности и поэтому имеет особую значимость в кибернетике» (http://www.intsys.msu.ru/staff/kudryavtsev/MaTIS.pdf).

Теперь фрагменты из выступлений на семинаре Software 2000: a View of the Future (10.04.1994). Brian Randell: «Я помню Дуга Росса из компании SofTech, который много лет назад говорил, что 80 или даже 90% информатики будет в будущем основываться на теории конечных автоматов. Большая часть теории автоматов была успешно использована в системных программах и текстовых фильтрах в OS UNIX. Это позволяет множеству людей работать на высоком уровне и разрабатывать очень эффективные программы». Herve Gallaire: «Я знаю людей из Боинга, занимающихся системами стабилизации самолетов с использованием чистой теории автоматов. Даже трудно себе представить, что им удалось сделать с помощью этой теории».

Кто-то может сказать, что прошло много лет, а широкого применения автоматов в программировании так и не наступило, но я, все-таки, верил и верю, что указанное время наступит.

2006. http://is.ifmo.ru/belletristic/obayanie/.

P.S. 1. В 2021 г. мой аспирант Ю.Ю. Янкин защитил диссертацию в НПО «Аврора», в которой, в частности, описано внедрение технологии автоматного программирования в десятки систем, управляющих одним классом судового оборудования. Он предполагает продолжить внедрение этой технологии и в дальнейшем. После этого мне, как и режиссеру М. Ромму, ничего не остается сказать кроме «И все-таки я верю» (https://www.youtube.com/watch?v=dHIGtB13vYQ).

И это не только мое мнение. Профессор Валерий Вяткин предполагает, что расцвет применения автоматов при создании ПО в промышленной автоматизации произойдет, если нефте-газовые компании мира будут проводить модернизацию своих систем управления на основе стандарта IEC 61499 (Pang C., Patil S., Yang C., Vyatkin V., Shalyto A. A Portability Study of IEC 61499: Semantiac and Tools / 12th IEEE International Conference on Industrial Informatics (INDIN 2014). 2014. Port Alegre, Brazil, pp. 440-445. https://ieeexplore.ieee.org/document/6945553).

2. Кроме пользы автоматного программирования для практики, оно сыграло очень важную роль для развития научной деятельности в области Computer Science на кафедре «Компьютерные технологии» Университета ИТМО. У нас обучалось много умных и образованных ребят, некоторые из которых хотели заниматься наукой, но кроме тем по физике, а иногда по математике, им ничего не предлагали. Я решил переломить ситуацию и сделать так, чтобы на кафедре с таким названием в этой области проходило не только обучение, но и научная деятельность студентов, а в дальнейшем и аспирантов. У меня в «загашнике» было только автоматное программирование, которое я создавал в НПО «Аврора» для совершенствования разработки программного обеспечения судовых систем управления. В ИТМО я читал на эту тему лекции и принудительно «внедрял» его через курсовые работы, тратя на это уйму времени (http://is.ifmo.ru/projects/). Еще больше времени на них тратили студенты, и поэтому для многих из них было естественным развивать эту тему в бакалаврских работах и магистерских диссертациях (http://is.ifmo.ru/diploma-theses/). Потом некоторые из этих ребят захотели защищать кандидатские диссертации, и поэтому они продолжали исследования в области автоматного программирования.

Это позволило мне, как Мальчишу-Кибальчишу, «ночь простоять и день продержаться», и за это время некоторые ребята почувствовали вкус к науке, а после того как мы выиграли грант на тему «Технология генетического программирования для генерации автоматов управления системами со сложным поведением» (http://is.ifmo.ru/genalg/_2007_01_report-genetic.pdf, http://is.ifmo.ru/genalg/_2007_02_report-genetic.pdf, http://is.ifmo.ru/genalg/_2007_02_report-genetic.pdf, http://is.ifmo.ru/genalg/_2007_04_report-genetic.pdf) у них, в частности, возник интерес и к другим разновидностям искусственного интеллекта, например, к эволюционным алгоритмам. После этого мы выиграли грант на тему: «Разработка методов автоматической генерации тестов на основе эволюционных алгоритмов».

После моего знакомства с академиком РАН К.Г. Скрябиным ребята занялись биоинформатикой, а пом и системной биологией. Этому посвящена четырехчастная статья «Как биоинформатика и системная биология появились на кафедре «Компьютерные технологии» Университета ИТМО»: 2009-2011, https://vk.com/@1077823-kak-bioinformatika-i-sistemnaya-biologiya-poyavilis-na-na-ka; 2012-2016, https://vk.com/@1077823-chast-2-2012-2016-kak-bioinformatika-i-sistemnaya-biologiya; 2017, 2018, https://vk.com/@1077823-chast-3-2017-2018-gg-kak-bioinformatika-i-sistemnaya-biologi; 2019, 2020, https://vk.com/@1077823-chast-4-kak-bioinformatika-i-sistemnaya-biologiya-poyavilis).

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

3. Мой старинный знакомый Руслан Богатырев, который в свое время в журнале «Мир ПК» публиковал мои статьи про автоматное программирование (например, Шалыто А.А. Технология автоматного программирования // Мир ПК. 2003. № 10, с.74-78. http://is.ifmo.ru/works/tech_aut_prog), так прокомментировал этот текст: «В программировании есть свой Калашников. И его фамилия – Шалыто». Забавно…

06.12.2021.

108 views·2 shares