Становление программирования в СССР
(начальное развитие)
Препринт ВЦ СО АН СССР
№12, 1976 год
Р е з ю м е
В этом предварительном историческом исследовании, проведенном на основе публикаций, а также личных воспоминаний и архивов авторов, делается попытка проанализировать первые пятнадцать лет становления и развития программирования в СССР - как человеческой практики, так и научной дисциплины. После краткого описания контекста, в котором происходило развитие, и анализа исходного знания авторы показывают, что многие важные разделы программирования - прежде всего общая методология и теория, а также методы трансляции - развивались в СССР под воздействием мощных собственных творческих импульсов.
Исследование подготовлено для трудов международной научной конференции по истории вычислительного дела, состоявшейся в Лос-Аламосе (США) с 10 по 15 июня 1976 года.
1. Предыстория (1946-1949)
Вторая мировая война приостановила в СССР ряд научных исследований и проектов в области создания, как тогда говорили, математической техники. В то же время в СССР существовала непрерываемая традиция, идущая от П.Л. Чебышева, внимательного отношения и научного интереса к прикладной математике и методам вычислений. В годы становления советской науки она получила особое развитие в научной и общественной деятельности академика А.Н. Крылова. Потребности военного времени содействовали выполнению серии прикладных работ, требовавших разработки численных методов и способов автоматизации вычислений, прежде всего для управления стрельбой. Потребности радиолокации и радиосвязи создали предпосылки для освоения высокочастотной импульсной техники.
Это противоречивое положение было выразительно представлено в тематическом выпуске журнала "Успехи математических наук" (I, №5-6, 1946), начавшем регулярно публиковаться с первого послевоенного года [1]. Выпуск содержал две обзорных оригинальных статьи, подготовленных еще до войны, и две переводных, одна из которых (дифференциальный анализатор Буша) оказала заметное влияние на специалистов. Никакого намека ни на электронную вычислительную технику, ни на концепцию автоматических вычислительных машин с программным управлением этот выпуск даже и не содержал. В то же время вступительная статья Н.Е. Кобринского и Л.А. Люстерника начиналась замечательным предсказанием о роли вычислительной техники, которое даже в наше время могло бы в качестве постановки проблемы открывать любую вычислительную конференцию. Представляется необходимым воздать должное проницательности авторов статьи и привести выдержки из этой постановки проблемы ([1], 4-6).
"... Современная вычислительная практика весьма разнообразна, и соответственно этому весьма разнообразны и технические средства, в ней применяемые.
Прежде всего, укажем на "повседневную" вычислительную практику бухгалтерии, учета, статистики, рядового технического расчета. Математические задачи здесь большей частью несложны - в основном арифметические действия. Но количество людей, занятых их производством, огромно. : В настоящее время производство счетных приборов, обслуживающих эту массовую практику, является в ряде стран отраслью промышленности.
... Особым видом массовой вычислительной практики являются расчеты, :выполняемые в боевой обстановке. Здесь по понятным причинам особую роль играет быстрота расчета, иногда отнюдь не элементарного : Широкое применение подобные счетно-решающие устройства получают и в мирной технике, например, в навигации, в автоматизированном управлении сложными агрегатами и т.д.
Наконец, имеется область "кабинетных вычислений", квалифицированных и трудоемких расчетов, связанных с решением научных и сложных технических задач. Здесь постоянно приходится решать разнообразные задачи, часто новые в смысле своей математической постановки (системы линейных и обыкновенных дифференциальных уравнений, краевые и граничные задачи уравнений математической физики) :
Развитие науки и техники ставит все новые задачи перед вычислительной математикой. Еще недавно интегральные уравнения были изысканной областью теоретического анализа, теперь это - повседневное орудие расчета. Увеличение скоростей самолетов : потребовало решения граничных задач и для уравнения смешанного эллиптико-гиперболического типа. Развитие ракетных двигателей сделало актуальными расчеты траекторий тела с переменной массой. Концепции современной теоретической физики придают особое значение задачам нахождения собственных значений и функций разных операторов:
Актуальные потребности практики и науки привели, таким образом, к созданию новой отрасли техники - конструированию и производству "счетно-решающих устройств", т.е. приборов и машин для решения математических задач.
Появление этих технических средств ставит по-новому задачи вычислительной математики. Алгоритм решения задачи, ориентированный на те или иные технические средства, не всегда должен быть повторением алгоритма, принятого для ее решения ручным способом : Технические средства современной вычислительной математики позволяют "брать в лоб" такие задачи, которые ранее считались практически неразрешимыми и требовали обходных путей : Современная "машинная математика" превратилась в мощное орудие естественно-научных и технических дисциплин, увлекательную комплексную область, требующую совместной работы математиков, техников разных специальностей - механиков, электриков, оптиков и т.д. и физиков.
... Успехи "машинной математики" последнего времени связаны в значительной степени также с развитием автоматики. В современных больших математических машинах мы видим автоматическое управление сложным агрегатом, заставляющее отдельные его части выполнять в заданной последовательности заданные операции, сложные передачи показаний с одних частей машины на другие, регулирование синхронности происходящих процессов и т.д. Можно сказать, что "математическая техника" является экспериментальной базой для автоматики вообще. Тем самым ее достижения имеют большой общетехнический интерес."
Этот дальновидный взгляд на вычислительную технику сложился в стенах Математического института АН СССР (МИАН СССР). Институт в то время был не только средоточием первоклассных исследований в разделах теоретической математики, но и был весьма органически связан с широким кругом проблем прикладной математики, в частности, в связи с возложенными на Академию наук государственными заданиями по важным прикладным исследованиям и расчетам, связанным с созданием новой техники. Этой стороной деятельности МИАН руководил академик М.В. Келдыш, ставший к этому времени заместителем директора Института, академика И.М. Виноградова. Непосредственные вычислительные и машинные аспекты прикладной математики изучались в то время в отделе приближенных вычислений, который возглавлял член-корреспондент АН СССР Л.А. Люстерник.
Идея программно-управляемой автоматической цифровой вычислительной машины пришла в СССР из Соединенных Штатов в 1947 году. В этом году М.Л. Быховский, бывший в те годы чуть ли не монопольным переводчиком англоязычной литературы по вычислительной технике, опубликовал в УМН короткую информационную заметку [2], в которой на основе публикаций [3-5] известил о машинах МАРК I и ЭНИАК. Аналогичная более поздняя статья Хартри [6] и более подробное описание МАРКа I [7] появились в УМН в русском переводе в 1948 г., соответственно, в [8] и [9]. В заметке [2] не было каких бы то ни было оценочных комментариев к материалу, а ее название скорее подчеркивало преемственность в развитии счетно-аналитических машин, нежели выработку новой концепции автоматических вычислителей.
Материалы, которые принято считать основополагающими по логической структуре электронных вычислительных цифровых машин с хранимой программой [10-13], в то время (а в оригинальных изданиях и сейчас) были недоступны в СССР. (Правда, на трудную доступность этих исторических документов сетовали и авторы обзоров [16] и [20], бывшие в США.) Однако в течение 1947-1948 гг. в таких доступных журналах, как
Review of Scientific Instruments
Electronics
Proceedings of the IRE
Mathematical Tables and other Aids to Computation
Journal of Franklin Institute,
а также в ряде других появилось изрядное число публикаций "второго эшелона", содержащих достаточное количество научной информации. С некоторым запозданием в СССР также стали доступны труды известного симпозиума 1947 года в Гарвардском университете [14]. На основе этих материалов в майском - июньском выпуске УМН 1949 г. появилась обширная обзорная статья М.Л. Быховского под названием "Основы электронных математических машин дискретного счета" [15]. Статья, судя по всему, из-за большой спешки, а также в связи с ограничениями на объем не содержала ни списка источников, ни описания конкретных машин. Этот, очень деловой, обзор содержал, главным образом, описание инженерных принципов реализации отдельных узлов ЭВМ и был во многом аналогичен первому монографическому описанию ЭВМ "Быстродействующие вычислительные машины" под редакцией У. Стифлера, подготовленному в США в 1950 г. [16] и изданному в СССР в русском переводе в 1952 г. [17].
Указанная монография вместе с небольшим разделом (глава V) книги Ф. Муррея "Теория математических машин" [18], вышедшей в русском переводе в 1949 г. [19], и широко известной в Европе обзорной статьей Г. Рутисхаузера, А. Шпайзера и Э. Штифеля [20], также переведенной на русский язык и изданной в 1952 г. [21], по-видимому, замыкает ту совокупность исходного знания, которым были вооружены советские специалисты, начавшие в первую послевоенную пятилетку работу в области электронной вычислительной техники.
Возвращаясь к публикации Быховского [15], представляет, как нам кажется, интерес процитировать первое на русском языке изложение принципов программного управления ([15], стр. 110-111):
"... Решение на машине некоторой задачи требует разложения ее в детальную последовательность арифметических и логических действий, причем эта последовательность должна быть записана в виде длинного ряда "команд", которые тем или другим способом вводятся в машину. Каждая такая "команда" в общем случае должна содержать в себе следующие сведения: 1) откуда взять числа, над которыми следует произвести арифметическую операцию, 2) какую операцию следует произвести, 3) куда передать результат и 4) откуда взять следующую команду.
... Команды записываются в кодированном виде посредством обычных цифр (чисел), чаще всего по двоичной системе. Эти числа-команды вводятся в машину при помощи перфокарт (или магнитных лент), откуда они поступают в другие блоки памяти, в частности, в устройства электронной памяти, где с ними оперируют, как с обычными числами. Из электронной памяти данная команда поступает в блок центрального управления, где она дешифрируется в виде включения определенных устройств, выполняющих эту команду. Кроме того, данная команда указывает еще место, где находится следующая команда. В блоке центрального управления указанное обстоятельство дешифрируется в виде подключения к блоку управления в следующем цикле того элемента памяти, где эта следующая команда находится. Таким образом, машина автоматически выполняет любую заданную последовательность. Следует отметить, что данная последовательность команд, необходимая для решения определенной задачи, может быть значительно упрощена, если строить ее по принципу получения новых команд путем логических операций над старыми, а такие операции можно свести к арифметическим действиям над числами, представляющими команды. Вследствие этого в современных машинах числа-команды подаются из устройства памяти не только в блок центрального управления, но и в счетные цепи.
Упрощение и рациональное построение серии программных команд для решения тех или иных задач представляет собой актуальнейшую задачу современных универсальных машин дискретного счета :"
В 1948 году проблемы развития вычислительной техники в СССР стали общегосударственной задачей. Проектирование и производство вычислительных средств были идентифицированы как самостоятельное научно-техническое направление. В Академии наук был создан новый Институт точной механики и вычислительной техники (ИТМ и ВТ). Его возглавил известный специалист в области машин и механизмов академик Н.Г. Бруевич - ученый широкого кругозора, бывший в то время Академиком-секретарем Президиума Академии наук СССР. Этот институт был создан на основе уже существовавших в то время в разных организациях Академии наук научных групп и подразделений, имевших отношение к проблеме механизации вычислений и создания математических инструментов. В частности, из МИАН в ИТМ и ВТ был переведен отдел приближенных вычислений во главе с Л.А. Люстерником. В Министерстве приборостроения и средств автоматизации СССР было создано специальное конструкторское бюро для проектирования электронного вычислительного оборудования. Его возглавил М.А. Лесечко - инженер, хорошо зарекомендовавший себя в решении задач создания новой техники в годы войны и обладающий выдающимися организаторскими способностями.
Примерно в это же время в Киеве директор Института электротехники Академии наук Украины С.А. Лебедев начал инициативные исследования по созданию электронных вычислительных машин. Его начальные идеи лежали в русле, проложенном разработкой ЭНИАКа. С самого начала особенностью интересов С.А. Лебедева было создание быстродействующих цифровых элементов и счетных цепей. Большую поддержку инициативе С.А. Лебедева оказал академик М.А. Лаврентьев, тоже работавший в то время в Киеве. В полуразрушенном городе в то время было очень трудно с производственными площадями, и М.А. Лаврентьев, проводя исследования и эксперименты, направленные на создание теории кумулятивного взрыва, предоставил несколько комнат для сотрудников С.А. Лебедева в старом здании бывшего монастыря в Феофании, под Киевом. Именно там в 1951 году заработала "первая в СССР и континентальной Европе" [22] ЭВМ, получившая впоследствии название МЭСМ (Малая Электронная Счетная Машина) Академии наук УССР.