Недавно, на одной компьютерной выставке я пытался объяснить генеральному директору одной фирмы, занимающейся промышленной автоматизацией, что при создании программного обеспечения для описания поведения систем управления целесообразно использовать автоматный подход (http://is.ifmo.ru), основанный на применении графов переходов.
Это предложение было отвергнуто, и мне было сказано, что "у нас в этом вопросе и так все хорошо". Да и как может быть иначе, "так как обычно возражения исходят от тех, кто не владеет приемами, против которых они возражают" (Грис Д. Наука программирования. М.: Мир, 1984).
Через некоторое время мой собеседник, видимо, из вежливости, со мной согласился, добавив, что, возможно, применение такого подхода целесообразно при создании сложных систем, которыми он, якобы, не занимается. При этом, видимо, системы промышленной автоматизации он считает простыми!
Для убедительности своего высказывания, мой собеседник добавил: "Вы, ведь, не будете использовать графы переходов при автоматизации стиральных машин, правда?"
Я с ним не согласился, так как нашему с Грисом :) мнению, "никто не сможет научиться хорошо составлять большие программы, пока он не научится хорошо составлять малые", но разговор исчерпал себя.
Однако, через минуту я вспомнил одну историю, которую и рассказал моему собеседнику: "Однажды, так же, как и Вас, я пытался убедить выдающегося студента (призера двух командных студенческих чемпионатов мира по программированию АСМ – Association for Computing Machinery) в целесообразности использования автоматного подхода при программировании. Выслушав меня, не отрывая глаз от компьютера, студент сказал, что когда он будет делать компилятор, он использует автоматы, а год назад по курсу информационных систем при автоматизации стиральной машины он, естественно, применял автоматы, а где еще применять их, он не знает.
После этого в глазах генерального директора появилась тоска: я, видимо, добился своей цели, так как Антуан де Сент-Экзюпери говорил: "Если хочешь построить лодку, не зови людей, не бей в барабаны, а всели в них тоску по бескрайнему синему морю".
И еще несколько замечаний.
В разговоре с генеральным директором я сказал, что использование автоматов, позволяет так документировать проект, что и через десять лет понять его логику можно будет весьма просто. На что директор ответил, что его не волнует, что будет через десять лет, как впрочем, и подавляющее большинство его заказчиков! Интересно, не правда, ли? Особенно учитывая тот факт, что моему собеседнику было не более сорока лет! На вопрос, что же его волнует, он ответил: "Деньги или их экономия, и сегодня". Говоря другими словами, "после нас хоть потоп". Тут, как говорится, не до науки.
Слава Богу, так думают не все в мире, и поэтому техническая революция продолжается: "Экономия – не выход из кризиса. Чтобы достичь успеха в долгосрочной перспективе, технологические компании должны продолжать инвестиции в исследования в независимости от экономической ситуации" (Крейг Баррет, генеральный директор корпорации "Intel").
Я, конечно, понимаю, что мой собеседник далек от мысли достичь уровня указанной корпорации, так как он нормальный человек. В то время как, по мнению председателя совета директоров "Intel", Энди Гроува, "выживают только параноики", о чем он и написал одноименную книгу.
Возвращаясь к общению с упомянутым выше выдающимся студентом, отмечу, что, каждый раз, показывая ему очередной завершенный проект, выполненный на основе автоматного подхода в рамках "Движения за открытую проектную документацию" (http://is.ifmo.ru), я спрашиваю: "Это компилятор или стиральная машина?", и очень часто это оказывается ни тем, ни другим, а чем-то третьим. Это бывает, например, визуализаторами алгорИТМОв, для построения логики которых он предложил на основе автоматного подхода прекрасный метод! В общем, как говорится в одной пословице, "когда живешь, тогда доживаешь"!
И последнее. На днях я сделал открытие :) : многолетние успехи команд Санкт-Петербургского государственного университета информационных технологий, механики и оптики (ИТМО) на командных чемпионатах мира по программированию связаны с наличием аббревиатуры ИТМО в слове "алгорИТМОв".
Эта мистика продолжается и по сей день. 26 ноября 2003 г. в Санкт-Петербурге студенты университета ИТМО Павел Маврин, Дмитрий Павлов и Сергей Оршанский (тренер – Андрей Станкевич) победили, решив 10 задач из 11, в полуфинальных соревнованиях командного студенческого чемпионата мира по программированию ACM 2003/2004 гг., выиграв одновременно командный чемпионат России, а 31 марта 2004 г. в Праге они стали чемпионами мира.
Кроме указанной выше причины, успех команды ИТМО, видимо :) , связан также и с тем, что в начале 2003 г. П. Маврин и Д. Павлов были награждены Премией Президента Российской Федерации за выдающиеся способности, проявленные в ходе международной олимпиады по информатике среди школьников в 2002 г., а А. Станкевич является двукратным призером чемпионатов АСМ и совместно с выдающимся студентом, упомянутым выше, также занимался автоматизацией стиральной машины!
PS. После того, как я опубликовал эту статью, мне сообщили, что стиральные машины, как я и предполагал, необходимо автоматизировать весьма деликатно, так как в противном случае может наступить стиральная трагедия. (Лем С. Из воспоминаний Ийона Тихого: V (Стиральная трагедия). http://lib.ru/LEM/memoirs5.txt).
PSS. Сегодня пришел очередной студент и, не зная о моем интересе к "стиральным машинам", принес … проект автоматизации стиральной машины, который выполнен на автоматах. Так что история со стиральными машинами продолжается.