Создание в СССР первых ЭВМ было расценено как весьма важное научно-техническое событие. С.А. Лебедев был избран в 1953 г. действительным членом АН СССР по специальности вычислительная техника, а Ю.Я. Базилевский -- удостоен звания Героя Социалистического Труда. В Академии наук и в Министерстве высшего образования был осуществлен ряд организационных мер, направленных на формирование и укрепление коллективов, связанных с производством и использованием новой вычислительной техники.
Работы по прикладной математике в МИАНе были сконцентрированы под руководством М.В. Келдыша в Отделении прикладной математики, ставшим впоследствии Институтом прикладной математики. В составе Отделения в 1953 г. был организован первый в СССР отдел программирования, который в течение первого года возглавлял А.А. Ляпунов, а с 1954 г. и по настоящее время -- ШБ.
Годом раньше в Московском государственном университете была реорганизована кафедра вычислительной математики для обучения прикладных математиков, подготовленных для работы с ЭВМ. Заведующим кафедрой стал академик С.Л. Соболев.
Выпуски этой кафедры 1953-1954 гг. создали первое поколение специалистов, сознававших себя профессиональными программистами с самого начала своей карьеры.
В 1955 г. был создан Вычислительный центр Академии наук СССР, предназначенный для ведения научной работы в области машинной математики и для предоставления открытого вычислительного обслуживания другим организациям Академии наук. Его директором стал академик А.А. Дородницын.
В 1952 г. началась работа в области программирования в отделе приближенных вычислений Ленинградского отделения МИАНа (ЛОМИ), который возглавлял Л.В. Канторович, уже известный своими работами по функциональному анализу и пионерскими исследованиями в области линейного программирования.
После переезда С.А. Лебедева в Москву сотрудники его лаборатории были переведены по его инициативе в Институт математики АН УССР. Директор института Б.В. Гнеденко создал вычислительную лабораторию. Через несколько лет эту лабораторию возглавил В.М. Глушков, незадолго до этого защитивший докторскую диссертацию по теоретической алгебре. Кроме математического, Глушков имел также инженерное электротехническое образование. В его проницательном представлении область вычислительной техники давала благоприятную возможность для реализации своих знаний. На базе вычислительной лаборатории в 1957 г. был создан Вычислительный центр Академии наук УССР. ставший впоследствии Институтом кибернетики АН УССР.
В 1953 г. М.А. Лаврентьев передал пост директора ИТМиВТ С.А. Лебедеву. При образовании Вычислительного центра значительная часть сотрудников-математиков была переведена из института в ВЦ.
В 1955 г. в МГУ был организован Вычислительный центр, развернувший научную и учебную работу на ЭВМ М-2. Коллектив И.С. Брука в 1956 г. выделился из состава Энергетического института АН СССР и образовал Лабораторию управляющих машин и систем АН СССР. ставшую впоследствии Институтом электронных управляющих машин (ИНЭУМ).
Именно в этих коллективах были выполнены первые эксперименты и научные исследования, заложившие основы развития и применения первого поколения ЭВМ и нашедшие свое полное выражение в первом общесоюзном научном собрании, посвященном вычислительной технике. Это была конференция под названием "Пути развития советского математического машиностроения и приборостроения", которая состоялась в Москве с 12 по 17 марта 1956 года в стенах Московского университета.
По тем масштабам это была в высшей степени представительная и обширная конференция. На ней присутствовало свыше тысячи участников и было сделано 75 докладов [29]. Конференция проходила в обстановке большого политического и нравственного подъема, вызванного историческим XX съездом КПСС. На этом съезде, в частности. при определении программы развития народного хозяйства в шестой пятилетке 1956-1959 гг. было сказано ([30], стр. 447-448):
"Всемерно развивать радиотехническую и приборостроительную промышленность. Увеличить за пятилетие изготовление счетных и счетно-аналитических машин -- в 4,5 раза Усилить работы по конструированию и производству автоматических быстродействующих машин для решения сложных математических задач и счетноматематических машин для автоматизации управления производственными процессами Широко развернуть научно-исследовательские работы по полупроводниковым приборам и расширить их практическое применение".
Этот период сопровождался преодолением догматического отношения к идеям кибернетики, единства законов управления и переработки информации и первыми экспериментами применения ЭВМ в моделировании интеллектуальной деятельности.
Этот общий контекст, а также деловая и насыщенная техническая программа объясняют ту исключительную роль, которую конференция сыграла в развитии вычислительного дела в СССР. Она отчетливо и захватывающе охарактеризовала новую реальность, созданную электронными вычислительными машинами.
Выдвигая на первый план обсуждение вопросов, связанных с универсальными электронными вычислительными машинами, организаторы конференции тем не менее стремились подчеркнуть разнообразие средств вычислительной техники и представить программу, сбалансированную между несколькими направлениями. Таким образом, три из шести пленарных докладов, относящиеся к вычислительной технике, были посвящены следующим вопросам:
С.А. Лебедев -- "Быстродействующие универсальные вычислительные машины" (общая сводка первых советских ЭВМ дана в табл. 1);
Ю.Я. Базилевский -- "Специализированные машины и пути их развития";
В.Б. Ушатов -- "Моделирующие установки и тенденции их развития" ([28], Пленарные заседания, 31-43. 61-132).
С.А. Лебедев следующим образом идентифицировал основные направления развития универсальных математических машин:
1) повышение быстродействия;
2) увеличение емкости памяти;
3) повышение надежности;
4) упрощение математической и технической эксплуатации.
Под упрощением математической эксплуатации С.А. Лебедев понимал "упрощение логики машин, разработку более совершенных типов машин в отношении логики программирования и решения математических задач". В качестве примера развития конструкции ЭВМ в этом направлении он привел автоматическую модификацию адреса команды и контроль за числом повторений цикла.
Пленарный доклад А.А. Дородницына "Решение математических и логических задач на быстродействующих электронных счетных машинах" ([28], Пленарные заседания, 44-52), посвященный главным образом решению уравнений с частными производными, содержал ряд постановок и прогнозов, связанных с разработкой и использованием ЭВМ:
"Анализ задач, которые выдвигаются сейчас в различных областях техники, показывает, что требование увеличения быстродействия до величины порядка миллиона операций в секунду и увеличения объема оперативной памяти до десятка и даже нескольких десятков тысяч чисел является вполне актуальным и, может быть, даже скромным требованием".
Это была первая постановка проблемы, приведшая через восемь лет к появлению БЭСМ-6.
Следуя основной цели изложения, авторы охарактеризуют научные результаты в области программирования, доложенные на конференции.
Операторный метод А.А. Ляпунова
А.А. Ляпунов начал работу в отделе программирования ОПМ МИАНа, имея за плечами военные годы офицера-артиллериста, докторскую диссертацию по дескриптивной теории множеств и опыт преподавания математики в военной академии. Особенностью его научного стиля были широкая естественно-научная культура, интерес к выявлению общих закономерностей и широких аналогий и редкий дар проповедничества. Ему принадлежит заслуга формирования в СССР взгляда на программирование как на научную дисциплину.
А.А. Ляпунов проанализировал программирование в целом и выделил ряд его фундаментальных концепций. Процесс выполнения программы он рассмотрел как дискретную последовательность единиц действия (операторов), извлекаемых на основе правил управления из текста программы. Важной компонентой теории стала классификация операторов, введенная А.А. Ляпуновым: арифметические операторы (операторы присваивания), действующие на данные, логические операторы (как вычисление логических отношений, так и передачи управления), а также операторы модификации, действующие на другие операторы. Операторы модификации основывались на идее зависимости операторов от некоторого параметра (обычно, целочисленная переменная) и содержали в себе операторы формирования (инициализации), переадресации (модификация в соответствии с приращением параметра) и восстановления начального вида оператора. Текст программы представлялся состоящим из двух частей: схемы программы -- символьного представления операторов, указывающего передачи управления и классификацию операторов, и спецификации операторов, указывающей их конкретное содержание. Это расчленение текста программы отражало также два этапа программирования: общее планирование алгоритма, находившее свое отражение в построении схемы программы и содержательной спецификации операторов (творческая часть), и затем систематическую реализацию отдельных операторов средствами машинного языка (рутинная, формализуемая часть). Подчеркивалась также возможность систематических преобразований схемы программы, направленных на ее улучшение. Эта методология, которую А.И. Китов назвал операторным методом программирования [33], была описана А.А. Ляпуновым в первом в СССР учебном курсе программирования, прочитанным им в 1952-1953 гг. в МГУ под названием "Принципы программирования", и в конспективной форме была представлена докладом на конференции ([28], ч. III, стр. 5-8). сделанным совместно с Ю.И. Яновым.
Этот метод привел к созданию теории схем программ и к первым в СССР трансляторам, а также способствовал созданию многолетнего стиля публикаций алгоритмов, который сохранился в некоторых работах до настоящего времени [34].
Первые трансляторы
Задачу автоматизации программирования в СССР впервые поставил А.А. Ляпунов в 1953 г. в рамках своего операторного метода как поиск систематических процедур, реализующих операторы схемы программы в терминах машинных команд, отправляясь от некоторой формализованной записи о функционировании этих операторов.
Идея создания интегрированной программной системы, производящей полную реализацию всех операторов, которые образуют схему программы, была высказана С.С. Камыниным и Э.З. Любимским летом 1954 года. В течение нескольких месяцев они опробовали на машине "Стрела" алгоритмы трансляции простых программ, содержащих арифметические, логические и переадресующие операторы. Эта экспериментальная программа была названа программирующей программой (сокращенно ПП-1). Ее успешная работа побудила ШБ собрать более широкую команду молодых программистов, чтобы создать систему не только для отработки методов трансляции, но и для организации производственной работы. Транслятор, законченный в этом же году, получил название ПП-2. В связи с этим были приложены большие усилия для преодоления одной из главных трудностей программирования того времени, связанной с отличием традиционной формы задания вычислительных алгоритмов от программы. С этой целью было введено понятие расширенного алгоритма, который представляет собой исходный алгоритм, дополненный специфическими операциями, обеспечивающими рациональное размещение данных в памяти ЭВМ и компактность программы. Исходное задание для транслятора должно было быть задано в виде расширенного алгоритма. Во входном языке ПП-2 были предусмотрены средства, существенно облегчающие задание такого алгоритма. Входной язык сохранял введенное Ляпуновым разбиение текста программы на схему и спецификацию операторов. К перечню операторов были добавлены операторы засылки, позволяющие сократить число вхождений индексированных величин в программу, и операторы восстановления операторов программы к начальному виду. Программирование выражений не учитывало приоритета двуместных операций и выполнялось методом редукции, т. е. замены во входной строке запрограммированного терма символом рабочей ячейки (при этом выяснялось, не входит ли терм в выражение несколько раз).
Параллельный проект транслятора для машины БЭСМ (ПП БЭСМ) был реализован АЕ, Л.Н. Королевым и В.М. Курочкиным вместе с группой сотрудников ИТМиВТ. Толчком к этому проекту послужили доклад Э.З. Любимского о ПП-1, сделанный на семинаре в МГУ осенью 1954 года, и эксперимент Л.Н. Королева по программированию арифметических выражений с учетом приоритета операций. Входной язык ПП БЭСМ содержал арифметические и логические операторы, несколько напоминающие современные операторы выбора. Наиболее важным новшеством в ПП БЭСМ были операторы цикла и индексные переменные (индексами могли быть параметры циклов). Наконец, текст программы не делился на схему и спецификацию операторов, а представлял собой бесформатный линейный текст, в котором операторы разделялись точкой с запятой.
Эти трансляторы были представлены на конференции в докладах С.С. Камынина, Э.З. Любимского и АЕ ([28], ч. III. 9-29).
Крупноблочное программирование
Л.В. Канторович, обсуждая проблемы программирования с группой выпускников Ленинградского университета 1953-1954 гг., образовавших программистское ядро ЛОМИ, высказал ряд глубоких идей: обратил внимание на роль информационных связей в представлении программы, в частности изображения выражения как дерева; ввел в рассмотрение составные данные как объект программы и определил понятие дескриптора (соответствующие правила композиции составных объектов из простых получили название "геометрические операции"). Процесс выполнения программного комплекса, представляющего собой информационную сеть (схему) отдельных модулей, Л.В. Канторович рассматривал как функционирование некоторой сверхпрограммы, которая определяет выполнение модулей на основе анализа информационных и управляющих связей схемы. Некоторые положения крупноблочного программирования позднее были переоткрыты или заново осмыслены на более высоком уровне при разработке систем работы со структурными файлами и в том, что сейчас называют модульным программированием.
Технология программирования и решения задач на ЭВМ
Вопросы технологии программирования и решения задач на ЭВМ обсуждались главным образом в докладе ШБ ([28], Пленарные заседания, 53-60). Уже первые годы работы на ЭВМ показали, что "истинная производительность машины должна определяться числом фактически решенных на машине задач, временем, необходимым для реализации решения каждой задачи, и количеством людей, занятых на подготовке и проведении задач и технической эксплуатации машины".
В докладе был поднят вопрос о взаимодействии "математика" и "программиста" при решении задачи на машине. Была выдвинута формула равноправного сотрудничества при определенном разделении специализаций: "Успешная работа по созданию новых методов вычислений возможна лишь при тесном контакте работников, занимающихся математической постановкой задач, с программистами. Целесообразность тесного контакта не означает, однако, смешение функций. Вопрос о выборе расширенного алгоритма решения столь же существенен, как и правильный выбор исходного алгоритма, в то же время эта сторона дела имеет свои специфические особенности и целесообразно, чтобы данная часть работы проводилась программистом."
К 1956 г. в ОПМ МИАНа постепенно сложились технологические принципы организации счета задач. Главной фигурой у машины стал оператор, формирующий и пропускающий на основе формализованных инструкций пакет за дач в отсутствие их авторов. Проблема "изгнания" программистов из машинного зала оказалась не простой. Стали различаться счетные и отладочные запуски, срочные и дежурные задачи. В 1955 г. появились первые программы контроля программ: интерпретирующая прокрутка с выдачей отладочной информации, "посмертные" выдачи, программы печати границ "линейных участков" программы и т. п.
В это же время в программировании сложилась по нынешним понятиям парадоксальная ситуация, когда автоматизация программирования с помощью трансляторов опередила в своем развитии другие методы, в частности методы символического кодирования и использования библиотек программ. В докладе ШБ была поставлена задача более гармоничного объединения методов и расширения понятия "автоматизация программирования".
Следует отметить, что в целом 1956 год был годом большого роста популярности вычислительного дела. В июне вышла первая в СССР книга учебного характера по ЭВМ [33]. В июне-июле 1956 года на III Всесоюзном математическом съезде программисты впервые выступили перед математической аудиторией с докладами о своих работах [35]. Это были в основном повторения докладов мартовской конференции. Кульминацией выхода вычислительной науки и практики на общественную арену была специальная сессия Академии наук СССР, состоявшаяся в октябре 1956 года [36]. На этой сессии выступили все ведущие ученые, причастные к рождению и первым годам развития ЭВМ в СССР. Это было единственное в своем роде собрание, когда в строгий стиль академических заседаний вплелись элементы зрелища: доклад о машине БЭСМ сопровождался демонстрацией огромной электрофицированной динамической схемы, поясняющей принцип программного управления, а во время доклада по машинному переводу была установлена прямая телетайпная связь с машиной для не посредственной демонстрации выдачи перевода заданного в этот же момент текста.
Это был период неограниченного оптимизма, своего рода компьютерная эйфория -- детская болезнь, охватившая, как пандемия, все страны мира, приступившие к производству и освоению электронной вычислительной техники.
©1997-98 Лаборатория Конструирования и Оптимизации Программ
Институт Систем Информатики CO PAH
Web master webmst@pcosrv.iis.nsk.su