История развития программного обеспечения

С.А. Лебедев и развитие математического и программного обеспечения вычислительных машин СССР

Целое семейство вычислительных машин, разработанных под руководством академика С. А. Лебедева, получившее название серии БЭСМ, создало реальные условия для появления нескольких отечественных школ, создававших программное обеспечение для этих оригинальных по своей архитектуре вычислительных машин.

Ни один из типов машин С. А. Лебедева не являлся копией какой-либо иностранной ЭВМ, и это по необходимости привело к тому, что возникшие вокруг этих машин программистские школы в своей деятельности отличались самобытностью и умением находить оригинальные подходы к решению теоретических и прикладных проблем программирования.

Это совсем не означает, что зарубежный опыт был игнорирован. Отечественные специалисты изучали этот опыт и брали на вооружение те идеи и методы, которые были перспективны и полезны в сфере их деятельности. Тем более что в 50-60-х годах не было особых проблем доступа к иностранной научной литературе и периодическим изданиям в области математики, кибернетики и программирования. Примечательно, что резкое осуждение кибернетики как "лженауки загнивающего империализма" со стороны официальных философов разработчиками вычислительных машин и программистами никогда всерьез не воспринималось и не мешало им делать свое полезное и нужное для страны дело.

Становление программистских школ в Советском Союзе следует отнести к началу 50-х годов. В этот период появились небольшие по численности группы математиков, привлеченные к разработкам проектов вычислительных машин, проводившимся в небольшом числе проектных организаций и институтов в Киеве, Минске, Москве, Ленинграде, Пензе и ряде других городов. Каждая вновь разрабатываемая машина прежде всего требовала создания для нее программ вычисления элементарных функций. При этом необходимо было добиваться предельной эффективности их вычисления на данной конкретной архитектуре. Это требовало от математиков высокого уровня понимания деталей логики работы аппаратуры процессора. Возможно, что именно это явилось отличительной чертой отечественных школ программирования, чертой теснейшей их связи с инженерными разработками, которая определила в дальнейшем как достоинства, так и недостатки в работе этих школ.

Что касается достоинств особого внимания программистов к тонкостям архитектуры машин, то они состояли в том, что наши программы всегда были очень высокого качества по их эффективности, по максимальному использованию всех возможностей аппаратуры. Соответственно, при обучении программированию основное внимание уделялось методам повышения эффективности – экономии ресурсов памяти, экономии числа команд, выполняемых при реализации алгоритмов.

Что касается недостатков такого подхода, сказавшихся впоследствии, когда машины перестали быть уникальным произведением инженерного и программистского искусства, когда их выпуск стал массовым производством, то они заключались в недостаточном внимании со стороны наших разработчиков программного продукта к проблеме удобного интерфейса с пользователем.

Возможно, этим объясняется первоначальное (в середине 50-х – начале 60-х годов) увлечение разработкой автокодов и других аппаратно зависимых средств программирования.

Для машин типа М-20 – БЭСМ-4, которая также относится к семейству машин академика С. А. Лебедева, было разработано по крайней мере три системы "автокодирования" в ИПМ АН СССР, в МГУ, в СО АН СССР. Эти системы отличались мнемоникой задания кодов операций, методами кодирования адресных полей машинных команд и методами настройки программ при размещении их в памяти.

В это же время велись интенсивные работы по созданию систем библиотечных программ, отличавшихся друг от друга по правилам размещения их в оперативной памяти и по механизмам обращения к ним. В автокодах прямо учитывалась необходимость размещения библиотечных программ в любом месте оперативной памяти, и были разработаны механизмы настройки подпрограмм по адресам размещения. Следует отметить, что при проектировании архитектуры машин предусматривалась аппаратная поддержка механизмов обращения к подпрограммам (процедурам) и методов передачи параметров. Уже в машине БЭСМ-1 работал оригинальный аппарат обращения к подпрограммам, состоящий в том, что в состав устройства управления были введены два счетчика команд: один осуществлял выбор команд главной программы, а второй – начинал работать при переходе на подпрограмму. Возврат из подпрограммы осуществлялся включением в работу первого счетчика, автоматически сохранявшего адрес главной программы. Механизм двух счетчиков команд стал применяться в архитектурах некоторых современных процессоров, правда, для другой цели – накопления команд двух ветвей программы.

