Автоматизация программирования

В 1953 году Сергей Сергеевич Камынин принял участие в разработке первой в стране большой производственной программы. Это была программа расчета динамики водородного взрыва, предназначенная для нашей первой электронной машины БЭСМ-1. Сейчас трудно себе представить, как можно было решать такую сложную задачу на машине с 512 ячейками оперативной памяти, работающей с очень частыми сбоями и исключительно в ночное время (днем расположенный поблизости ФИАН постоянно генерировал броски напряжения). В течение нескольких месяцев зимы 1954 года каждый рабочий «день» Сергея Сергеевича начинался в 5 вечера и заканчивался в 9 утра. Весной этого же года произошли еще два важных события: в отделе была запрограммирована и запущена в эксплуатацию более полная модель водородной бомбы (на этот раз для машины «Стрела-1»), и А.А.Ляпунов заложил основы теоретического программирования, предложив формальное описание модели программы в виде ее логической схемы.

На основании этого задела летом 1954 года Сергей Сергеевич выдвинул идею автоматизации программирования, т.е. создания программы, которая сама будет писать программы. В качестве входного языка была выбрана логическая схема А.А.Ляпунова, дополненная содержательным описанием операторов в виде формул и других алгоритмических комментариев. Осенью был готов первый вариант такой «программирующей программы» - ПП-1. О нем было сообщено на научном семинаре М.В.Келдыша, который сразу распознал его как открытие самостоятельного научного направления. К весне 1955 года был завершен второй, более полный вариант, — ПП-2, - который использовался для решения многих производственных задач и послужил прототипом при создании аналогичных программ для других отечественных ЭВМ. В последствии известный американский ученый Кодд провел исследование пионерских работ по автоматизации программирования в СССР и на Западе, скрытых друг от друга «железным занавесом» секретности. Оказалось, что ПП-2 была хронологически четвертым в мире компилятором и первым, в котором создаваемая программа подвергалась оптимизирующим преобразованиям. К сожалению, Сергей Сергеевич был чрезвычайно скуп на публикации и приучил к этому своих друзей - учеников. Поэтому ПП-2 была только вскользь упомянута в его совместном с Э.З.Любимским докладе на Всесоюзной конференции в 1956 году, а подробно описана лишь в 1958 году, в серии статей в первом выпуске сборника «Проблемы кибернетики» по настоятельному предложению его редактора А.А.Ляпунова. В 1960 году появилось описание языка АЛГОЛ, который надолго определил пути развития автоматизации программирования. Началось соревнование программистских коллективов во всем мире за более полную и эффективную реализацию АЛГОЛа.

В 1963 году Сергей Сергеевич активно участвовал в проектировании и реализации одного из первых компиляторов с полной версии языка АЛГОЛ. Позднее, в 1965 году, он с группой товарищей осуществил еще одну реализацию АЛГОЛа, на этот раз для компьютера «ВОСТОК», созданного в ИПМ под руководством А.Н.Мямлина. К этому времени программисты осознали, что компиляторы с одного и того же языка для разных компьютеров содержат много общего, и появилось желание научиться создавать такие трансляторы, которые могли бы функционировать на различных компьютерах. Сначала в США попытались создать универсальный компилятор, изготовляющий программы для разных компьютеров на основе их формализованного технического описания (UNCOL). Однако, такого описания найти не удалось, - его и до сих пор никто не придумал. Сергей Сергеевич вместе с В.В.Луциковичем и Э.З.Любимским предложил совершенно другой подход - не технический, а алгоритмический. Для создания универсальных (мобильных) компиляторов, способных функционировать на компьютерах различных типов, ими был разработан специальный алгоритмический машинно-ориентированный язык абстрактной машины АЛМО. Он одновременно использовался и как язык для написания компиляторов, и как язык для оформления составляемых этими компиляторами программ. Для каждого конкретного типа компьютера оставалось разработать только один компилятор с языка АЛМО, а все остальное «раскручивалось» автоматически. По своему назначению и используемым средствам АЛМО явился прототипом созданного значительно позднее популярного языка «С».

Разработанные на основе этой технологии в Институте под руководством Сергея Сергеевича трансляторы с языков Алгол и Фортран были установлены на всех отечественных моделях компьютеров того времени.

© Институт прикладной математики им.М.В.Келдыша РАН, 2004 г.