В 1952 г. я был студентом 4-го курса механико-математического факультета Московского университета. То, что называется специализацией, уже совершилось. Год назад я записался на незадолго перед этим организованную кафедру вычислительной математики, возглавляемую тогда академиком Сергеем Львовичем Соболевым. В этом выборе уже сыграла свою роль обрывочная информация об электронных вычислительных машинах, выполняющих с фантастической скоростью длинные последовательности арифметических действий. Для студентов, которые в восхищении разевали рты на ладные и стрекочущие как пулеметы механические счетные машины “Мерседес”, только-только появившиеся на кафедре, такая информация об ЭВМ, конечно, кружила голову, однако носила слишком уж “потусторонний” характер. Поэтому, не сознавая внутренней подготовленности к этому новому, еще не получившему названия делу, я блуждал между занятиями по конструктивной теории функций и алгеброй релейно-контактных схем, старательно сдавая экзамены и предаваясь другим делам, типичным для студента.
В начале 1952/53 учебного года в нашей группе “вычислителей”, как называли студентов кафедры С. Л. Соболева, прошел слух о появлении на факультете пришедшего откуда-то, вроде бы из военной академии, молодого доктора по теории множеств Алексея Андреевича Ляпунова, который объявил спецкурс под необычным названием: “Принципы программирования”.
К этому времени первая информация об ЭВМ начала попадать на страницы научных журналов. Велась интенсивная работа и в СССР. Однако, как и другие работы по новой технике, она в то время проводилась под покровом секретности, и поэтому поставленные нам в учебный план курсы “Счетные машины и приборы” и “Теория машин и механизмов”, хотя и читались весьма достойными специалистами и преподавателями, но забивали наши головы кучей деталей, которые, будучи, возможно, и интересными сами по себе, но взятые вместе, лишь подчеркивали переломный момент, переживаемый вычислительной техникой. Лекции Алексея Андреевича были первым курсом, на сто процентов направленным в будущее.
Первая лекция состоялась в самый разгар семестра, 29 октября 1952 г. Перед нами предстал чуть выше среднего роста худощавый скромно одетый человек запоминающейся наружности. Первое впечатление было смешанным. Несколько сбивчивая речь, импровизационный стиль лекции, но заразительный энтузиазм, усиливаемый пронизывающим искрящимся взглядом черных глаз. Абсолютная незаинтересованность укреплять авторитет общения внешними средствами, обычно присущими профессиональному преподавателю, в сочетании с не менее абсолютной непреклонностью принципиальных положений. В нашей группе “вычислителей” к 4-му курсу было несколько “ангажированных” студентов, уже углубившихся в разные разделы математики, которых курс Ляпунова никак не затронул. Оказалась, однако, дюжина студентов, для которых этот курс сыграл важнейшую формирующую роль в их дальнейшей жизни. Почти все они внесли впоследствии заметный вклад в становление программирования и информатики.
Реальное значение курса “Принципы программирования”, конечно же, не ограничивалось приобщением некоторого числа студентов к новому виду деятельности. Во время чтения этого курса у Алексея Андреевича сложились основы “операторного метода” программирования — системы понятий, приведшей к символическим языкам программирования, трансляторам, теории схем программ, к тому, что и поныне составляет основу программирования.
С позиций диспетчера, ведающего расписанием и аудиториями, курс “Принципы программирования” мог вызвать лишь беспокойство в связи с его нерегулярностью: три лекции в 1-м семестре и пять — во 2-м. На первых лекциях мы знакомились с системой команд условной трехадресной ЭВМ. Задним числом можно понять, что система команд машины БЭСМ (быстродействующей электронной счетной машины) Академии наук СССР уже тяготела над лектором, но говорить о ней как о реальной машине было еще рано. Сразу после довольно схематичного описания системы команд мы принимались за упражнения в составлении программ. Программы записывались в таком виде, который сейчас можно было бы назвать перемещаемой формой с использованием базовых адресов. В качестве источника алгоритмов брались разложения элементарных функций в степенной ряд, вычисление многочлена, численное интегрирование дифференциального уравнения, решение треугольной системы линейных уравнений. Предпоследняя лекция имела пророческое название “Синтез программ”, вошедшее в литературу через 25 лет. В последней лекции от 24 апреля уже содержалось представление об операторах программы, их классификация и методика программирования на основе операторного метода.
Конечно, изложение основных понятий операторного программирования было еще далеко от совершенства, но главное было в том, что эти понятия возникли буквально у нас на глазах. В значительной степени успех курса основывался на том, что Алексей Андреевич сразу угадал как специфические стороны деятельности, называемой программированием, так и ее универсальный характер, не зависящий от конкретного содержания решаемой задачи. Текстологический анализ, который, однако, потребовал бы более подробных и аккуратных записей, нежели — увы! — моих, мог бы обнаружить, как зерна проницательных догадок и “вечных” истин прорастали в самых разных уголках изложения, далеко не всегда на его главной линии.
Помимо поступательного развития идей курса был также очевидный и захвативший нас момент прозрения, скачком изменивший горизонты программирования. Это произошло после очередной командировки Алексея Андреевича в Киев, где он работал на первой электронной вычислительной машине, построенной и собранной под Киевом в здании бывшего Феофаниевского монастыря под руководством Сергея Алексеевича Лебедева. Алексей Андреевич вернулся из Киева преображенным. Активный творческий процесс всегда порождает избыточные идеи, среди которых не всегда удается сразу выбрать наиболее верную; для нас, однако, было исключительно важным равное, поистине совместное, размышление над процессом программирования, определившее затем на годы направление и содержание работы.
Говоря о влиянии Алексея Андреевича на студентов и на формирование основных понятий программирования, нельзя, конечно, ограничиваться только пересказом восьми лекций курса. Одновременно с чтением лекций Алексей Андреевич руководил курсовыми работами, выступал на семинарах, беседовал со студентами у себя дома. Не раз по окончании лекции он прихватывал очередного собеседника и вел его от Моховой к себе на Шаболовку. Часового пути хватало, чтобы обсудить все на свете, от метода Монте-Карло до разницы между ДНК и РНК, о роли информационных потоков в управляющих системах, об истинном значении кибернетики, о сущности моделирования в технике и в биологии, о минералах и живых сообществах, о Лузине и о французских математиках, о теории множеств и о внешней баллистике.
Деятельность Алексея Андреевича Ляпунова в МГУ в начале 50-х годов интересна далеко не только для истории науки. Мне хотелось бы закончить свои краткие заметки несколькими уроками Ляпунова, имеющими прямое отношение к текущему моменту.
Сейчас, в период фронтального продвижения курса основ информатики и вычислительной техники, раздается немало возражений о преждевременности преподавания этого курса в условиях отсутствия неограниченного доступа школьников к ЭВМ. При всей внешней убедительности такой позиции меня не покидает мысль, что за этой критикой иногда кроется убогая неспособность говорить и рассуждать о предмете, предваряя этим разговором и рассуждением физическое обладание соответствующим предметом. Главное содержание курса информатики — это не ловкое манипулирование клавиатурой ЭВМ и знание деталей ее устройства, а несколько исключительно мощных и глубоких идей, связанных с понятиями информации, ее обработки и представления, алгоритмов и со способами “перекачки” знания в действие и наоборот. Усвоить эти идеи и увидеть, как они действуют в ЭВМ и в повседневной практике людей, вот истинное постижение информатики.
Первый урок Ляпунова состоял в том, что он научил нас говорить и рассуждать о программировании, видеть в машине хотя и самодовлеющую, но конечную стадию процесса программирования, которое проявляло себя как естественное продолжение и развитие математической практики “домашинного” периода.
Еще одно воспоминание. В мае 1954 г. курс обучения в МГУ был позади, и я готовился к государственным экзаменам. В это же время я уже восемь месяцев работал по совместительству в Институте точной механики и вычислительной техники АН СССР, где готовилась к сдаче государственной комиссии машина БЭСМ. Я готовил очередной просчет по своей программе обращения матриц, когда меня пригласил Сергей Алексеевич Лебедев и попросил прочитать без промедлений короткий интенсивный курс программирования для ведущих инженеров института со сдачей экзамена в конце. Вначале я был шокирован. У меня за спиной был лишь курс Ляпунова и две-три программы, написанные для БЭСМ. Передо мной была аудитория, состоявшая из разработчиков БЭСМ, пропустивших эту машину через свои головы и руки и работающих за ее пультом с ловкостью виртуозов. Опасения мои оказались хотя и естественны, но напрасны. Выяснилось, что каждый из нас знал свое, и идейный заряд, полученный на лекциях Ляпунова, нельзя было заменить никакими деталями практического свойства.
Второй урок Ляпунова как учителя состоял в том, что он никогда не пытался скрыть от студентов, что овладевает новой наукой программирования вместе с нами. Уже ко второму семестру его курса выяснилось, что многие из нас программируют более ловко, чем лектор. В результате лекции иногда превращались в поток встречных предложений, которые Алексей Андреевич воспринимал без тени раздражения. Мера его доверия и интереса к собеседнику была безгранична. Надо сказать, что вообще взыскательное доверие к активной молодежи было очень характерным для научной и общественной атмосферы в Московском университете и в той части Академии наук, которая занималась становлением вычислительной техники и прикладной математики. Научное и нравственное влияние А. А. Ляпунова, С. Л. Соболева, М. В. Келдыша, С. А. Лебедева, М. А. Лаврентьева, А. А. Дородницына было прямым и не демпфировалось посредственностью, стоявшей в стороне от живого и нового дела и только еше ждущей своего часа.
Не буду обобщать и скажу лишь о пережитом мною опыте. На пятом курсе я учил разработчиков БЭСМ программированию. На первом году аспирантуры мне поручили руководить дипломниками МГУ. Через год я начал организовывать отдел теории программирования в Вычислительном центре Академии наук СССР. На третьем году аспирантуры у меня появился собственный аспирант из Китайской Народной Республики (к слову говоря, переживший “культурную революцию” и ставший ведущим специалистом в Академии наук Китая), а Сергей Львович Соболев пригласил меня заведовать лабораторией в Сибирское отделение АН СССР. Написанный мною отчет по программирующей программе для БЭСМ был без всяких проволочек по инициативе Л. А. Люстерника напечатан в виде отдельной книги, успев стать первой в мире монографией по автоматизации программирования. Это было реальное ускорение в области неназванной еще в то время информатики, ускорение, которое в дальнейшем было трагически растеряно в близорукой погоне за дешевым успехом копирования прототипов.
И, наконец, третий урок Ляпунова. В 1952 г. оставалось еще четыре года до ХХ съезда КПСС. “Талмудисты и начетчики” еще в полный голос разоблачали “лженауку кибернетику” и презренных “менделистов-морганистов”. Алексей Андреевич с бесстрашием и осмотрительностью боевого офицера-фронтовика не лез под пули, но в своих беседах терпеливо и бескомпромиссно рассказывал о сущности кибернетики, о единстве законов обработке информации, об информационной теории наследственности и ее физико-химических носителях, о научном подвиге Николая Ивановича Вавилова. При этом особенно важным было отсутствие дешевого разоблачительства, исключительно позитивный характер аргументации, сила которой многократно возрастала от широкого кругозора, подкрепляемого постоянной работой мысли.
©1997-98 Лаборатория Конструирования и Оптимизации Программ
Институт Систем Информатики CO PAH
Web master webmst@pcosrv.iis.nsk.su