С середины 50-х годов во всех странах, производивших вычислительную технику, начался процесс "языкотворчества" – создание проблемно-ориентированных языков. Сложной задачей для системных программистов того времени было создание трансляторов для конкретных типов машин. Создание каждого транслятора с машинно-независимого языка программирования считалось крупным научным и практическим достижением. Большое число различных типов машин и различных языков требовало большой работы высококвалифицированных программистов и математиков по созданию трансляторов. Соответственно, возникла необходимость создания небольшого числа стандартизированных языков и программно-преемственных семейств вычислительных машин. Это потребовало глубоких теоретических исследование в теории алгоритмов, схем программ, теории формальных грамматик.

В начале 60-х годов был опубликован алгоритмический язык Алгол-60, рекомендованный в качестве международного стандарта для публикаций вычислительных алгоритмов. В нашей стране Алгол-60 был принят в качестве государственного стандарта. Использование других языков для программирования вычислительных задач не рекомендовалось, это касалось даже широко применявшегося за рубежом более простого языка Фортран.

После этого в нашей стране началась разработка трансляторов с Алгола-60 для нескольких типов машин. Попытки создать транслятор с полного языка Алгол-60 за рубежом не удались. В ИПМ такой транслятор был создан для машины "Стрела", а затем для машины М-20, что явилось достижением мирового уровня.

Новый этап (конец 60-х – начало 70-х годов) в развитии программистских школ нашей страны связан с появлением машины БЭСМ-6. В архитектуре этой машины было сделано много для аппаратной поддержки операционных систем, а именно аппаратная поддержка виртуальной памяти, защита памяти, развитая структура двухуровневой системы прерываний, защищенный супервизорный режим и т. п. Все эти характеристики являются неотъемлемым признаком современных процессоров, но во времена создания БЭСМ-6 все это было необычным и новым. В данной статье мы не будем рассказывать о других замечательных аппаратных особенностях машины БЭСМ-6, которые позволили ей поставить рекорд по критерию стоимость-производительность.

Первая операционная система для БЭСМ-6 была разработана в Институте точной механики и вычислительной техники АН СССР, в котором проектировалась эта уникальная вычислительная машина. Разработчиками она называлась диспетчером, известным под именем Д-68. По современным понятиям Д-68 являлся ядром операционной системы, обеспечивавшим: мультипрограммный режим пакетной обработки заданий, управление виртуальной памятью, управление внешними запоминающими устройствами и многочисленными устройствами ввода-вывода.

Государственная комиссия принимала машину БЭСМ-6 в комплексе с ее программным обеспечением, что явилось новым прецедентом приемки вычислительной техники. Раньше государственные комиссии принимали раздельно аппаратуру и программное обеспечение. Начиная с БЭСМ-6, пользователю поступали машины, уже оснащенные программным обеспечением.

Справедливости ради следует отметить, что операционная система Д-68 к моменту предъявления Государственной комиссии не полностью отвечала техническому заданию на ее разработку. Отвечавший за комплекс в целом, Главный конструктор С. А. Лебедев настоял на том, чтобы сами разработчики Д-68 перечислили все имеющиеся недоработки в операционной системе, хотя о многих из них вполне можно было бы умолчать. Этот эпизод еще раз характеризует принципиальность С. А. Лебедева в отношении оценки достоинств и недостатков своего детища. Государственная комиссия приняла комплекс в целом, предложив к назначенному сроку устранить отмеченные разработчиками недостатки, что и было сделано.

