О приоритете
Известно, что лет семьдесят назад считалось, что все главное в мире создано или в СССР, или в России, а остальное подло украдено у нас. «Это должен был запомнить рядовой гражданин Империи, после чего – немедленно лопнуть от гордости» (https://u-96.livejournal.com/129636.html). Подтверждение сказанному книга Болховитинов В.Н., Буянов А.Ф., Захарченко В.Д., Орлов В.И. Рассказы о русском первенстве. М.: Молодая гвардия. 1950, 424 c. (https://www.koob.ru/bolxovitinov_v_n/rasskazi_o_rus_pervenstvehttps://royallib.com/book/bitov_andrey/kniga_puteshestviy_po_imperii.html). Кратко ее содержание можно сформулировать так: «Россия – родина слонов». Эту книгу можно прочесть целиком: https://disk.yandex.ru/d/5BTBra7lSPEG3.
Вопрос о приоритете в чем либо (даже в достаточно узкой области) весьма сложный – об этом, в частности, и мой текст «Автоматное программирование, водка и буква Ё» (http://is.ifmo.ru/download/2008-03-17_automata.pdf), опубликованный в начале 2008 г. Приведу примеры.
Первый: «Довод Шалыто к тому, что именно он оформил программирование состояний в некую стройную систему, которую он назвал «автоматным программированием» и именно в этом его заслуга, вполне оправдан. Поэтому и говорят, что автоматное программирование изобрел Шалыто. Это как с буквой Ё. Мало кто знает что её придумала Екатерина Дашкова, но все знают что первым применять её начал Николай Карамзин, поэтому зачастую говорят, что буква Ё – буква Карамзина» (https://alexott.livejournal.com/321730.html?thread=1717698#t1717698). Это написал человек, с которым я не был знаком ни тогда, ни теперь.
Теперь совет: «Верьте в свои идеи, несмотря на все, к чему можно придраться. Критика затачивает их, закаляя Вас для дальнейшей борьбы. Действительно хорошие идеи изменяют мир, а это никогда не проходит без сопротивления и трения. Каждая такая идея направлена против чего-то и делает его устаревшим, лишая кого-то опоры. При этом всегда найдется кто-то, кто назовет Ваше предложение глупым и скажет, что они эту идею уже пробовали, и она не работает» (А. Рен). И еще один совет: «Для того, чтобы избежать критики, ничего не делай, ничего не говори, будь никем» (Э. Хаббард).
Второй пример: «Есть история про исследования раствора ... из воды и спирта, которые проводил Дмитрий Менделеев, до открытия им Периодического закона. Представляете, как бы над ним некоторые сейчас смеялись, не открой он этот закон: «Водку на Руси давно пили, и зачем там что-то еще изучать, ха-ха-ха». А может быть, и тогда смеялись, но об этом ничего не известно. Зато теперь над ним никто не смеется – победителей, ведь, не судят, правда?».
Вот что писал Менделеев по рассматриваемому вопросу: «Справедливость требует не тому отдать наибольшую научную славу, кто первым высказал истину, а тому, кто сумел убедить в ней других, показал ее достоверность и сделал ее применимой». Это же можно сформулировать другими словами: «Герой не тот, кто первым скажет, а тот, кого первого услышат». Другой Дмитрий – Поспелов говорил: «В науке первым часто оказывается не тот, кто сказал «А», а тот, кто сказал «Я».
Третий пример. Вот что сказал в подтверждение этих слов Нобелевский лауреат Жорес Алферов: «Герберт Кремер (с ним Жорес Иванович разделил половину Нобелевской премии за разработку полупроводниковых гетероструктур, А.Ш.) свои теоретические работы по гетероструктурам публиковал в 1950-е годы, намного раньше меня. Я стал заниматься ими только в конце 1962-го. Поэтому он пионер, но он теоретик, а мы пионеры тоже, но практики: мы довольно рано поняли, что гетероструктуры в целом позволяют создавать принципиально новый класс материалов и на их основе можно иначе управлять потоками электронов и фотонов и создать новую электронику» (https://dzen.ru/a/YE4ziQERgUR7k1Lx).
Четвертый пример. Кто знает, мыли ли врачи руки (https://ru.wikipedia.org/wiki/Мытьё_рук) перед принятием родов – видимо, кто-то мыл, а кто-то и нет. В результате от родильной горячки в Вене в одной из лучших клиник Европы умирала каждая шестая женщина. Игнац Земмельвайс (1818-1865), казалось бы, всего-то на всего, пытался внедрить в медицину практику мытья рук, инструментов и постельного белья хлорной водой (https://online812.ru/2012/04/12/011/). Его предложение опровергало сразу несколько догм, распространенных в медицине того времени, и поэтому большинство коллег категорически отказывались внедрять его практику. Более того его подняли на смех и запретили публиковать результаты исследований. В конце концов, Земмельвайса без его согласия поместили в психиатрическую больницу, где он и умер (https://ru.wikipedia.org/wiki/Земмельвейс,_Игнац_Филипп), но его предложение в конце концов победило! Однако, как долго пришлось ждать, чтобы здравая идея стала нормой. Земмельвайс (https://www.kinopoisk.ru/film/5069690) сделал свое открытие в 1840-х годах, но только через 20 лет интуитивное предположение врача нашло научное подтверждение благодаря исследованиям Л. Пастера и Р. Коха.
Пятый пример. Писатель Людмила Улицкая как-то сказала: «Понятие «ноосфера» придумал не Вернадский, он создал учение о ноосфере». Так и оказалось: «Понятие «ноосфера» было предложено профессором математики Сорбонны Эдуардом Леруа, который трактовал её как «мыслящую» оболочку, формирующуюся человеческим сознанием. Э. Леруа подчеркивал, что пришел к этой идее совместно со своим другом – геологом и палеонтологом-эволюционистом, и католическим философом Пьером Тейяром де Шарденом. При этом Леруа и Шарден основывались на лекциях по геохимии, которые в 1922/1923 гг. читал в Сорбонне Владимир Иванович Вернадский (https://ru.wikipedia.org/wiki/Вернадский,_Владимир_Иванович), который создал учение о ноосфере (https://ru.wikipedia.org/wiki/Ноосфера).
Шестой пример. Корпорация Apple не стала первым производителем MP3-плеера. Она стала первой, кто сделал MP3-плеер как надо. Похоже, я так же поступил с автоматами в программировании.
Седьмой пример. Считается, что «Сказки матушки Гусыни» написал Шарль Перро. Однако, за исключением «Рике-хохолка», они все представляют собой обработки народных сказок.
Восьмой пример. Первый чертеж автомобиля принадлежит Леонардо да Винчи, но никто не считает его «отцом» автомобиля. Первой самостоятельно движущейся машиной был паровой автомобиль, разработанный в 1769 г. французским изобретателем Никола Кюньо. Он тоже не считается «папой» автомобиля, как, впрочем, и Иван Кулибин, который в 1791 г. изготовил экипаж с маховым колесом, тормозом и коробкой скоростей. Первый шаг к «отцовству» в 1876 г. сделал Николас Аугустин Отто, запатентовавший четырёхтактный двигатель внутреннего сгорания. Решающий шаг в рассматриваемом направлении Карл Бенц сделал в 1885 г., продемонстрировав трехколесный самодвижущийся экипаж с бензиновым двигателем. В том же году Готлиб Даймлер и Карл Майбах сконструировали свой первый двигатель, а также карбюратор. 29.01.1886 г. Бенц получил патент на бензиновый автомобиль. В 1889 г. Даймлер и Майбах построили свой первый автомобиль. Все это так, но «отцом» современного автомобиля считается Генри Форд, который в 1893 г. (позже перечисленных выше) в свободное от работы время сконструировал свой первый автомобиль. Он говорил: «Я не изобрел ничего нового. Просто я использовал все открытия, сделанные человечеством за столетия упорного труда, в одной машине» (https://vk.com/id1077823?w=wall1077823_21177%2Fall). Как говорится, комментарии и дальнейшие примеры излишни.
Девятый пример. Лауреат Нобелевской премии по литературе Ш. Агнон интересовался почему именно Элиэзер Бен-Йегуда считается отцом возрождения иврита, ведь и до него на иврите в Иерусалиме говорили многие? В 2007 г. ЮНЕСКО ответил ему, официально признав определяющую роль Бен-Йегуды в возрождении иврита.
Десятый пример. Эрнст Чейн (его истинная фамилия – Хаин) – лауреат Нобелевской премии по физиологии и медицине за открытие пенициллина. Молва приписывает его открытие британскому микробиологу Александру Флемингу. Он действительно в 1928 г. выделил первый в мире антибиотик – пенициллин из плесневых грибов Penicillium notatum. Однако, как лекарство его смогли применить лишь в 1941 г., после того как патологом и микробиологом Говардом Флори и биохимиком Эрнстом Чейном был предложен способ его очистки. Человечество получило лекарство, спасшее бесчисленное число жизней, а в истории медицины началась новая эра – эра антибиотиков. За открытие пенициллина Александр Флеминг, Говард Флори и Эрнст Чейн получили в 1945 г. Нобелевскую премию по физиологии и медицине, а в 1969 г. Чейн получил за свои достижения титул рыцаря и звание сэра.
Существование фундаментальной частицы вещества предсказали Ф. Энглер и Р. Браут в августе 1964 г., П. Хиггс – в октябре, а Дж. Гуральник, К. Хаген и Т. Киббл – в ноябре. Однако частица была названа не именами тех, кто ее предсказал первыми, а именем Хигсса – «бозон Хиггса». Нобелевскую премию в 2013 г. получили Ф. Энглер и П. Хиггс. В 2011 г. умер Р. Браут, до опоздавших на месяц «дело» не дошло. Кстати, «Г. Вайль объяснил Э. Шрёдингеру, как решать «уравнение Шрёдингера» (Л. Фаддеев). И вопрос: сделан ли из меди «Медный всадник» в Санкт-Петербурге? Нет – он сделан из бронзы!
«Люди привыкли считать, что оригинальные идеи хороши, а старые – плохи, неэтичны или даже преступны. Какая чушь! Абсолютный, ярчайший идиотизм! Google не изобрел поиск в Интернете, а McDonald`s не был первой компанией, управляющей сетью закусочных!» (А. Рен). Креативность – не соревнование в оригинальности, а выработка новых путей к успеху. И помните, что «на пути к успеху нет скамеек для отдыха», а «масштаб Вашего успеха определяется глубиной Вашей веры в него». «Когда Цукерберг создал социальную сеть Facebook, в других корпусах (!) колледжа уже были подобные службы. Была она и в Колумбийском университете, была в Стэнфорде. В Йельском университете тоже была. Сегодня эти и другие сети довольно популярны, но Facebook лучше других справился с задачей объединения людей».
Всегда помните слова Аристотеля: «Известное известно немногим». Про тех, кто внезапно открывает для себя целесообразность применения автоматов в программировании после многолетней моей писанины об этом, я написал текст «Конечный автомат многим не враг» (https://vk.com/@1077823-konechnyi-avtomat-mnogim-ne-vrag).
Еще одно мнение о приоритете. «Не так важно кто нечто придумал первым – важно, кто начинает это использовать не от случая к случаю, а как технологию. Как делаются общественно-политические изобретения? Например, само по себе изобретение паровой машины еще не вело к промышленной революции – нечто подобное создавалось и раньше в других странах Европы. Заслуга Джеймса Уатта была не в том, что он изобрел паровую машину, а в том, что сумел продать первые сто экземпляров. Это и есть опыт цивилизации – когда открытие, возникшее исторически случайно, начинает использоваться сознательно, как технология, и воспроизводится в дальнейшем опыте» (В. Лейбин). Я считаю, что такое постепенно происходит и с автоматным программированием.
О первых. «А первые оказываются первыми, как это ни странно, потому что они были первыми с самого начала. Не потому, конечно, что родились ими, а потому, что наиболее непосредственно, наиболее впрямую, наиболее единственно были заняты своим делом – только своим и только этим. Такие люди, естественно, оказываются в выигрыше: во времени, в результативности, в производительности, – потому что с легкостью берут от себя все, на что способны. Никакими усилиями, никакой волей не заставит себя человек сделать что-либо себе чуждое и несвойственное лучше того, что он сделал бы сам, по собственному желанию и без принуждения. В первом случае он несвободен, во втором – свободен, а, как известно, самая низкая производительность – у раба. Таким образом, чемпион – это еще и категория свободы. (Недаром гладиаторам-победителям был приз – свобода.) Люди, понимающие и чувствующие живой и цельный организм своего дела, люди, всего лишь свободно и до конца занятые тем, чем они заняты, способны настолько полно выявить заложенные в них от природы возможности, что вдруг оказываются первыми, чем и вызывают всеобщее восхищение (или зависть, А.Ш)» (А. Битов, из главы «Колесо. Записки новичка» книги «Путешествия по Империи», АСТ, https://royallib.com/book/bitov_andrey/kniga_puteshestviy_po_imperii.html. Книга была подготовлена к изданию в 1991 г., однако увидела свет только в 2000 г.,). В 1968 г. на третьем курсе института на занятиях по философии я узнал о существовании писателя Андрея Битова, книги которого «Дачная местность» и «Аптекарский остров», произвели на меня тогда очень сильное впечатление.
Весьма интересно, что Иван Алексеевич Бунин переводил себя на английский язык и методично, из года в год, посылал свои переводы своих произведений в Нобелевский комитет. В результате получил ее.
Знаете ли Вы, что «треугольник Паскаля» открыл не Б. Паскаль, а кто-то другой, и значительно раньше, и что часто «люди, которые совершенствуют чужие изобретения, двигают прогресс сильнее изобретателей» (М. Гладуэлл). То или иное достижение обычно ассоциируется с именем не того, кто это первый придумал, а того, кто это внедрил в сознание окружающих и в практическую деятельность. Не так важно, кто нечто придумал первым, – важно, кто начинает это использовать не от случая к случаю, а как технологию, и рекомендует ее применять другим. «В науке слава достается тому, кто убедил мир, а не тому, кто первый набрел на идею» (Ф. Дарвин).
Думайте о том, чтобы подольше задержаться в памяти людей. Пишите. Вот что по этому поводу говорил академик А.Н. Крылов: «На словах только в любви объясняются, а о делах следует писать». Ю. Цезарь стал таким известным, потому что обо всем подробно написал сам. Знайте, что «не так легко отыскать книгу, которая научила Вас столь же многому, как книга, написанная Вами» (Ф. Ницше).
Теперь несколько дополнительных замечаний по рассмотренному вопросу.
1. Известный ученый Николай Николаевич Непейвода в книге Стили и методы программирования. М.: Интернет-Университет Информационных технологий. 2005. 316 с. написал: «Термин «автоматное программирование» принадлежит, насколько нам известно, А. Шалыто. Во всяком случае, ему принадлежит заслуга в его развитии вопреки моде и мнению большинства». Все это осталось и в изданиях этой книги, появившихся в 2012 и 2016 гг.
2. Вот комментарий на этот текст Родиона Юрьева: «Многие начинающие предприниматели тщательно оберегают свои идеи, ошибочно полагая, что они чего-то стоят. Идеи не стоят ничего без реализации (говорят они стоят процентов пять, если они успешно реализованы, А.Ш.), причем не реализации «вообще», а воплощения в виде бизнеса, да еще и успешного. Повсеместно, как только что-то оказывается успешным, начинаются пересуды: это-де изобрели в Древнем Египте, а это знали еще индийцы или индейцы. Ну так если это все знали, кто ж вам мешал это реализовать?! Поэтому рассуждать о том, кто там первым что-то упомянул об автоматном программировании бессмысленно, его отцом уже является А.А. Шалыто и точка, потому что именно он его развил и реализовал в новое направление».
3. 12.11.2019 г. я опубликовал текст «Мертвые и живые» (http://d-russia.ru/myortvye-i-zhivye.html). В ходе обсуждения этого текста Вадим Гор написал: «Пользуясь случаем, хочу засвидетельствовать свое почтение Анатолию Шалыто за изобретение Switch-технологии! Чудесная вещь. Она близка к системной методологии, где имеет прямое отношение к моделированию доминант и детерминант в сложных системах. В молодости я с очень большим воодушевлением ее использовал в своей работе. Да и сейчас – тоже. На всех программистских специальностях ее надо изучать сразу, чтобы мозги у программистов сразу вставали на место. Потом их ставить труднее».
После этого я сообщил Вадиму, что выложил на YouTube лекцию по автоматному программированию (https://www.youtube.com/watch?v=PPWTxceMutk). На это он написал мне: «Все очень правильно говорите, начиная от того, что «графы должны быть по возможности планарны, а схемы красивы». Автоматная модель – это несравнимо лучше превентивного кодерства».
18 ноября 2019 г. Гор написал текст «О спорах относительно парадигм программирования», в котором, в частности, сказано: «Желание написать такой материал навеяло автоматное программирование (Switch-технология) от Анатолия Шалыто, предложившего его. Дело, конечно, не в открытии многоуровневых конечных автоматов для программирования, а в их удобном технологическом оформлении, сильно упрощающем как макетирование систем до непосредственного программирования на языках программирования, так и верификацию кода, вместе множеством достоинств, связанных с проблемами согласования алгоритмов с заказчиками программ. Автоматное программирование вполне совместимо с объектно-ориентированным программированием (ООП) и является средством построения «крепких» каркасов ООП-программ и, естественно, функционального кода тоже. Следовательно, хотелось бы раскрыть «Настоящее ООП» = ООП + Каркасное программирование + Шаблоны проектирования + Автоматное программирование, не противопоставляя его функциональному программированию, а просто показав приверженцам функционального подхода место последнего в указанной троице (каркасы и шаблоны по большому счету одно и то же, только на разных масштабах архитектуры)». Этот текст можно найти по дате на моей странице https://www.facebook.com/anatoly.shalyto.
4. 16.02.2021 г. я опубликовал текст «Автоматное программирование» (https://vk.com/@1077823-vtomatnoe-programmirovanie), а 11 марта – его продолжение: «Еще об автоматном программировании» (https://vk.com/id1077823?z=article_edit1077823_62364). Упомянутый там Константин Вавилов после их прочтения написал: «Лично для меня это Великая история и несомненное применение в различных разработках алгоритмов и ПО. На любую критику есть конкретные примеры – реально работающие на объектах Петербурга и России, эффективные, задокументированные, понятные (см. например, работы 2005 г. – http://is.ifmo.ru/automata/_metod065.pdf; http://is.ifmo.ru/automata/_s7300.pdf; http://is.ifmo.ru/automata/_vavilov2.pdf.zip). После этого я спросил Костю: «И сейчас применяешь?». Он ответил: «Да. По-другому уже не получается мыслить...».
5. Мне пришло весьма лестное письмо с очень странной просьбой: «Здравствуйте, Анатолий Абрамович! Мне очень нравится Ваша идея автоматного программирования. Я закончил Киевский Политех по специальности «Вычислительная техника», которая имела профиль, связанный с компьютерным оборудованием. После этого я учился программировать. Мне показалось, что программирование на языках, подобных Алголу, странно. Про Вас я узнал на ярмарке в Ганновере от профессора В. Хачумова из РАН. Я в высшей степени уверен, что направление Ваших исследований одно из важнейших в информатике. Я скачал Вашу книгу про автоматное программирование и прошу Вашего разрешения прочесть ее (!). Желаю Вам успеха. Я знаю, что Ваша идея велика. Веслав Пошевецки, wiesiek@acm.org». Ну, что тут скажешь...
В другом письме он написал: «Недавно я отметил забавный факт, что все ученые, которые меня вдохновили на создание фреймворка – евреи (Harel, Eilenberg, Shalyto). Моё вдохновение. Я люблю программировать компьютеры. Особенно так, как описал этот учёный: http://en.wikipedia.org/wiki/Anatoly_Shalyto. Сэмми – еще один источник вдохновения: http://pl.wikipedia.org/wiki/Samuel_Eilenberg. Как и Дэвид Харел: http://en.wikipedia.org/wiki/David_Harel. Я верю, что работы этих людей имеют фундаментальное значение для будущих тенденций в программировании. Автоматы с ароматом алгебры, сети Петри – верный способ программирования современных систем».
6. «Благодарю Вас за автоматное программирование, которое я неоднократно применял в своих проектах, начиная с той Вашей лекции, на которой впервые узнал о нем и получил книжку. Это было примерно 10 лет назад. Теперь уже у меня появились свои ученики, и я хотел бы попросить у Вас посоветовать, как проще научить их автоматному подходу» (Михаил Глухов).
7. «Приведу слова Шалыто из интервью (https://habr.com/ru/company/dataart/): «Программировать можно в разных терминах. Я предлагаю программировать с использованием понятия «состояние». Люди живут в состояниях. Жив, здоров, болен. Если болен, то в определенном состоянии находишься. Можно описать состояния и у технического объекта. Определили состояние: открыт-закрыт, открывается-закрывается. После этого формируются дуги, которые обеспечивают переходы из одного состояния в другое. Потом записываются условия переходов. После этого в вершинах и/или на дугах записываются выполняемые действия. И вот так, я считаю, должно начинаться создание любых более-менее сложных поведенческих программ. Это открывает такие возможности, что вы даже не представляете. Так спроектированные программы можно верифицировать, на них может быть выпущена удобная для понимания заказчика проектная документация». Господи, насколько же это прекрасно! Полностью согласен» (gecube).
8. «Концепция автоматного программирования разработана Анатолием Шалыто, в том числе в интеграции с объектно-ориентированным программированием. Автоматная программа определяется как совокупность классических конечных автоматов. Используются графическое и текстовое представления программы. Управляющие состояния являются значениями переменной, которая фактически является частью состояния программы. При реализации автоматной программы применяется Switch-технология. Использование объектно-ориентированной технологии позволяет «уплотнить» состояния автоматной программы, сократить ее объем и локализовать часть связей программы внутри классов. Термин «автоматное программирование» и его аналог «Automata-Based Programming» применяется только в России. Автор благодарен А.А. Шалыто за его работы по автоматному программированию» (Шелехов В.И., http://persons.iis.nsk.su/files/persons/pages/automatProg.pdf).
9. 10.11.2021 г. поздравил нашего выпускника 2006 г. Веселина Пенева с днем рождения, который ответил мне так: «30 октября я на своем YouTube-канале BitDust Team разместил ролик State Machines: How to «Draw» Behavior of Your Program (https://www.youtube.com/watch?v=MnwnPFxh1Lk&feature=emb_logo). Очень благодарен Вам за то, что когда-то этому меня научили!».
Вот уж воистину: «Известное известно немногим».
10. И в заключение. А вот, что написано обо мне в комментарии к тексту DrCroco (А. Столяров с ВМК МГУ), с которым у меня в свое время была склока в Википедии (https://ru-cs.livejournal.com/7377.html): «Да, я тоже в свое время поразился этой ситуации... Но знаете, в чем забавная деталь? Словосочетание «автоматное программирование» никто не догадался в свое время «закопирайтить». А г-н Шалыто догадался! И что теперь? Попробуйте найти этот термин в другом месте, без ссылок на Шалыто» (rg_software). И это написал не мой знакомый или ученик...
10.01.2022.
