Компьютинг
September 6, 2022

Записки о кибернетике | Пантеон программирования. Памяти Игоря Васильевича Поттосина

/ Руслан Богатырев, 2021-2024.

/ Это эссе было написано свыше 10 лет назад, но затерялось в моих домашних архивах. Публикую в новой редакции.


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

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

Игорь Васильевич Поттосин (1933-2001) — выдающийся учёный в области вычислительной математики и математического программирования, доктор физико-математических наук, профессор, заслуженный деятель науки РФ. С 1958 г. в Сибирском отделении АН СССР (РАН). В 1958–1964 гг. младший научный сотрудник, начальник группы конструкторского бюро Института математики. С 1964 г. в Вычислительном центре СО АН СССР: ведущий конструктор (1964-1969), зав. лабораторией системного программирования (1969-1990). С 1990 г. в Институте систем информатики им. А. П. Ершова: зав. лабораторией системного программирования (1990), зам. директора (1991), директор (1992-1998). С 1992 г. профессор Новосибирского государственного университета (НГУ) и с 1993 г. зав. кафедрой программирования (был одним из её организаторов вместе с академиком А. П. Ершовым). Один из ключевых разработчиков системы АЛЬФА, первого в мировой практике оптимизирующего транслятора для языков более высокой сложности, чем Фортран.

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

Игорь Васильевич всегда старался оставаться в тени. Был блестящим организатором науки, правой рукой академика Андрея Петровича Ершова (1931-1988). При этом мудро и обстоятельно делал своё дело, не гонясь за регалиями, званиями, наградами, научным и общественным признанием.

После смерти академика Ершова (1988) Игорь Васильевич взвалил на себя нелёгкую ношу продолжения духа и традиций сибирской школы программирования. Стал директором Института систем информатики им. Ершова (ИСИ СО РАН) — преемника знаменитого Отдела программирования ВЦ СО АН СССР, который они с Ершовым и формировали в конце 1950-х годов.

Впервые мне довелось познакомиться с Игорем Васильевичем в студенческие годы, когда учился на четвёртом курсе Московского авиационного института (МАИ). В мае 1986 г. на базе ВЦ Сибирского отделения Академии наук СССР проводился семинар «Язык программирования Модула-2 и инструментальные средства на его основе». Поттосин, во многом разделявший взгляды проф. Никлауса Вирта (1934-2024) на продуманность и лаконичность выражения идей, давно положил глаз на новое творение признанного маэстро языков программирования. В дальнейшем именно этот язык стал одним из любимых у Поттосина.

Проф. Никлаус Вирт, ETH Zurich

Два ученика Игоря Васильевича — Дмитрий Кузнецов и Алексей Недоря —программистское ядро проекта Кронос: 32-разрядного отечественного персонального компьютера, ориентированного на Модулу-2. Он зародился в 1984 г. в одной из комнат общежития Новосибирского университета (НГУ). Тот проект дал жизнь и новой отечественной операционной системе Excelsior (внешне напоминает UNIX System V, реализована на Модуле-2), и настоящей фабрике по производству высококачественных компиляторов.

Именно Модула-2 стала для меня той путеводной звездой, которая и привела к Поттосину. В 1983 г. в Московском Доме книги, что на Новом Арбате, мне посчастливилось приобрести серебристую книгу издательства Springer на английском языке. То был бестселлер проф. Никлауса Вирта — Programming in Modula-2 (1982). И программирование, и технический английский начинал осваивать именно по этой библии модульного программирования. Затем в поисках доступных трансляторов и библиотек постепенно вышел на отечественную Рабочую группу по Модуле-2 (детище Дмитрия Михайловича Сагателяна из Института общей физики АН СССР). А через неё и попал в Новосибирск.

Следующая встреча с Игорем Васильевичем произошла также в новосибирском Академгородке два года спустя (1988). Я представлял на Всесоюзной научной конференции «Методы трансляции и конструирования программ» тему направления, которое стало моей дипломной работой — «Методология разработки сложных программных систем», где обобщался опыт работы с Адой и Модулой-2 применительно к использованию мультипроцессных систем, опирающихся на верификацию формальных моделей (сети Петри), а также разработки экспериментальной мультипарадигмальной системы программирования Лисп-Пролог-Модула-2, с реализацией абстрактной машины Уоррена (WAM) для задач реального времени и встроенных систем.

Честно говоря, было удивительно наблюдать отеческое внимание такого мэтра по отношению к рядовому дипломнику из Москвы. Он вдохновенно знакомил с Академгородком, ВЦ СО АН СССР, библиотекой А. П. Ершова.

На фоне бесконечной московской суеты здесь был совсем иной мир. Величия и покоя. Это трудно передать словами. Просто другая планета. Библиотека произвела сильное впечатление, хотя в те дни уже не было того информационного голода, который во многом с 1960-х годов умудрялся компенсировать А. П. Ершов, привозя из каждой зарубежной поездки журналы, книги, препринты, оттиски статей, документацию — всё, что можно было собрать и увезти.