В разработке программного обеспечения ЭВМ наиболее трудоемкой и ответственной частью является создание ядра операционной системы (ОС). Если учесть, что в то время в нашей стране не было опыта разработки ОС, а зарубежным опытом нельзя было воспользоваться, поскольку БЭСМ-6 не являлась копией ни одной машины, то будет понятна значимость успехов в создании отечественных ОС. Было доказано, что не боги горшки обжигают и ОС могут разрабатывать отечественные программисты.

После появления у пользователей нескольких ведущих институтов машины БЭСМ-6 и ОС Д-68, их программистские коллективы начали разработку собственных ОС, с их точки зрения более адекватно отражавших использование вычислительной техники в их институтах. Сейчас представляется, что дублирование работ по созданию различных ОС для машины одного типа на самом деле было полезным, прежде всего тем, что на этих работах выросли специалисты системного программирования высочайшей квалификации и оформились известные в нашей стране школы ИПМ им. М. В. Келдыша, ИТМ и ВТ им. С. А. Лебедева, Новосибирская школа, возглавлявшаяся А. П. Ершовым, школа ОИЯИ (Дубна), которой руководил Н. Н. Говорун, школа в НИВЦ МГУ, а также ряд других школ, включая ядерные центры страны.

В результате одновременно в эксплуатации находились: ОС Д-68, ОС ИПМ, ОС ДИСПАК, ОС ДУБНА, НД-70. Возможно, здесь не упоминаются и другие варианты и версии ОС для БЭСМ-6, которые не нашли широкого распространения, хотя и обладали многими достоинствами.

Существенное влияние оказал "Диспетчер-68" и на разработку в ИТМ и ВТ операционной системы реального времени для БЭСМ-6 ОС НД-70 ("Новый диспетчер-70") с развитыми средствами организации параллельных вычислений (соподчинение задач, аппарат параллельных процессов) и возможностью организации работы БЭСМ-6 в многомашинном вычислительном комплексе. В центрах управления полетами космических аппаратов на базе ОС НД-70 были созданы и в течение двадцати лет активно использовались для обеспечения управления полетами несколько больших баллистических и телеметрических программных комплексов реального времени. Вслед за НД-70 средства организации параллельных процессов были введены в ОС ДИСПАК для ЭВМ БЭСМ-6, что позволило программным комплексам реального времени базироваться и на этой ОС.

При разработке ОС ИПМ авторы широко использовали принятые в обществе механизмы взаимодействия для организации взаимосвязи между задачами и процессами. Все задачи рассматривались как члены коллектива (соmmunitу), которые могут вступать друг с другом в различные отношения от совершенной изоляции до полного разделения всех ресурсов. Каждый ресурс (память, файл, устройство) имел своего хозяина, который мог его отдавать или сдавать в аренду любой другой задаче, оговаривая соответствующие права использования, в том числе и право дальнейшей передачи в аренду. При этом хозяин мог закрывать, а мог и не закрывать от себя арендуемый ресурс, что поддерживалось широким спектром средств синхронизации процессов. Обмен сообщениями между задачами обладал всеми особенностями почтовых отправлений, включая уведомление о вручении.

Каждая задача могла открывать до восьми процессов, в том числе два специальных высокоприоритетных процесса для обработки сообщений и внутренних прерываний (аварийных ситуаций). Для управления процессами использовался аппарат событий, а также прямые команды открытия, закрытия, прерывания и пуска. Одни задачи могли вызывать другие, выстраивая таким образом деревья подчинения произвольной глубины. ОС ИПМ органично включала в себя систему программирования, что позволило довольно легко обеспечить такие свойства, как шаговая трансляция и отладка в терминах языка. Большинство трансляторов были написаны на языке АЛМО (аналог языка Си), и использовали его в качестве выходного языка. Это позволило сначала раскрутить и отладить их на машине М-220, а затем (в 1969 г.) перенести на БЭСМ-6 в среду ОС ИПМ, что избавило разработчиков трансляторов и операционной среды от многих излишних взаимных претензий. Достаточно устойчивая производственная версия ОС ИПМ начала функционировать в 1970 г.

