Вспоминая Сашу
Д.А. Корягин
Всевышней волею Зевеса
Он был Системный Программист.
C Дмитрием Александровичем Корягиным. Празднование 50-летия института
Основатели фирмы ЛЮКС
Это строчки из дружеской оды, которую Саша (Эдуард Зиновьевич Любимский) написал по случаю пятидесятилетия Сергея (Сергея Сергеевича Камынина) — своего многолетнего соратника и друга. Но эти строки, конечно же, и о нём — общепризнанном основателе и гуру отечественного системного программирования.
Перелистывая страницы памяти, я чётко осознал, что невозможно написать очерк о Саше, не рассказав о Сергее. На протяжении более трёх десятилетий именно этот интеллектуальный дуэт, который они шутя называли фирмой “ЛЮКС” (ЛЮбимский Камынин Сергей), являлся главным генератором новаций, научным руководителем и нравственным стержнем направления системного программирования в Институте прикладной математики им. М.В.Келдыша.
Откровенно говоря, такое решение позволяет мне в некоторой степени выполнить наше давнее с Сашей желание — написать очерк о Сергее, что к нашему стыду мы так и не сделали.
Я познакомился с “Пупками”, так с пиететом их называли близкие товарищи, 3 мая 1959 года. Мне этот день, как сказал В.С. Высоцкий, “не забыть нипочём”. Я, будучи лейтенантом, был откомандирован из НИИ-4 Министерства обороны в Отделение прикладной математики (ОПМ) МИ АН им. В.А. Стеклова, для того чтобы в сжатые сроки освоить библиотеку стандартных программ для компьютера (или, как говорили в те годы, электронной вычислительной машины, ЭВМ) М-20.
До конца дней буду благодарен моему первому начальнику, доктору технических наук В.д. Ястребову, за эту командировку. Я с 15 лет носил погоны, не был знаком с формами отношений в гражданских институтах, почти не имел никакой практики в программировании, и поэтому первое общение с Сашей и Сергеем произвело на меня неизгладимое впечатление. Это было откровение: есть другой мир, где те, кто старше тебя и намного превосходят по уровню знаний и компетентности, беседуют с тобой заинтересованно и доброжелательно, как с равным.
Кто такие С.С. Камынин, Э.З. Любимский и М.Р. Шура-Бура, я уже себе представлял, поскольку ещё в период подготовки дипломного проекта прочитал их эпохальную статью «Об автоматизации программирования при помощи программирующей программы» [2] и, мало что понимая в программировании, заинтересовался, как же это ещё и автоматизируют. Но конечно, о встрече с этими небожителями от программирования через три месяца после окончания ВВИА им. Н.Е. Жуковского я и подумать не мог.
Далее пошли необычные будни: я познакомился с другими программистами и сотрудниками легендарного, это не преувеличение, ОПМ МИ АН и со временем уже не мыслил свою рабочую жизнь без них. Довольно быстро между мной и “Пупками”, ставшими моими Наставниками в гражданском мире и Учителями в науке, сложились искренние товарищеские отношения, которые с годами переросли в большую дружбу.
Это удивительно, но, на первый поверхностный взгляд, они были, вообще говоря, во многом как бы “ортогональны”.
Сергей, выросший в обеспеченной семье, воспитанный бонной, имел обострённое чувство ранимости и справедливости, и был, что называется, человеком без кожи. Его жизненная линия была полна точек разрыва, векторы его интересов часто изменялись, постоянными оставались преданность науке и абсолютное научное бескорыстие. Этот двухметровый гений поражал окружающих парадоксальным подходом к самым различным проблемам, с которыми ему приходилось сталкиваться. А ведь он был “недоучка”: ушёл со второго курса МВТУ им. Н.Э. Баумана, оставив за собой шлейф более десятка побед, которые он одержал в различных студенческих конкурсах. Но вот учиться ему было очень скучно, а потому и ушёл. Он окончил “свою высшую школу”: овладел аппаратом высшей математики и механики, посещал различные семинары в МГУ, работал в оборонных КБ и, наконец, стал сотрудником отдела М.В. Келдыша в МИ АН им. В.А. Стеклова, причём не рядовым, хотя и числился по должности лаборантом. Так, в первых закрытых отчётах этого отдела, посвящённых исследованию возможностей составных крылатых ракет, Сергей был соавтором таких корифеев отечественной космонавтики, как М.В. Келдыш, Д.Е. Охоцимский, Т.М. Энеев [3, 4].
Титульный лист курсовой работы
Детство и юношество Саши, как и многих тех, кто родился в 30-ые годы, окрашены жестокой рукой войны. Московская школа, эвакуация, Суворовское училище, снова школа и её окончание с золотой медалью, поступление на механико-математический факультет МГУ. Саша, который вышел из семьи военного инженера, уже с юношеских лет отличался естественной последовательностью и логичностью во всех принимаемых им решениях. Он был генетически мудрым, всегда сдержанным, демократичным и ободряюще общительным коллегой и руководителем.
Университет Саша закончил с отличием по кафедре вычислительной математики в 1954 г., но главное, то что на старших курсах он стал слушателем спецкурса «Принципы программирования» и постоянным участником первого в стране семинара по программированию, который был организован по инициативе основателя советской кибернетики и программирования, член-корреспондента АН А.А. Ляпунова. Этот семинар, безусловно, стал первой вехой в истории отечественного программирования, а одно только упоминание даже не всех его участников должно завораживать слух профессиональных программистов: А.П. Ершов, Ю.И. Журавлёв, И.Б. Задыхайло, О.С. Кулагина, Э.3. Любимский, Э.С. Луховицкая, Р.И. Подловченко, В.А. Федосеев, В.С. Штаркман.
Однокашники (с А.П.Ершовым)
Концептуальной основой работы семинара по программированию стал предложенный А.А. Ляпуновым метод операторного программирования. Согласно этому методу, на неком формальном языке программа представляется в виде так называемой схемы счёта — строки произведения типовых операторов и логических условий, которая соответствует управляющему графу программы, и совокупности спецификаций каждого оператора и условия. Такое формальное представление программы послужило естественным посылом к исследованию возможности автоматического построения на его основе соответствующего представления программы в коде компьютера.
Саша, со свойственным его таланту стремлением к конкретике, быстро увлёкся проблемой применимости языка метода операторного программирования в качестве входного языка программного процессора, генерирующего машинную программу, и первым из участников семинара в 1954 г. сделал доклад о таком процессоре, названном им программирующей программой — ПП. Таков исток отечественного системного программирования.
В 1954 г. после окончания МГУ Саша был направлен в ОПМ, где в отделе программирования, руководителем которого был А.А. Ляпунов, он уже с 1953 г. готовил дипломную работу и совместительствовал. Тогда же в 1953 г. он и познакомился с Сергеем. Я убеждён, что это тот самый счастливый случаи знакомства, который произошел “в нужное время и в нужном месте”.
Дело в том, что время было, действительно, очень горячее: шли работы по вводу в эксплуатацию первого в стране серийного компьютера Стрела-1, который затем в течение пяти лет стал основным вычислительным ресурсом ОПМ. Ход этих работ показал, что в структуре ОПМ необходимо иметь не только отдел инженерно-технического обеспечения компьютеров, которым руководил А.Н. Мямлин, но и отдел программного обеспечения компьютеров. Главными функциями этого отдела должны были стать продуктивное участие в наладке и тестировании ЭВМ, а также разработка прикладных программ для проведения важных расчетов, связанных с государственными атомными и космическими проектами. С этой целью для руководства отделом программирования директор ОПМ — академик М.В. Келдыш пригласил профессора М.Р. Шура-Бура, а А.А. Ляпунов возглавил новый отдел, тематически ориентированный на фундаментальные проблемы кибернетики, в состав которого вошла часть сотрудников прежнего отдела программирования. Таким решением М.В. Келдыш подчеркнул своё особое отношение к роли коллектива программистов в деятельности ОПМ.
В этой связи мне вспоминается, как во время банкета в доме учёных по случаю 20-летия ИПМ АН СССР М.В. Келдыш пришёл в зал, где собрались программисты, поздоровался со всеми, а с Сергеем персонально, и предложил тост за программистов, с мягкой улыбкой сказан сакраментальные для уха программиста слова: «Я очень уважаю программистов: они роют землю».
Назначение М.Р. Шура-Бура сыграло исключительно важную роль в жизни программистов ОПМ. Учёный с широким кругозором, М.Р. Шура-Бура в короткий срок расширил тематику деятельности отдела, содействуя процессу развития исследований и разработок, направленных на создание инструментальных средств программирования. В конечном счёте, это выразилось в том, что отдел программирования перерос свою исходную, чисто утилитарную функциональность и стал одним из научно-исследовательских подразделений ОПМ — отделом системного программирования.
Но это уже произошло позже, а сразу после ввода в эксплуатацию компьютера Стрела-1 в отделе программирования был начат цикл работ по созданию для этой машины прикладных программ по методикам и алгоритмам, поступавшим из математических отделов.
По личным воспоминаниям одного из патриархов ОПМ — В.Я. Гольдина [5], важнейшей задачей, которая тогда решалась в рамках атомного проекта, был расчёт мощности взрыва водородной бомбы. Подобного рода расчёты были выполнены ещё в 1953 г., и проведенный в том же году взрыв экспериментального устройства показал, что математические модели и методы, разработанные в ОПМ, имеют явное отношение к природе процесса взрыва, поскольку расхождение между результатами расчётов и экспериментом составило всего 30% мощности.
Появление компьютера Стрела резко расширило возможности проведения таких расчётов. Это оказалось очень важным фактором в условиях, когда в конце 1954 г. — в начале 1955 г. в ОПМ поступил целый ряд новых заданий на проведение расчётов, связанных с тем, что А.Д. Сахаров, Я.Б. Зельдович и другие пришли к новой идее — современному варианту водородной бомбы, так называемой слойки.
Переход к расчётам на компьютере Стрела-1 потребовал трансформировать методы с учётом их реализации на компьютере, улучшить модель и создать программы расчётов. Эти программы создавались в отделе программирования, а Игорем Задыхайло и Сашей была разработана одна из основных программ под шифром 3-01. Созданные программы позволили математикам проводить серийные расчёты уже в конце 1954 г.
Осенью в ноябре 1955 г. был вначале взорван экспериментальный вариант слойки, а затем было взорвано уж современное изделие. Замечательным оказалось то, что результаты проведенных расчётов отличались от результатов эксперимента всего на 10%. Уверенность физиков, что расчёты соответствуют реальности, была настолько велика, что они специально уменьшили мощность заряда.
Правительство очень высоко оценило эти работы, в числе награжденных были Игорь и Саша, удостоенные орденов Трудового Красного Знамени.
Разработка прикладных программ ничуть не снизила у Саши интерес к проблеме автоматизации программирования, и уже в 1954 г. он вместе с Сергеем на инициативной основе реализовал прототип программирующей программы, получивший название ПП-1. Этот прототип позволил подтвердить корректность основных положений предложенного Сашей подхода к автоматическому построению машинных программ по описаниям алгоритмов, представленных на языке операторных схем. Результат этой инициативной работы был доложен на семинаре ОГIМ и получил высокую оценку со стороны М.В. Келдыша, который выразил мнение, что программирование формируется в самостоятельное научное направление с собственной фундаментальной и прикладной проблематикой.
Успех с прототипом стимулировал развёртывание работ по созданию рабочей версии программирующей программы — ПП-2. Участниками этих работ, выполнявшихся под руководством М.Р. Шура-Бура, были И.Б. Задыхайло, С.С. Камынин, Э.С. Луховицкая и В.С. Штаркман. Необходимо всё же отметить, что Саша здесь был не только одним из исполнителей, но также идеологом и фактическим куратором на всех этапах создания ПП-2. По сравнению с ПП-1, в рабочей версии ПП-2 был реализован ряд новаций, направленных на обеспечение более высокого качества генерируемой рабочей программы. Они нашли своё отражение в алгоритмах генерации рабочего кода выражений, экономного отведения памяти для так называемых рабочих ячеек, оптимизации вычислений индексных выражений. Использование ПП-2 позволило программистам ОПМ существенно повысить продуктивность работ по составлению новых рабочих программ.
Цикл проведенных в ОПМ исследований и разработок, связанных с созданием инструментальных средств автоматизации программирования, не ограничивался только вопросами создания программирующей программы, а включал в себя также вопросы создания ряда рутинных программ, упрощающих процессы написания программ в коде машины, отладку и тестирование программ. Многие из разработок такой направленности были выполнены сотрудниками отдела программирования под непосредственным руководством Саши.
В 1957 г. Саша подготовил к защите кандидатскую диссертацию с названием «Об автоматизации программирования и методе программирующих программ» [6]. Его научным руководителем был М.Р. Шура-Бура. Надо отметить, что это была первая отечественная диссертационная работа, содержание которой целиком было посвящено тому, что теперь принято называть информационными технологиями или, в более широком контексте, информатикой. Работа была представлена на соискание учёной степени кандидата физико-математических наук и неоднозначно воспринята математическим сообществом. С одной стороны, связанные с использованием вычислительной техники математики, которые были в меньшинстве, очень высоко оценивали материал этой диссертации. С другой стороны, традиционные математики выражали мнение, что эта работа не математическая, поскольку в ней нет формальных доказательств правильности предложенных автором решений, но и не утверждали, что она относится к техническим наукам. (Удивляться здесь нечему, поскольку в то время в перечне ВАК не было соответствующей специальности.)
В конечном счёте, после убедительной аргументации со стороны М.В. Келдыша и М.Р. Шура-Бура диссертация была принята к защите Учёным советом Вычислительного центра АН СССР, и он единогласным голосованием присудил Саше учёную степень кандидата физико-математических наук. По моему глубокому убеждению, для программирования эта защита явилась серьезным научным прецедентом. Ведь, по существу, Саша своей диссертационной работой не формально, а практически доказал теорему существования решения для проблемы автоматической генерации кода машинной программы по формальному описанию алгоритма на языке, отличном от языка машины (хотя, что может быть формальнее программы, реализующей такого рода процесс). Этот прецедент стал исходным посылом для поддержки многих и многих последующих работ, связанных с информационными технологиями.
Опыт и багаж основных идей, накопленные в ходе работ по автоматизации программирования, позволили коллективу отдела программирования достойно принять вызов “Алгол-бума”, который возник на рубеже 50-60-х годов в мировом сообществе в связи с публикацией формального описания алгоритмического языка Алгол-60. Этот язык представлял собой качественно новый инструментарий для описания алгоритмов решения широкого спектра физических и инженерно-технических задач. То что описания синтаксических конструкций Алгола были представлены в виде строгих металингвистических формул, открывало широкие перспективы как в плане проведения различных лингвистических исследований его грамматики, так и в плане реализации перевода (трансляции) описания алгоритма с Алгола на язык компьютера. Заметим, что в связи с появлением Алгола у нас в стране вместо термина “программирующая программа” стал широко использоваться термин “транслятор”.
Появление в СССР в начале 60-х годов серийно производившегося компьютера М-20 позволило начать работы по автоматизации программирования на основе использования Алгола сразу в нескольких вычислительных центрах страны. Однако необходимо отметить, что хотя компьютер М-20 и являлся существенным шагом в развитии отечественной вычислительной техники, тем не менее, его технологические возможности не вполне соответствовали сложности тех алгоритмов, которые было необходимо реализовать при трансляции с канонической версии Алгола-60, т. е. опубликованной международной рабочей группой экспертов, на язык компьютера М-20. С учётом этого обстоятельства, как, впрочем, и трудностей в решении некоторых процедур трансляции, первые разработчики Алгол-трансляторов в рабочей версии входного языка транслятора отказывались от ряда возможностей канонической версии Алгола.
Такой подход был неприемлем для М.Р. Шура-Бура и “Пупков”. Как я уже отметил, Алгол был вызовом, и они считали, что ОПМ должен ответить на вызов, как говорится, “по полной”, не вводя практических ограничений ни на входной язык, ни на размеры входных программ. Работа семинара по созданию транслятора под шифром ТА началась осенью 1961 г. В январе 1962 г. группа в составе И.Х. Зусман, С.С. Камынина, Д.А. Корягина, Э.С. Луховицкой, В.В. Луциковича, Э.З. Любимского, В.В. Мартынюка, Г.М. Олейник-Овод, В.И. Собельмана, Л.В. Ухова, М.Р. Шура-Бура под руководством Михаила Романовича и Саши начала работы по программированию транслятора. В августе 1962 г. была реализована первая версия транслятора, получившая шифр ТА-1. Её трёхмесячная эксплуатация позволила выявить ряд слабостей в трансляторе и наметить необходимые усовершенствования. Модернизация ТА-1 проводилась на фоне опытной эксплуатации, и в начале весны была представлена новая версия — ТА-2 [7].
На семинаре ОПМ была сделана обстоятельная презентация транслятора ТА-2, по результатам которой М.В. Келдыш издал приказ, предписывающий математическим отделам ОПМ начать интенсивное освоение новой технологии программирования.
Разумеется, в рамках данного очерка я не могу представить, хотя бы кратко, все возможности транслятора ТА-2. Но, тем не менее, позволю себе остановиться на двух решениях, которые, как мне кажется, весьма наглядно отражают профессионализм его разработчиков.
Одной из “изюминок” Алгола был его аппарат процедур. Формализм этого аппарата, в частности, предусматривал широкие возможности использования различных видов параметров процедур без их типизации, а также возможность рекурсивного исполнения процедуры. Согласно интерпретации семантики оператора вызова процедуры, во время исполнения рабочей программы вместо него в тело вызывающей программы должно было подставляться настроенное по фактическим параметрам тело процедуры, и при этом необходимо было устранить все возможные коллизии, связанные с именованием параметров, а также многоуровневой локализацией данных при рекурсивном исполнении процедуры.
Понятно, что непосредственная реализация этой интерпретации, т. е. “простая подстановка тела процедуры”, практически исключала возможность использования рекурсивных процедур. для обеспечения такой возможности было необходимо разработать довольно сложный механизм ведения стека данных для каждого экземпляра выполняемого оператора процедуры. Разработчику блока процедур в трансляторе ТА-1 не удалось в полной мере справиться с этой задачей. В трансляторе ТА-2 блок обработки процедур фактически полностью был перепрограммирован Сашей. Из всех отечественных трансляторов только ТА-2 поддерживал практически неограниченный уровень рекурсии.
Решение задачи реализации рекурсивности процедур считалась в период “Алгол-бума” очень престижным. В мире программирования в то время даже существовал известный шутливый тест с названием «Man or Boy?», который проверял потенцию рекурсивности, обеспечиваемую транслятором. Если транслятор допускал более чем 10-уровневую рекурсивность, то он получал оценку “Man”, в противном случае “ Boy ”. В мае 1963 г. транслятор ТА-2 уже демонстрировался на международной конференции по автоматизации программирования в Киеве. Разработчики Альфа-транслятора [8] специально привезли на эту конференцию тест «Man or Boy?», настроенный на 12-уровневую рекурсию. Транслятор ТА-2, потратив немало времени, с этим тестом успешно справился.
Я подчеркнул временной показатель этого тестирования, чтобы рассказать о другом системном решении, достигнутом при разработке транслятора ТА-2. Предложенная Сашей схема реализации аппарата процедур Алгола, как я уже говорил, практически не ограничивала степень рекурсивности, но требовала большого однородного адресного пространства для ведения стека данных. Компьютер М-20 обладал более чем скромным, по нынешним меркам, объёмом оперативной памяти — около 20 Кбайт, и конечно, необходимо было разработать механизм, который устранял бы такое аппаратное ограничение. Сашей было найдено решение в форме реализации однородно адресуемой виртуальной памяти, которая физически отображалась на все устройства внешней памяти компьютера М-20. Разумеется, за это надо было платить увеличением времени доступа к данным, но само ограничение на объем непрерывно адресуемой памяти, используемой транслятором ТА-2 и генерируемой рабочей программой, было устранено. По-видимому, это была первая реализация концепции виртуальной памяти у нас в стране.
Наконец, нельзя не отметить, что быстрое и продуктивное решение вопросов, касающихся трансляции и исполнения процедур, как впрочем, и транслятора в целом, оказалось возможным благодаря тому, что на компьютере М-20 с самого начала его использования в комплект поставки входила разработанная М.Р. Шура-Бура инфраструктурная программа в виде интерпретирующей системы ИС-2 [9]. Эта система обеспечивала эффективное динамическое подключение различных библиотечных подпрограмм, используемых в ходе исполнения основной рабочей программы.
В 1965 году, когда математические отделы ОПМ МИ АН уже успешно провели разработку ряда важных прикладных программ для компьютера М-20, используя транслятор ТА-2, и убедились в практической продуктивности программирования на языке высокого уровня, они выразили желание иметь подобного рода инструментарий на компьютере Восток. Этот оригинальный компьютер, построенный в 1959 г. в СиМ под руководством доктора технических наук А.Н. Мямлина, пользовался значительным успехом у программистов и инженеров, поскольку был более чем в два раза быстрее М-20 и имел развитый внутренний аппарат контроля функционирования оборудования.
В течение весны 1965 года “бригада смышлёных”, в составе С.С. Камынина, В.В. Луциковича, Э.З. Любимского и В.А. Семячкина, разработала для компьютера Восток транслятор ТА-3 [101, в качестве входного языка которого было выбрано подмножество Алгола, не содержащее ряд практически не используемых в ОПМ возможностей канонической версии Алгола. Такое решение позволило выполнить разработку очень быстрого (на генерацию выходной строки затрачивалось столько же времени, сколько на ввод исходной программы) и весьма дружелюбного транслятора. В значительной степени успех этой разработки определило выбранное для транслятора ТА-3 конкретное представление Алгола, которое предоставляло возможности широкого использования аппарата так называемых процедур-кодов [11]. Эти языковые конструкции макрогенерации разрешали сочетать технологию программирования на языке высокого уровня с программированием в коде компьютера и в тех случаях, когда это было критично, прибегать к “программистской эквилибристике”.
Обложка журнала Com ACM (январь 1961 г.)
Начавшийся после появления Алгола-60 лавинообразный процесс языкотворчества (что весьма наглядно иллюстрировалось на обложке журнала Communications of the ACM в виде недостроенной Вавилонской башни), а также быстрое развитие компьютерной индустрии обусловили, что разработка трансляторов стала одним из важнейших этапов в создании комплексов системного программного обеспечения компьютеров. При таком тренде естественно возникла задача создания инструментария, позволявшего интенсифицировать системное программирование.
Эта задача Сергея и Сашу в полной мере увлекла ещё во время работ по транслятору ТА-2, и они, скрепя сердце, провели разработку ТА-3 в коде Востока, хотя уже к этому времени имели вполне чёткое представление, как надо решать проблему построения трансляторов в условиях разнородности языков программирования и компьютеров.
Они предложили использовать для создания трансляторов язык некоего абстрактного компьютера, отражавшего особенности структур данных и систем команд, поддерживаемых существовавшими тогда отечественными компьютерами [12]. Существенно то, что этот язык, названный АЛМО (Алгоритмический Машинно-Ориентированный Язык), рассматривался авторами не только как непосредственный инструментарий разработчиков средств системного программного обеспечения, но и как промежуточный язык-посредник при трансляции с различных проблемно-ориентированных языков. Идея была в том, чтобы заменить M x N трансляторов с M входных языков высокого уровня в N машинных языков, M+N трансляторами “из M в один” и “из одного в N”.
В течение пяти лет концепция АЛМО была успешно реализована в виде «Универсальной системы программирования» [13] на большинстве эксплуатируемых в стране компьютеров, таких как БЭСМ-4, БЭСМ-6, Минск-22, Урал-11, Урал-14, Весна, АСВТ-4000. Для всех этих компьютеров сотрудниками ИПМ и ряда других организаций были разработаны компиляторы с языка АЛМО, которые использовались при инсталляции трансляторов, выполнявших перевод с языков Алгол и Фортран на АЛМО. Технологический цикл развёртывания системы программирования занимал не более недели.
Особенно ярко и ёмко талант Саши, как крупного учёного, руководителя сложного проекта и, действительно, системного программиста от Бога, проявился при разработке в ИПМ операционной системы для компьютера БЭСМ-6.
Создание в 1967 г. этого компьютера коллективом ИТМ и ВТ под руководством академика С.А. Лебедева несомненно занимает особое место в истории отечественной индустрии вычислительной техники. В течение двух десятилетий БЭСМ-6 была общепризнанным флагманом во всех вычислительных центрах страны. для системного программирования появление БЭСМ-6 знаменовало начало качественного нового этапа развития: архитектурные и инженерные возможности, предоставляемые БЭСМ-6, позволили ведущим научным коллективам страны начать реализацию новых проектов, принципиально не уступающих зарубежным разработкам.
В ИПМ такой проект был инициирован в 1967 г. И.Б. Задыхайло, С.С. Камыниным и Э.З. Любимским [14]. Наш программистский шлягер, посвящённый этому событию, начинался строчками:
Как же нам не веселиться,
Не грустить от разных бед?
Два пупка и Задыхайло
Написали нам проект.
Проект предполагал весьма сложный и широкий фронт работ, как по операционной системе, так и по системе программирования. Поскольку отдел программирования ИПМ не располагал достаточными для реализации проекта программистскими ресурсами, то для участия в работах были приглашены сотрудники из ряда других организаций. И в связи с этим мы распевали:
Крикнул клич тогда Любимский
И собрал большую рать.
Прибежали программисты
Из углов всея Руси,
И пошла тут заваруха,
Что не можно описи.
Руководство таким масштабным, наукоёмким, административно жёстко не регламентированным проектом требовало не только высочайшей научной компетентности и оперативности при принятии решений, но и умения тактично координировать работу всех участников проекта, среди которых были и весьма амбициозные личности. Если к этому добавить, что, к сожалению, почти с самого начала работ по проекту Михаил Романович в течение года не смог по состоянию здоровья руководить отделом, то совершенно очевидно, что этот проект стал моментом истины возможностей таланта Саши как учёного и менеджера.
Я не скрываю своих эмоций, рассказывая о том, как Саша раскрылся в это время. Его охватил настоящий азарт и в научном поиске, и в повседневной программистской рутине. Я поражался и восхищался тем, как лих он был в “штыковом бою”, когда отлавливал какой-нибудь “кикс” в системе, находясь за пультом компьютера, или же выявлял причину “зависания” системы чисто аналитически, например, во время перерыва между двумя партиями бриджа. Он не писал программ для этой системы, но мне казалось, буквально ощущал каждую строку её кода. При этом он как ребёнок радовался, когда удавалось найти какое-то оригинальное решение, существенно расширявшее возможности системы и отвечавшее новым запросам пользователей. Так это было в случае реализации идеи управляемой виртуальной памяти [15, 16]. Ни разу в период “эпопеи” ОС ИПМ я не видел его поникшим, хотя временных своих неудач, как и неприятностей, привносимых недоброжелателями (без них никак нельзя!), у него было достаточно.
В системе был предложен и разработан ряд новых и интересных идей управления аппаратными ресурсами компьютера, а также организации взаимодействия задач и процессов. С позиций современного тренда распределённого компьютинга, намного опережающей своё время была реализация идеи о коллективе (или сообществе) прикладных программ, моделирующих различные сущности реального мира и взаимодействующих по имеющим место правилам общения между этими сущностями. В этой связи просто удивительно, насколько созвучны разработанные в ОС ИПМ механизмы таким современным концепциям как грид-компьютинг, ориентированная на службы архитектура, ориентированные на службы утилиты знаний.
В 1973 г. Саша блестяще защитил на Учёном совете Института кибернетики АН УССР докторскую диссертацию [17], посвящённую ОС ИПМ. Здесь я хочу особо подчеркнуть, что диссертация и сама система получили неформальную очень высокую оценку таких сдержанных на комплименты корифеев отечественной информатики, как А.П. Ершов, Л.Н. Королёв и С.С. Лавров.
После завершения работ по системе ОС ИПМ творческие интересы Саши оказались связаны с рядом приложений, где были востребованы технологии системного программирования.
Однажды в 1973 г. на заседании партийно-хозяйственного актива (была такая форма научного руководства!) ИПМ академик А.А. Самарский ностальгически вспомнил о золотом времени, когда прикладники бок о бок с программистами создавали программные комплексы для решения важных задач. Он не назвал никаких фамилий, но, конечно, имел в виду то, о чём я рассказал в начале очерка. Александр Андреевич сказал, что сейчас появились новые задачи, требующие специализированных системных средств поддержки процесса разработки прикладных программных комплексов.
Саша очень живо реагировал на это выступление и, толкнув меня в бок, (я, грешен: любил что-нибудь почитать во время таких заседаний) предложил обратить внимание на этот прикладной запрос. Так начался в Институте цикл работ по пакетам прикладных программ. Надо сказать, что в это время и Сергей, и Саша вели работы, которые отражали их личные текущие научные интересы, непосредственно не связанные с проблематикой пакетов прикладных программ, но, тем не менее, их роль и участие в этом цикле трудно переоценить.
Так, например, за основу методического пакета МП [18, 19], осуществлявшего автоматическое планирование вычислений, мы взяли разработанную Сергеем и Юрой Бухштабом информационно-логическую систему с дедуктивным выводом. Такой подход позволил быстро создать пакет, осуществлявший решение довольно сложных планиметрических задач на треугольниках. Результаты, полученные в ходе работ по пакету МП, в свою очередь стали основой для направления исследований, связанных с решением задач планирования целенаправленной деятельности. Вопросы этого направления, развитого в работах Саши и его любимой ученицы Л.С. Коруховой [20, 21], составили тематику семинара, который уже много лет проводится в МГУ кафедрой “Системного программирования” факультета ВМиК.
Как известный эксперт и практик в области системного программирования, в начале восьмидесятых годов Саша был приглашен к участию, в качестве научного руководителя, в работах, связанных с созданием систем информационно-справочного обслуживания редакционно-издательской и управленческой деятельности. Надо отметить, что он вошёл в это совершенно новое для него поле приложений, не имея за спиной сформировавшуюся команду исполнителей. Но высокий авторитет учёного и менеджера, а главное, обширный круг специалистов, уже прошедших в совместных работах или семинарах “Школу Любимского”, позволили ему в короткий срок создать удивительно интересный коллектив. В этой команде опыт и знания уже сложившихся учёных, таких как Ю.А. Бухштаб, В.Г. Вальтер, И.Х. Зусман, Л.С. Корухова, органично и эффективно сочетались с честолюбивым азартом и творческой энергией большой группы аспирантов и недавних выпускников кафедры “Системного программирования” факультета Вычислительной математики и кибернетики МГУ.
Значительными результатами этого периода работ Саши являются создание инструментально-базового комплекса для системы редакционно-издательской подготовки и выпуска газеты инструментальный комплекс для разработки документно-ориентированных информационных систем и широкий цикл исследований, посвященный, вопросам информационной поддержки крупных организаций [22, 23, 24].
С середины девяностых годов, когда наш Институт, благодаря модернизации компьютерного парка и подключению к Интернету, получил “окно в Мир” [23], творческие интересы Саши стали связаны с решением ряда теоретических и практических вопросов пространственно-распределённого компьютинга. Он не проявил особого внимания к первичной технологии распределённого компьютинга — метакомпьютингу, поскольку рассматривал последний как “чисто сетевое” решение проблемы интеграции ресурсов. Но со свойственной ему широтой и глубиной охвата проблемы включился в работы, ког а мы начали заниматься раскруткой технологий грид-компьютинга. Это и неудивительно, поскольку в нём Саша видел очередной шаг на пути к созданию всемирного искусственного разума и ту роль, которую сыграет при осуществлении этого шага идея коллектива программ, воплощённая им в ОС ИПМ четверть века назад. В науке он был реалист-романтик, и его последние публичные выступления привлекают опережающим видением “извне и изнутри” процесса развития и создания всемирного мозга [26, 27].
Конечно, мои воспоминания “сквозь призму ИПМ” официозны, поскольку Институт был только частью, хотя и большой, его жизни, а ведь для многих и многих людей он был прежде всего УЧИТЕЛЕМ.
Сотни студентов нашей страны познавали программирование на лекциях Любимского или с “кирпичом Любимского” [28] в руках. Сорок пять его учеников стали кандидатами наук, а пятеро из них докторами наук. Профессор Московского университета, Почётный профессор Вильнюсского университета, научный консультант ряда докторантов, заслуженный деятель науки России. Опять сухие статистические строки, но за ними судьбы людей, посвятивших себя программированию, людей, для которых имя Любимского стало путеводным символом в профессии и в жизни.
Мне посчастливилось быть близким к нему человеком и благодаря этому увидеть и узнать многое, что наполняло повседневный мир личной жизни Саши. Рассказать об этом сухо я не могу, а так как надо, не сумею. Единственное, что нельзя не сказать, так это то, что ему была дарована гармония. Я убежден, что именно гармоничность его натуры предопределяла интерес, который он вызывал у окружающих, и делала его лидером и в работе, и в компании. Кстати, энциклопедичность его знаний, острота и строгая логичность мышления, а также внутренняя поэтика ярко проявлялись не только в работе, но и в наших, как теперь принято говорить, корпоративных празднествах. Сценарии капустников, тексты песен, розыгрыши и спонтанные хохмы во время таких мероприятий — всё это воспроизводилось Сашей, как нам казалось, легко, с подкупающей искренностью и естественностью.
Ну и, конечно, я подвергся бы всеобщему женскому порицанию, если бы не сказал том, что Саша был идеальным мужем. Только двумя этими словами нельзя раскрыть суть его неповторимого супружеского кредо, но сделать больше, чем выделить их в тексте, я не смогу. Лучше прочитайте такое его стихотворение.
ВАЛЬС
Давно мы были юными,
Красивыми, бездумными,
Друзья, любовь, учёба, комсомол.
И встречи наши частые...
Ах, как мы были счастливы —
Не верится, что этот сон прошёл.
Промчались годы длинные,
Ну а у нас с Ириною
Не кончилась любовная пора.
Как прежде мы встречаемся
И каждый день прощаемся
Когда я в институт иду с утра.
У нас всё в жизни общее —
И то, что есть, и прошлое.
И будущее тоже на двоих.
И горести и радости,
И всё, что будет в старости,
Любовь хранит в объятиях своих.
Промчались годы длинные,
Ну а у нас с Ириною
Любовь ещё по-прежнему сильна.
И утром на работу я
Иду, согрет заботою,
И силуэт любимый у окна.
И ещё. Наверное, ничто так правдиво не говорит об одухотворённости человека, как его чувство сострадания ближнему, а Саша был преисполнен этим чувством.
ЧУЖАЯ БОЛЬ
Как боль себе чужую взять?
Нет, я не Бог и не сумею
Боль человечества принять,
Да и призванья не имею.
Хотел бы даром обладать,
Чтоб боль хотя бы одного,
Уже уставшего страдать,
Я испытать мог за него.
И видя, как светлеет взгляд
И отступает беспредел,
Я этой боли был бы рад,
Легко бы я её терпел.
И улыбнулся бы тайком,
Когда от этой малости
В душе моей растаял ком
Вины, любви и жалости...
Увы, Господь нам не велит
Меняться ношей и судьбой.
Один болезнь свою влачит,
Своё бессилие — другой.
Много-много дней сроднили нас, и мы воспринимали друг друга как братья: это особенно остро, поскольку оба рано потеряли младших братьев.
Когда мы виделись в последний раз, я сказал ему: «Сашка, ты всегда и навсегда со мной».
Литература
- Камынин С.С., Любимский Э.З. Автоматизация программирования. // Труды конф. Пути развития советского математического машиностроения и приборостроения. М., 1956. Ч. з. с. 9-17.
- Камынин С.С., Любимский Э.З., Шура-Бура М.Р. Об автоматизации программирования при помощи программирующей программы. // Сб. Проблемы кибернетики, М., Физматгиз, 1958. Вып. 1, С. 46-74.
- Келдыш М.В., Камынин С.С., Охоцимский Д.Е., Энеев Т.М. Баллистические возможности составных ракет. // Отчёт МИАН СССР, 1951. Впервые опубликован в томе “М.В. Келдыш. Избранные труды. Ракетная техника и космонавтика”: М., Наука, 1988.
- Келдыш М.В., Егоров В.А., Камынин С.С., Охоцимский Д.Е., Энеев Т.М. Теоретические исследования динамики полёта составных крылатых ракет дальнего действия. // Отчёт МИАН СССР, 1953. Впервые опубликован в томе “М.В. Келдыш. Избранные труды. Ракетная техника и космонавтика”, М., Наука, 1988.
- Гольдин В.Я. Математическое моделирование в атомной проблеме (48-70 гг.)
- Любимский Э.З. Об автоматизации программирования и методе программирующих программ. Кандидатская диссертация. 1958.
- Шура- Бура М.Р., Любимский Э.З. Транслятор АЛГОЛ-60. // Журнал вычислительной математики и математической физики, т. 4, вып. 1, 1964.
- Волошин Ю.М., Загацкий Б.А., Поттосин И.В., Бабецкий Г.И., Бежанова М.М,, Ершов А.П., Змиевская Л.Л., Кожухин Г.И., Кожухина С.К., Михалевич Ю.И., Мишкович Р.Д., Трохан Л.К. Система автоматизации программирования АЛЬФА. // Журнал вычислительной математики и математической физики, т. 5, вып. 2, 1965.
- Шура-Бура М.Р. Система интерпретации ИС-2. // Библиотека стандартных программ. М.: Изд-во ЦБТИ, 1961.
- Камынин С.С., Луцикович В.В., Любимский Э.З., Семячкин В.А. Транслятор ТА-3. Отчёт ИПМ АН СССР, 1966.
- Камынин С.С., Любимский Э.З. Процедуры-коды в трансляторе ТА-2. // Журнал вычислительной математики и математической физики, т. 5, вып. 4, 1965.
- Камынин С.С., Любимский Э.З. Алгоритмический машинно-ориентированный язык АЛМО // Алгоритмы и алгоритмические языки. М.: Изд-во ВЦ АН СССР. 1967. Вып. 1.
- Богданов В.В., Ермаков Е.А., Маклаков А.В. Программирование на АЛМО. М., Финансы и статистика, 1976.
- Задыхайло И.Б., Камынин С.С., Любимский Э.З. Проект системы математического обеспечения БЭСМ-6. Отд. вып. ИПМ АН СССР, 1967.
- Коновалов Н.А., Крюков В.А., Любимский Э.З., Мартынюк В.В. Об использовании увеличенной оперативной памяти машины БЭСМ-6 в языках программирования высокого уровня на базе ОС ИПМ. Препринт ИПМ АН СССР, Г9 33, 1976.
- Коновалов Н.А., Крюков В.А., Любимский Э.З. Управляемая виртуальная память. // Журнал “Программирование”, № 1, 1977.
- Любимский Э.З. Возможности и принципы построения операционной системы для БЭСМ-6 (ОС ИПМ). Докторская диссертация. 1971.
- Бухштаб Ю.А., Горлин А.И., Корягин д.А., Любимский Э.З. Об планирования расчётных цепочек. “Программирование”, № 3, 1981.
- Бухштаб Ю.А., Горлин А.И., Камынин С.С., Корягин д.А., Любимский Э.З. Интеллектуальный пакет, использующий при планировании вычислений знания о предметной области и функциональных модулях. Журнал “Техническая кибернетика”, №5, 1981.
- Корухова Л.С., Любимский Э.З. О процедурности и непроцедурности в задачах планирования целенаправленной деятельности. // Изв. РАН, Технич. кибернетика, №5, 1994.
- Вакин В.В., Корухова Л.С., Любимский Э.З., Малышко В.В. Ассоциативные методы планирования решений сложных задач Препринт ИПМ им.М.В.Келдыша РАН, 81, 1997.
- Баскин И.А., Бухштаб Ю.А., Лазебников В.Д., Любимский Э.З. Принципы разработки пакета для автоматизации создания информационных систем. Препринт ИПМ АН СССР, № 156, 1986.
- Бухштаб Ю.А., Лазебников В.Д., Любимский Э.З. Архитектура и функциональные возможности программного обеспечения для организации ведения информационных фондов. Препринт ИПМ АН СССР, № 168, 1986.
- Бродская И.М., Любимский Э.З., Ухов Л.В. Реализация гистоиерархического обьектно-ориентированного справочника средствами документной информационной системы ИРИС. Препринт ИПМ им. М.В. Келдыша РАН, Гi9 136, 1995.
- Ермаков А.В., Корягин ДА., Любимский Э.З., Сулханов В.И. Вычислительный комплекс Института прикладной математики им. М.В. Келдыша, основанный на технологии открытых систем. Сб. Информатика и вычислительная техника, изд. ГК РФ по оборонной промышленности, вып. 1-2, 1995.
- Любимский Э.З. На пути к построению глобального общества программ. http://bunich.ru/panorama/content.php?id=4&gid=43
- Любимский Э.З. Общество программ. http://www.inteiros.ru/2007/01/24
- Любимский Э.З., Мартынюк ВВ., Трифонов Н.П. Программирование. Учебное пособие для вузов. М., Наука”, 1980.
Публикуется с согласия семьи Э.З. Любимского
Статья опубликована в музее 15.03.2010 г.