Библиотека Ершова, для работы в которой, как я потом узнал, специалисты приезжали с разных концов страны, была уникальным многотысячным собранием, во многом определявшим высокий уровень развития отечественных школ программирования. И хотя с начала 1980-х на протяжении многих лет я буквально дневал и ночевал в ГПНТБ (Государственная научно-техническая библиотека СССР в Москве), библиотека Ершова заметно выделялась своим фондом, качеством комплектации.

В 1989 г. Игорь Васильевич занялся подготовкой сборника «Язык Модула-2. Его реализация и использование», в который отобрал две работы, написанные мной и моими коллегами по научно-исследовательской работе в МАИ. С его подачи я заинтересовался Модулой-3, после чего вышел на прямые контакты с Биллом Калсовым (Bill Kalsow) и его коллегами в DEC Systems Research Center. Поскольку тогда мы начали в МАИ работать над переносом компилятора Модула-3 в MS-DOS с реализацией его на Модуле-2 для задач реального времени. Затем наступил чёрный период безвременья (1991–1994 гг.), когда научные контакты было очень непросто поддерживать. Ниточки рвались одна за другой. Нужно было попросту выживать.

В 1994 г. на базе Международного инженерного университета, обещавшего финансирование по линии UNESCO и UNIDO, я инициировал издание научно-популярного альманаха «Технология программирования». Его исходная концепция — стать своеобразным аналогом Scientific American в сфере программирования. Ежеквартальное 200-полосное издание с компакт-диском, где основное внимание уделялось фундаментальным, мировоззренческим вопросам с выделением конкретики в специальные приложения — журналы в журнале.

Первый номер увидел свет в мае 1995 г. (за несколько дней до официального анонса Java). Подобного издания не было не только у нас в стране, но в Европе и и в мире.

Предварительные консультации показали, что и наши, и зарубежные учёные очень хорошо восприняли идею и согласились её поддержать. Было очевидно, что противостоять конъюнктуре и развивать это направление в печатном органе можно только при определённой финансовой независимости. В противном случае всё опять сведётся к бесконечному пережёвыванию нюансов программных библиотек, API-вызовов, а также рассмотрению сиюминутных костылей самых модных языков и систем программирования.

Игорь Васильевич одним из первых крайне заинтересовался как самой идеей, так и её воплощением. Между нами активизировалась переписка. Благо тогда уже электронная почта была вполне доступна. Он прислал для публикации обзорный материал «Российские исследования по языкам программирования и трансляции». Но в те дни нашим планам не суждено было сбыться. Даже несмотря на то, что финансирование прекратилось не начавшись, в последующие годы мы регулярно обсуждали разные моменты, касающиеся идеи журнала и той позитивной среды, которую он может вокруг себя создать.

Игорь Васильевич был убеждён — подобное издание в печатном виде у нас будет тяжело пробить. Нужны другие ходы. И хотя мы оба тяготели к бумажной форме издания, перспективы виделись именно в Интернете. Но ни аудитория, ни сама web-среда не были к этому готовы. Пришлось идею отложить до лучших времён.

С 1996 г. меня пригласили обозревателем, а потом и научным редактором в ComputerWeek-Moscow. То был ведущий компьютерный еженедельник страны, опережавший по охвату вездесущий PC Week. Довелось вновь приехать в Новосибирск и встретиться с Игорем Васильевичем — во время визита в Новосибирск Никлауса Вирта (1996) и на Международной конференции памяти А. П. Ершова (PSI). Он радушно встречал в аэропорту Толмачёво, а потом мы долго бродили по Академгородку, где мудрый мастер сдержанно улыбался моим неоправданно-восторженным речам в отношении IDL и с горечью говорил о непростой ситуации — страну активно покидали талантливые люди и в воздухе витала атмосфера безысходного запустения.

Во время нашей последней встречи в Академгородке он подарил мне редкое издание «А. П. Ершов. Избранные труды», в создании которого и сыграл ведущую роль. Игорь Васильевич духовно был очень сильным человеком, потрясающим оптимистом, но я убеждён, что его внезапный уход из жизни во многом связан именно с той гнетущей и токсичной атмосферой тотального разрушения науки, культуры и образования, которая окутала всю страну. Та среда морально и даже физически уничтожала тех, кто не вписался в этот старый новый мир диктатуры мегаполисной буржуазии. Видеть, как на глазах ломают всё, что ты самозабвенно возводил несколько десятилетий, — это невыносимо.

Микаэль Франц