ОС Д-68, впрочем, как и другие ОС БЭСМ-6, в ходе эксплуатации расширял свои возможности в части услуг, предоставляемых пользователям. Такие системы как ПУЛЬТ, МУЛЬТИДОСТУП, ДИМОН (диалоговый монитор) обеспечивали режим многопультового доступа к машине с удаленных терминалов. Появились также системы отладки программ в терминах входного языка, обеспечивающие связь задачи пользователя с терминалами; система для редактирования файлов и запуска задач в решение с удаленных пультов. К началу 70-х годов в состав программного обеспечения БЭСМ-6 входили все основные универсальные языки программирования: АЛГОЛ-60, ФОРТРАН, ЛИСП. Первый транслятор с языка Фортран для БЭСМ-6 был разработан в 1969 г. в ОИЯИ в Дубне. Этот транслятор затем был включен в Мониторную систему "Дубна". В различных организациях использовалось несколько вариантов трансляторов с языков, генерирующих программы разной степени эффективности, в том числе оптимизирующие трансляторы с языков АЛГОЛ-60 и ФОРТРАН и компилятор с языка ЛИСП. В состав программных средств машины БЭСМ-6 входил спектр проблемно-ориентированных языков СИМУЛА-67, ГРАФОР, ГРАФАЛ, язык типа ЕРSILON и ряд других узко специализированных языков. Для построения диалоговых систем использовались пошаговые трансляторы с некоторых других языков. По критериям своего времени программное обеспечение БЭСМ-6 было наиболее развитым в сравнении с обеспечением других машин отечественного производства и по принципиальным возможностям не уступало программному обеспечению многих зарубежных машин.

В состав математического обеспечения БЭСМ-6 входили высокоуровневые системы управления заданиями и системы управления данными, дающие в руки системных программистов удобные средства повышения эффективности использования вычислительной машины в различных режимах эксплуатации. Эти средства входили в состав двух широко используемых, дополняющих друг друга операционных систем: ДИСПАК и ДУБНА (ДД). Так многоязыковая Мониторная система "Дубна" для БЭСМ-6 (1970 г.) обеспечивала управление заданиями, создание и использование многоуровневых библиотек программ. В систему входила библиотека программ общего назначения, совместимая с библиотекой Европейского центра ядерных исследований CERN.

ОС ДИСПАК предназначалась для управления режимом пакетной и дистанционной пакетной обработки, ОС ДУБНА – "фортрано-ориентированная" операционная система, которая использовалась в центрах обработки данных физического эксперимента. Родоначальником этих двух ОС явилась операционная система Д-68. Обе операционные системы ДИСПАК и ДД сохраняли преемственность в отношении своего родоначальника.

Для машины БЭСМ-6 было разработано большое количество пакетов прикладных программ, с помощью которых были решены задачи наиболее передовых направлений научно-технического прогресса. Был накоплен огромный фонд программ пользователей и опыт его эксплуатации. Можно вполне определенно сказать, что на базе БЭСМ-6 был создан "золотой фонд" программного обеспечения, значение которого трудно переоценить.

В 70-х годах в ИТМ и ВТ впервые была создана распределенная ОС многомашинного комплекса, обеспечивающая сетевое взаимодействие вычислительных процессов в ЭВМ комплекса, а также с процессами в глобальных сетях ЭВМ и использование внешних устройств всех ЭВМ в любых вычислительных процессах, выполняющихся в комплексе. Была фактически обеспечена работа "конвейера ЭВМ", предназначенного для обработки в режиме реального времени больших потоков информации о полетах космических аппаратов.

Все эти разработки, в особенности для ЭВМ БЭСМ-6, которая более десяти лет оставалась самой высокопроизводительной машиной в стране, и для многомашинного вычислительного комплекса реального времени АС-6, обеспечившего развитую обработку информации в центрах управления космическими полетами, во многом определили дальнейшие направления и характер исследований в отечественном системном программировании. За время эксплуатации нескольких сотен БЭСМ-6 была накоплена уникальная библиотека программ, которая стала беспрецедентным интеллектуальным богатством страны.