В середине 1997 г. Микаэль Франц, ученик Никлауса Вирта, позвал к себе в Калифорнию (University of California, Irvine) защищаться и ковать славу мобильного кода. Мы с ним почти ровесники. С конца 1980-х годов, работая около 10 лет в одном из вычислительных центров Московского авиационного института (МАИ), я по долгу службы и по своей инициативе плотно изучал работы (вкл. отчёты, препринты и диссертации) ведущих исследовательских центров и лабораторий мира. Как промышленных: Xerox Palo Alto Research Center (PARC), AT&T Bell Labs, IBM Research, DEC Systems Research Center, Microsoft Research, Sun Microsystems Labs, HP Labs. Так и научных: ETH Zurich, MIT Research Labs, Stanford Labs, Carnegie Mellon Labs, Oxford University Research Lab и др.

Вообще говоря, середина 1990-х годов прошла под знаком золотой Java-лихорадки. Лишь единицы тогда были в курсе, откуда реально у американской Java росли ноги и причём тут научные исследования в ETH Zurich. Мы с Микаэлем плотно контактировали по крайне интересной, прорывной технологии динамической кодогенерации. Его диссертация «Code Generation On the Fly: A Key to Portable Software» (1994), которую он защищал под руководством Никлауса Вирта и Юрга Гуткнехта, была настоящим научным прорывом. По сути был предложен кодогенерирующий загрузчик (совмещение компиляции с загрузкой), который из компактного промежуточного объектного кода прямо на лету генерировал исполняемый код для целевого процессора.

Ничего подобного в мире не было. Со временем многие наработки ETH Zurich легли в основу известной ныне JIT-компиляции (just-in-time), что сильно изменило возможности скриптовых языков (особенно JavaScript). Стало понятно: потенциал исследований уходил в область виртуальных машин и кибербезопасности, что затрагивало уже военную сферу. Одна из важных побочных задач — обеспечение устойчивости программного обеспечения в плане защиты от атак (за счёт динамической кодогенерирующей распаковки различных программных модулей).

Впоследствии некоторые решения были запатентованы им в США. И к настоящему времени профессор Микаэль Франц — один из признанных экспертов в этой сфере. Тогда он активно звал к себе, но ехать в Штаты желания не было. Научная карьера меня не интересовала. А заниматься любимым делом можно было и дома.

Джеймс Гослинг, автор Java

Осенью 1997 г. Игорь Васильевич переслал мне очень интересное письмо Никлауса Вирта, которое во многом повлияло на моё мировосприятие. Но сначала поясню ситуацию. В июньском номере журнала IEEE Computer (1997) вышла необычная статья под названием «The Feel of Java». Это, кстати, ведущее издание профессиональной ассоциации IEEE Computer Society. Приведу цитату.

≪ Java — это настоящий язык-трудяга. Это не результат чьей-то диссертации, это язык для работы. Java покажется очень знакомым самым разным программистам, поскольку мы предпочитаем делать проверенные вещи. Итак, что же такое Java? Java ощущаешь как игривый и гибкий язык. Вы можете создавать с его помощью такие вещи, которые сами являются гибкими. Java ощущаешь как детерминированный язык. Если вам хочется, чтобы он что-то сделал, просто попросите его об этом. В нём не видится ничего опасного: вы можете спокойно попробовать что-то сделать, и если окажетесь неправы, то быстро получите сообщение об ошибке. Java ощущаешь как очень богатый язык. Мы постарались снабдить его большой библиотекой классов. Поэтому не откладывайте дело в долгий ящик, а садитесь за компьютер и пишите свой код. ≫

Не складывается ли впечатление, что перед нами выдержка из рекламного объявления? А ведь эти слова принадлежат Джеймсу Гослингу, не только автору Java, но и человеку, который защитил диссертацию в известном университете Карнеги-Меллон, связанную с проектом Andrew Windows System, и который в те годы стал вице-президентом компании Sun Microsystems.

«Представьте себе, — не в силах сдержать возмущение, комментирует приведённую цитату проф. Вирт, — что эти слова были написаны в 1960-е годы, и замените слово «Java» на слово «Алгол». Автора сочли бы человеком психически ненормальным, слова его большей частью чужды науке и не имеют с ней ничего общего. Сегодня никто даже не возмущается. Нет никакой реакции от «научного» сообщества. Как же низко могла пасть компьютерная наука? И это делается с молчаливого одобрения такой уважаемой организации, как IEEE Computer Society?»

Сам по себе чей-то научный авторитет (каковым обладал Вирт) не был для Поттосина безусловным критерием истины. Помнится, он довольно горячо выражал своё несогласие с позицией знаменитого Питера Наура по роли интуиции в программировании. («Интуиция в разработке программного обеспечения». Эту статью я готовил для второго номера «Технологии программирования».) По его аргументации и убеждённости было видно, что он глубоко прорабатывал данный вопрос.

Запомнились встречи с Поттосиным в Москве в конце 1990-х. Игорь Васильевич по обыкновению приглашал в гостиницы («Академическая», «Золотое кольцо»), где останавливался проездом или по московским делам. Обсуждали различные темы, даже не имеющие отношения к программированию. Но в разговорах рано или поздно речь заходила о научно-популярном издании для программистов. Игорь Васильевич был удивительно целеустремлённый человек, который с невероятной мягкостью и деликатностью настойчиво продвигал важные вещи. «Мне нравится эта идея», — не раз говорил он. И было ясно, что он имел в виду: не вздумайте её хоронить!

В год ухода из жизни Игоря Васильевича Поттосина (2001) известный академик РАН Абел Гезевич Аганбегян приглашал меня возглавить всё ИТ-направление в Академию народного хозяйства (АНХ, с 2010 г. — РАНХиГС), но пришлось вежливо отказаться. Целиком поглощала интересная, захватывающая работа (будущий Европейский центр программирования, проф. Никлаус Вирт). А усидеть на двух стульях было просто невозможно.

Большое турне Вирта осенью 2005 г., в организации которого мне довелось участвовать с подачи проф. Юрга Гуткнехта (ETH Zurich) и Д. М. Сагателяна, вдохнуло новую жизнь в старый замысел. Удалось подключить к этому и журнал «Мир ПК», где в те годы работал научным редактором. Большое турне Вирта очень остро высветило тот гигантский разрыв между спросом и предложением — «промывкой мозгов» молодого поколения и действительно фундаментальными вещами, лежащими вне сиюминутной конъюнктуры.

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

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

Новосибирск. 25.06.1996. Участники PSI'96 (слева направо — А. Е. Недоря, Н. Вирт, И. В. Поттосин).


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

Деньги, деньги, деньги… Люди спешат побольше заработать, поскорее ухватить, лишь бы не опоздать. А что же с фундаментальностью, с классикой, с нетленкой?

Помнится, в школьные годы в Московском Дворце пионеров меня некогда постоянно встречала галерея чемпионов мира по шахматам — Стейниц, Ласкер, Капабланка, Алехин, Эйве, Ботвинник, Смыслов, Таль, Петросян, Спасский… Их лица, их портреты. Юным они давали точные ориентиры в необъятном звёздном небе шахматной истории.

В студенческие годы в Большом зале Московской консерватории, о котором с придыханием говорят первоклассные иностранные музыканты и для которых этот зал сродни священному храму, на стенах — портреты великих музыкантов мира: Бах, Моцарт, Бетховен, Гайдн, Шуберт, Шуман, Шопен, Глинка, Чайковский, Римский-Корсаков, Даргомыжский, Мусоргский…

Эти пантеоны памяти и славы невольно заставляют относиться с благоговением к великим мастерам прошлого. Без которых не было бы настоящего, да и было бы совсем иное будущее.

Когда же и в компьютерных науках, в программировании появится нечто подобное? Когда мы там, наконец, увидим пантеон, портреты крупнейших учёных, вкл. лауреатов Премии Тьюринга (аналога Нобелевки): Алана Тьюринга, Эдсгера Дейкстры, Питера Наура, Энтони Хоара, Никлауса Вирта, Дональда Кнута, Джона Маккарти, Джона Бэкуса, Роберта Флойда, Эдгара Кодда, Кена Томпсона, Денниса Ритчи, Алана Кея, Барбары Лисков и др.?

Сегодня у молодых людей на устах имена Стива Джобса, Билла Гейтса, Марка Цукерберга, Эрика Шмидта… Послушайте, но это не учёные. Это же пигмеи на фоне былых титанов и атлантов.

Когда увидим портреты наших выдающихся компьютерных учёных и инженеров, ковавших славу отечественной школы: Сергея Лебедева, Михаила Лаврентьева, Сергея Соболева, Леонида Канторовича, Алексея Ляпунова, Мстислава Келдыша, Андрея Колмогорова, Виктора Глушкова, Андрея Ершова, Игоря Поттосина, Бориса Малиновского, Михаила Шура-Бура, Святослава Лаврова, Валентина Турчина, Гурия Марчука, Александра Нариньяни, Гелия Поварова, Николая Брусенцова, Всеволода Бурцева?..

Быть может, для осознания важности всего этого потребуется, как и в музыке, ещё несколько столетий?

Вопросы, разумеется, риторические. Но горькая суть от этого не меняется.


• Поттосин. Открытый архив СО РАН: http://soran1957.iis.nsk.su/pa2/Home/Portrait?id=piu_200809052254

• Пантеон программирования. Памяти Игоря Васильевича Поттосина: https://proza.ru/2021/04/25/1347


Руслан Богатырев — математик, поэт, публицист, историк науки и искусства, директор Европейского центра программирования им. Леонарда Эйлера, вед. эксперт Комитета национального наследия, главный редактор арт-журнала «Пантеон».