Велика роль С. А. Лебедева в области создания математического обеспечения. Она не сводилась только к тому, что его машины стали объектами приложения усилий нескольких групп системных программистов. С. А. Лебедев одним из первых понял значение системного программирования, значение совместной работы программистов-математиков и инженеров по созданию вычислительных систем, включающих как неотъемлемую часть программное обеспечение, состав и качество которого определяет удобство использования и эффективность работы комплекса в целом. По инициативе С. А. Лебедева в Институте точной механики и вычислительной техники была создана лаборатория математического обеспечения, выполнявшая разработку системного программного обеспечения для всех вычислительных систем, создаваемых в ИТМ и ВТ – ЭВМ БЭСМ-6, многомашинного информационно-вычислительного комплекса АС-6, ЭВМ серии "Эльбрус", ЭВМ специального назначения.

Математики-программисты приняли полноправное участие в разработке архитектур создаваемых машин, математическом моделировании их структурной организации, создании систем автоматизации проектирования ЭВМ. Так, все схемы БЭСМ-6 по инициативе С. А. Лебедева были записаны формулами булевой алгебры, что открыло широкие возможности для автоматизации проектирования и подготовки монтажной и производственной документации. Она выдавалась на завод в виде таблиц, полученных на "инструментальной" ЭВМ БЭСМ-2. В разработке БЭСМ-6 были впервые применены методы проектирования и описания, которые в дальнейшем стали широко использоваться при создании новейших суперЭВМ. К ним прежде всего следует отнести имитационное моделирование процессов работы машины, способствующее выбору оптимальных структурных решений, представление схем алгебро-логическими выражениями, обеспечивающее их обозримость и простоту понимания.

Выше сказанное сейчас выглядит как прописные истины, но в годы становления вычислительной техники далеко не у всех было такое понимание важности системного программного обеспечения и самого системного программирования.

Следует напомнить, что под руководством С. А. Лебедева в ИТМ и ВТ проектировались не только универсальные машины, но и ЭВМ специального назначения, которые использовались в качестве главного управляющего звена в целом ряде крупных оборонных систем. Программирование систем жесткого реального времени является одной из самых сложных задач системного программирования, с наиболее высокой ценой каждой допущенной ошибки, которые, тем не менее, проявлялись даже при натурных испытаниях. Характерна реакция С. А. Лебедева на подобного рода ситуации. Он всегда старался успокоить возмущавшихся смежников, оградить программистов от жестких нападок с их стороны, прекрасно понимая сложность работы по разработке подобного рода программ, создавал условия, позволявшие в спокойной обстановке разобраться, в чем дело, и тем самым исправить допущенные ошибки, сводя к минимуму моральный и материальный ущерб. Заботливый учет человеческого фактора, касавшийся в равной степени инженеров-электронщиков и программистов-математиков, во многом содействовал успехам тех и других в достижении поставленных целей разработок и экспериментов.

В состав коллективов, получавших те или иные поощрения и премии за успешно выполненные работы, С. А. Лебедев включал математиков-программистов, подчеркивая тем самым их значимость в деле внедрения вычислительной техники. В те времена не всеми главными конструкторами вычислительных машин соблюдался этот справедливый принцип.

Не удивительно поэтому, что огромное уважение и любовь к гениальному разработчику ЭВМ С. А. Лебедеву испытывают не только многочисленные его ученики-электронщики, но и программисты-математики, многие из которых, включая авторов, также считают себя его учениками[1].

Примечание

1. При освещении конкретных разработок системного программного обеспечения авторы не упоминают коллективы разработчиков и их руководителей в связи с желанием более концентрированно отразить становление основных направлений создания системного программного обеспечения ЭВМ в нашей стране и историческую роль академика Сергея Алексеевича Лебедева в их инициации и поддержке.

Статья опубликована в книге "Сергей Александрович Лебедев. К 100-летию со дня рождения основоположника отечественной вычислительной техники", отв. ред. В. С. Бурцев, М., Физматлит, 2002 г., стр. 256. Перепечатывается с разрешения авторов.