• более позднее начало массового производства электронной вычислительной техники (примерный сдвиг – 5 лет);
• меньшее количество доступных вычислительных ресурсов, приведшее к не столь широкому размаху работ, как в США или в Англии;
• практическое отсутствие импорта вычислительных машин и технологий;
• языковый барьер и сравнительно менее интенсивные личные контакты специалистов (в частности, вследствие секретности);
• некоторые общие отличия в организации и стиле научных исследований и производства.
Заметное влияние на общее развитие программирования в мире оказали работы Ю.И. Янова, приведшие к созданию теории схем программ, и некоторые работы по оптимизации трансляции. Существенный вклад в мировую тенденцию внесло широкое распространение Алгола-60 в СССР. Большая часть результатов представляла независимые, индивидуальные, практические разработки, без которых невозможно было полноценное развитие отечественного программирования.
Одним из факторов, сузившим фронт работ по автоматизации программирования в несекретных отраслях народного хозяйства, в это время было преобладание научных применений универсальных ЭВМ. Большая часть программистов в СССР была математиками с университетским образованием. Почти все успешные «художественные» экспериментальные и вычислительные программы кое-как переделывались в программный продукт, и это «кое-как» иногда мешало эксперименту и не давало должного эффекта при применении продукта. При всех положительных сторонах этого обстоятельства потребовалось длительное время, пока была осознана и реализована необходимость сбалансировать эту сторону вузовского образования с воспитанием способности к инженерному стилю работы, столь необходимому в системном программировании для создания крупных программных продуктов реального времени (см. главу 4).
В середине 50-х годов появились небольшие по численности группы математиков, привлеченных к разработкам проектов вычислительных машин, проводившихся в небольшом числе проектных организаций и институтов в Москве, Ленинграде, Киеве, Минске, Пензе. Каждая вновь разрабатываемая машина, прежде всего, требовала создания для нее операционной системы и программ вычисления элементарных функций. При этом необходимо было добиваться предельной эффективности таких вычисления на данной конкретной архитектуре и ресурсах ЭВМ. Это требовало от математиков высокого уровня понимания деталей логики работы процессора. Возможно, что именно это явилось отличительной чертой отечественных школ программирования, чертой теснейшей их связи с инженерными разработками, которая определила в дальнейшем, как достоинства, так и недостатки в работе этих школ.
Теоретические исследования методов программирования для ЭВМ в 1950-е – 60-е годы, активно проводились в Московском, Ленинградском и Киевском университетах, в Институте автоматики и телемеханики АН СССР, в Вычислительном центре АН СССР [1, 4]. В 1950 году в ИТМ и ВТ начал работать первый постоянный семинар по программированию, которым руководил Л.А. Люстерник, в МГУ в 1952-м году была основана кафедра вычислительной математики (ее возглавил С.Л. Соболев). В 1953-м году в Математическом институте АН СССР был создан отдел программирования во главе с А.А. Ляпуновым, а в 1955-м году был основан Вычислительный центр МГУ, специализировавшийся на разработке и применении вычислительных методов для решения научных и прикладных задач.
В 1952-м – 53-м годах А.А. Ляпуновым был предложен операторный метод для описания программ. Практически впервые был создан способ представления программ на обозримом уровне. Вместо неэффективного для человека написания программ в машинных кодах было предложено формализованное представление программ на языке высокого уровня. Особенно важным было то, что операторный метод позволил подготовить теорию синтаксических структур программ. В 1953-м году А.А. Ляпунов сформулировал постановку задачи автоматизации программирования. Эта оригинальная постановка была успешно использована в первых отечественных трансляторах, называвшихся тогда программирующими программами (ПП). Летом 1954-го года появилась программирующая программа ПП-1, разработанная в отделе прикладной математики Института математики АН СССР, а в 1955-м году – ее улучшенный вариант ПП-2. К середине 50 – х годов у ведущих специалистов в области вычислительной техники сформировалось представление о путях развития отечественной информатики и программирования.
В середине 1957-го года, Виктор Михайлович Глушков, определил направления стратегических исследований в области информатики [3]. По его мнению, основой прогресса развития вычислительных машин должна была стать теория их работы, разработка методов автоматизации проектирования ЭВМ и автоматизации программирования. Он подчеркивал важную роль исследований в области теории алгоритмов и теории конечных детерминированных и стохастических автоматов, принципиальное значение разработки методов символьных преобразований на ЭВМ. Отмечалась центральная роль, которую играет задача оптимизации размера при трансляции программ (особенно для управляющих машин), а также указывалось на обратное влияние развития вычислительных машин на дальнейшие работы в области вычислительной математики. В конце 1959-го года в Москве, в МГУ состоялось «Всесоюзное совещание по вычислительной математике и вычислительной технике». Это было большое научное собрание с почти 2000 участников и 217 докладами, прочитанными на четырех секциях.
Постепенно складывалась концепция системного математического (программного) обеспечения ЭВМ – интегрированной и удобной в работе системы различных средств автоматизации программирования (библиотеки, трансляторы, средства отладки), сопряженных с определенной дисциплиной реализации задач на машине [5]. Проблеме математического обеспечения ЭВМ было много препятствий научно-технического и организационного характера, одно из которых – слабая разработанность концепции программного продукта и его производства. Для М-20 в то время таким средством для вычислений была библиотека стандартных подпрограмм. Идея превращения библиотеки в переносимый и общий программный продукт стала для М.Р. Шура-Буры на некоторое время главной задачей, на решении которой со временем сформировались более общие взгляды на системное программное обеспечение. Необходимо было найти некоторый объект конструирования и научной работы, который одновременно решал бы задачу унификации математического обеспечения, мог бы быть эффективным средством автоматизации программирования и выдвигал бы новую научную проблематику. Таким корневым объектом в стране стал Алгол-60.
В начале 60-х годов был опубликован алгоритмический язык Алгол-60, рекомендованный в качестве международного стандарта для публикаций вычислительных алгоритмов. В нашей стране Алгол-60 был принят в качестве государственного стандарта. Использование других языков для программирования вычислительных задач не рекомендовалось и это касалось даже широко применявшегося за рубежом более простого языка Фортран. После этого в стране началась активная разработка трансляторов с Алгола– 60 для нескольких типов машин. Попытки создать транслятор с полного языка Алгол-60 за рубежом не удались. В ИПМ такой транслятор был создан для машины «Стрела», а затем для машины М-20, что явилось достижением мирового уровня.
В то же время стала совершенно очевидной общенаучная ценность этого документа, которая требовала его широкого распространения. Ситуация весной 1960-го года оказалась весьма благоприятной для принятия Алгола-60 в качестве единого языка программирования научных и инженерных применений ЭВМ. В июне в Вычислительном центре АН СССР координационное совещание по вопросам реализации Алгола-60. На фоне общей и во многом разнонаправленной активности выделились три проекта реализации языка для М-20, получившие, соответственно, названия TA-1, ТА-2 и Альфа. Начавшись как три независимые и подчас конкурирующие разработки, они в процессе развития приобрели взаимодополняющие свойства, решив удовлетворительно проблему снабжения М-20 трансляторами с Алгола-60.
В декабре 1960-го года в МГУ состоялась рабочая конференция «Построение программирующих программ на основе языка Алгол-60» [1, 4]. К этому времени у разработчиков уже сложились общие подходы к реализации языка и выбору схем трансляции. В TA-1 благодаря отказу от возможной рекурсивности процедур и ряду других ограничений, была выбрана компактная и быстрая схема трансляции без оптимизации. Главной задачей ТА-2 стала реализация практически полного языка без существенной потери в качестве реализации. В разработке системы Альфа (Андрей Петрович Ершов) было поставлено в качестве главной цели обеспечение высокого качества (по объему рабочих программ) с сохранением приемлемой скорости трансляции. Употребление универсального языка программирования снимало задачу перевода программ с одной машины на другую, дало возможность сокращать дублирование работ по составлению программ для различных типов машин и существенно облегчило обмен информацией между отдельными группами специалистов, работающих в области программирования. В докладе разработчиков системы Альфа был показан классический прецедент просчета в определении плановых экономических показателей и трудоемкости больших программных проектов с универсальным коэффициентом недооценки трудоемкости в 2–3 раза, подтвержденном впоследствии многими проектами. Авторы клали на разработку системы 15 человеко-лет для построения 15000 команд, затратив на самом деле свыше 30 человеко-лет и соорудив систему в 45000 команд (см. главу 5).
Библиотека программ ИС-2, трансляторы TA-1 и ТА-2 стали первыми образцами программных продуктов, которые поставлялись вместе с оборудованием машин заводом-изготовителем, образуя интегрированную систему поддержки программирования. В трансляторе Альфа были систематически учтены очень ограниченные ресурсы технологической ЭВМ:
• функция расстановки, для ускорения работы транслятора, в частности, для экономии совпадающих выражений;
• многовариантная система программирования процедур и циклов, основанная на анализе структуры программы;
• реализована глобальная экономия памяти;
• осуществлен ряд оптимизационных преобразований на уровне промежуточного языка, в частности, объединение циклов с одинаковыми заголовками и чистка циклов.
После первых успехов в области создания трансляторов ТА-1, ТА-2 и Альфа в 1964-м – 65-м годах отечественные исследования в области автоматизации программирования продолжали сохранять высокий темп развития. Появление ЭВМ 2-го поколения (Минск 2, БЭСМ-4, М-220 и др.) в целом определило созревание концепции математического (программного) обеспечения и идентификацию системного программирования. Интенсивная работа над трансляторами с Алгола-60 привела к практическому исчезновению профессии вспомогательного программиста-кодировщика машинных кодов и замене ее на профессионального системного программиста. Все первые трансляторы писались в восьмеричном машинном коде с минимальными средствами автоматизации. Это привело к появлению первых языков системного программирования и к первой системе построения трансляторов, основанной на промежуточном универсальном машинно-ориентированном языке АЛМО. Пионерскими в области программирования были работы А.П. Ершова [1, 4] по компиляции с минимальной памятью и по теории программирования (схемы Янова – Ершова).
Параллельно работам по Алголу-60 развивались события, приведшие к организации ассоциации пользователей ЭВМ М-20. В середине 1961-го года решением Президиума Академии наук СССР ассоциация получила статут юридического лица и официальное название «Комиссия по эксплуатации вычислительных машин М-20». Деятельность Комиссии была важна не только созданием прецедента, за которым последовало создание аналогичных ассоциаций для БЭСМ-2, для семейства «Урал», а также для серии «Минск», но и ускорением разработки концепции математического (программного) обеспечения.
В 1964-м году началось проектирование первых программных операционных систем для пакетной обработки с использованием загрузчиков и трансляторов ассемблеров, работающих в автоматическом режиме с помощью языков управления заданиями. Большую роль в формировании современного взгляда на математическое обеспечение и архитектуру ЭВМ сыграл Конгресс ИФИП 1965-го года, когда концепции совместимых семейств машин, разделения времени, мини-ЭВМ стали объектом делового интереса советских специалистов. Начиная с 1964-го года, разработка математического (программного) обеспечения стала элементом государственной технической политики. Государственный комитет по науке и технике (ГКНТ) был назначен координатором работ по математическому обеспечению существующих машин и генеральным заказчиком для промышленности на математическое обеспечение вновь создаваемых ЭВМ. Ассоциации пользователей ЭВМ активно представляли научно-техническое общественное мнение и играли существенную роль в распространении новых программ. Апробация новых систем программирования, а впоследствии и операционных систем проводилась междуведомственной комиссией по математическому обеспечению под председательством академика А.А. Дородницына и целевыми комиссиями, осуществлявшими приемку новых компонентов математического обеспечения.
Первая докторская диссертация по программированию была защищена в Киеве Е.Л. Ющенко в 1966-м году по материалу разработки серии трансляторов на основе адресного языка. Л.Н. Королев стал в 1965-м году первым профессором – программистом [4]. Первое время все эти диссертации причислялись к существовавшим в то время родственным специальностям: вычислительной математике, счетно-решающим устройствам и т. д. В середине 60-х годов под влиянием серии работ по теоретическому программированию была образована новая специальность «математическая логика и программирование». А.П. Ершов был первым программистом, ставшим членом-корреспондентом АН СССР в 1970-м году, а в 1980-м году – ее действительным членом. Сознавая социальные последствия использования ЭВМ и культурное значение программирования (он называл его «второй грамотностью»), А.П. Ершов активно проповедовал его введение в школьную информатику и в курс «Основы вычислительной техники и обработки информации». Его желание компьютеризировать школу преследовало двойную цель: развить в молодых людях интеллектуальный дар программирования и обогатить их мощью информационной обработки.
А.П. Ершов активно поддерживал международный научный обмен и сотрудничество. Он постоянно участвовал в различных комитетах и конференциях IFIP, организовывал многочисленные международные конференции в Новосибирске и других регионах Советского Союза. А.П. Ершов инициировал (и часто редактировал) переводы западных книг по информатике. Установление и развитие личных и профессиональных связей между иностранными учеными и их советскими коллегами было целью, которой он посвятил значительную часть своей энергии.
Взгляды АП. Ершова на программирование, выраженные в серии очерков, начатой в 1972-м году, привлекли широкое внимание во всем мире. Описывая свою профессию поэтически, он утверждал [6]:
«…Программист должен обладать способностью первоклассного математика к абстракции и логическому мышлению в сочетании с эдиссоновским талантом сооружать все что угодно из нуля и единицы. Он должен сочетать аккуратность бухгалтера с проницательностью разведчика, фантазию автора детективных романов с трезвой практичностью экономиста. А, кроме того, программист должен иметь вкус к коллективной работе, понимать интересы пользователя и многое другое.
Машина, снабженная программой, ведет себя разумно. В этот кульминационный момент программист, по существу, представляет троицу. Он ощущает себя отцом – как создатель программы, сыном – как брат машины, выполняющей программу, и носителем святого духа – как тот, кто вложил жизнь в сочетание программы и машины».
Сильным тормозом в развитии и внедрении автоматизации программирования в 50-е годы было отсутствие буквенно-цифровых устройств ввода-вывода, которые стали общедоступными только с машинами 2-го поколения. Это затрудняло внедрение и ослабляло потребность в разработке комфортных средств отладки. Сужалась и даже становилась в значительной степени бесполезной методика символического кодирования и программирования. Более глубоким последствием стал недостаток внимания к текстовому представлению входных программ для первых трансляторов. Другим примером ограничительного влияния оборудования являлось довлевшее над большинством разработчиков трансляторов требование воссоздать средствами входных языков «любую» машинную программу.
1.3. Первые комплексы программ для оборонных систем в 1950-е – 60-е годы
Большое число крупных оригинальных, специализированных исследований и производственных работ по программированию, которые были связаны с созданием оборонной техники для авиации, космических, ракетных, морских и наземных систем, долгое время оставались секретными. Они охватывали множество сложнейших вычислительных задач, а также специфические задачи управления и обработки информации в динамических оборонных системах реального времени. Этот класс задач был не актуальным и недоступным для индивидуальных программистов в вузах и научных учреждениях, практически не упоминался в открытой печати, однако в 60-е годы и в дальнейшем ими были заняты в стране сотни тысяч специалистов, связанных с созданием сложных программ для ЭВМ.
Сергей Алексеевич Лебедев являлся инициатором внедрения электронной вы числительной техники в оборонные системы: в радиолокацию, ракетостроение и системы передачи данных. По его инициативе впервые в СССР, а возможно и в мире, проведены работы по фиксированию данных с радиолокационных станций сопровождения целей в цифровом виде и по передаче управляющей информации для наведения самолета или ракеты на цель. Преимущества вычислительной техники в системах военного применения были впервые продемонстрированы под руководством С.А. Лебедева в «Системе А» – экспериментальной системе противоракетной обороны (ПРО). Данный комплекс управлял радиолокационной станцией дальнего обнаружения и сопровождения цели и точного наведения противоракеты на баллистическую ракету противника [8, 9]. Были разработаны принципы построения вычислительных средств противоракетной обороны и создан высокопроизводительный вычислительный комплекс для решения задач высококачественного автоматического управления сложными, разнесенными в пространстве объектами, работающими в реальном масштабе времени. В его состав входили ЭВМ М-40, радиолокаторы обнаружения и сопровождения цели, радиорелейные линии передачи данных в замкнутой системе точного наведения ракеты, система контрольно-измерительной аппаратуры. ЭВМ М-40 начала выполнять сложные боевые задачи в 1957-м году. Впервые были предложены принципы распараллеливания вычислительного процесса за счет аппаратных средств. В марте 1961 года на этом комплексе впервые в мире была ликвидирована боевая часть баллистической ракеты осколочным зарядом противоракеты. За эти работы коллектив ведущих разработчиков комплекса, в том числе С.А. Лебедев и В.С. Бурцев, был удостоен Ленинской премии. ЭВМ М-50, введенная в строй в 1959 году, и явилась модификацией ЭВМ М-40, обеспечивающей выполнение операций с плавающей запятой и рассчитанной на применение в качестве универсальной ЭВМ. На базе М-40 и М-50 был создан двухмашинный комплекс.
С 1953-го года Михаил Романович Шура-Бура работал в Отделении прикладной математики Математического института им. В.А. Стеклова, созданном М.В. Келдышем в 1953-м году и преобразованном затем в Институт прикладной математики АН СССР (ныне ИПМ РАН им. М.В. Келдыша). В эти годы главной задачей и организационным успехом М.Р. Шуры-Буры как руководителя отдела программирования в ИПМ было формирование отдела [11]. Первым результатом работы отдела в 1953-м – 1955-м годах было применение программ для расчета энергии взрывов при моделировании ядерного оружия на ЭВМ «Стрела». Постановки задач и методы расчетов для этих программ готовили отделы математиков (А.Н. Тихонов, А.А. Самарский, И.М. Гельфанд). Программирование задач такой сложности в машинных кодах на ЭВМ, имевшей оперативную память емкостью всего 1000 ячеек, неработающий накопитель на магнитной ленте и частые сбои в арифметике и управлении, требовало от программистов виртуозного умения и оригинальных находок в организации отладки программ и счета. В 1954 – м году М.Р. Шура-Бура защитил диссертацию на соискание ученой степени доктора физико-математических наук.
В середине 50-х годов отдел программирования был привлечен М.В. Келдышем к расчетам траекторий искусственных спутников Земли (ИСЗ). Программы, разработанные сотрудниками отдела, возглавляемого Михаилом Романовичем, для ЭВМ «Стрела», а затем М-20, должны были обеспечивать круглосуточный режим обработки измерений траекторий ИСЗ. Они использовались, начиная с 1957-го года при запуске первых и последующих ИСЗ, при полете Ю.А. Гагарина в 1961-м году и затем в течение последующих 10 лет. Значение этих работ трудно переоценить, потому что результаты траекторных расчетов, производимых в разных организациях, иногда не совпадали, что для управления космическими полетами было недопустимо.
Весьма значительным было влияние ИПМ и лично М.Р. Шуры-Буры на выбор архитектуры отечественных универсальных компьютеров. В 1955-м году на начальной стадии проекта ЭВМ первого поколения М-20 в разработке участвовали три человека: С. А. Лебедев (общие характеристики и структура машины), М.Р. Шура-Бура (система команд), П.П. Головистиков (схемотехника). Основные архитектурные решения М-20, предложил М.Р. Шура-Бура. Эти архитектурные решения М-20 были сохранены в ЭВМ М-220, М222, построенных на основе полупроводниковой элементной базы. Эти машины стали «рабочими лошадками» для выполнения научных и инженерных расчетов во многих исследовательских, проектных и оборонных организациях страны. Это была одна из немногих моделей ЭВМ, при создании которой объединились проектанты, конструкторы и математики, представленные ИТМ и ВТ, конструкторским бюро, создавшим машину «Стрела».
Эта солидная основа возлагала большую ответственность на разработчиков, поскольку ее архитектуре предстояло воплотиться в нескольких крупных сериях ЭВМ (М-20, БЭСМ-4, М-220). Для машин типа М-20 – БЭСМ-4, которая также относилась к семейству машин С.А. Лебедева, было разработано, по крайней мере, три системы технологических программ в ИПМ АН СССР, в МГУ, в СО АН СССР. Эти системы отличались мнемоникой задания кодов операций, методами кодирования адресных полей машинных команд и методами настройки программ при размещении их в памяти. В это же время велись интенсивные работы по созданию систем библиотечных программ, отличавшихся друг от друга по правилам размещения их в оперативной памяти и по механизмам обращения к ним. В автокодах учитывалась необходимость размещения библиотечных программ в любом месте оперативной памяти, и были разработаны механизмы настройки подпрограмм по адресам размещения. При проектировании архитектуры машин предусматривалась аппаратная поддержка механизмов обращения к подпрограммам (процедурам) и методов передачи параметров.
В сферу научных исследований и разработок в начале 60 – х годов в Советском Союзе (почти одновременно в несколько ином виде в США) вошел и был апробирован новый широкий класс вычислительных систем и телекоммуникационных сетей реального времени – первый советский прототип современных информационных глобальных сетей и Интернета. В нем основными компонентами и источниками информации являлись траектории воздушных объектов, характеризующиеся их назначением, координатами и обобщенными параметрами движения, определяющие требования к функциям сложных комплексов программ управления в системе противовоздушной обороны (ПВО) [12]. Телекоммуникационные сети ЭВМ обеспечили обмен и обобщение информации от радиолокационных узлов на большой территории страны для непрерывного обнаружения и сопровождения воздушных объектов. К таким системам заказчиком предъявлялись высокие требования к качеству функционирования и гарантированного решения задач.
Примером оригинальных (в то время секретных) работ в НИИ-5 (МНИИПА) являлось создание программ реального времени и телекоммуникационной сети системы ПВО страны и радиолокационного узла (РЛУ) «Межа» (главный конструктор Владимир Алексеевич Шабалин, заместитель – Анатолий Николаевич Коротоношко). Программный комплекс обработки радиолокационной информации в 1962-м – 68-м годах на ЭВМ 5Э89 был создан под руководством Владимира Васильевича Липаева (докторская диссертация – 1967-й год по специальности радиолокация). При этом был разработан в 1962-м году принципиально новый тип операционной системы реального времени на ЭВМ для автоматической синхронизации и управления динамическим решением разнородных задач о движущихся воздушных объектах при случайных потоках информации из внешней среды и случайной длительности обработки каждого сообщения. Операционная система обеспечивала функционирование комплекса программ телекоммуникационные сети для транспортировки и обработки информации на ЭВМ между несколькими соседними РЛУ о траекториях движения динамических объектов и для обобщения характеристик их траекторий.
В эти годы генерирование динамических тестов от внешних объектов на специализированных мобильных ЭВМ было невозможно вследствие ограниченности их вычислительных ресурсов. В 1965-м году для имитации тестов от движущихся объектов внешней среды в реальном времени были разработаны программы формирования магнитофильмов на универсальной ЭВМ М-20. На этой машине предварительно формировались и записывались на специализированных магнитофонах наборы динамических тестов о разнообразных ситуациях воздушной обстановки и движения объектов с регистрацией значений реального времени сообщений и их координат с точностью до секунды. Имитации внешней среды и динамических тестов в реальном времени, впоследствии стало широко применяться при разработке комплексов программ оборонных систем для испытаний и гарантирования их качества.
Возрастание сложности и ответственности оборонных зада ч, которые решаются крупными системами, а также увеличение возможного ущерба от недостаточного качества комплексов программ, значительно повысило актуальность освоения методов стандартизированного описания требований, а также оценивания характеристик качества на различных этапах жизненного цикла сложных комплексов программ. Широкое многообразие классов и видов программ, обусловленное различными функциями оборонных систем, предопределяло формальные трудности, связанные с методами и процедурами доказательства соответствия программного продукта условиям контрактов, требованиям заказчиков и потребителей. По мере расширения сферы применения и увеличения сложности выделились области, в которых ошибки или недостаточное качество программ или данных могли нанести ущерб, значительно превышающий положительный эффект от их использования.
Для создания безопасных систем и программных продуктов, прежде всего, необходимо было формализовать их назначение, функции и основные характеристики. На этой основе должны разрабатываться требования к безопасности и другим характеристикам качества, к обработанной информации для потребителей, адекватной назначению и функциям систем. Требования к функциям систем и программным продуктам, а также к безопасности их функционирования должны были соответствовать доступным ресурсам для их реализации с учетом допустимого ущерба – рисков при неполном выполнении требований. Основными источниками отказовых ситуаций были некорректные исходные требования, сбои и отказы в аппаратуре, дефекты или ошибки в программах и данных функциональных задач, проявляющиеся при их исполнении в соответствии с назначением. Стратегической задачей в жизненном цикле оборонных систем стало обеспечение требуемого качества программных продуктов при реальных ограничениях на использование вычислительных и иных ресурсов, выделяемых для их разработки и применения.
1.4. Организация подготовки первых программистов в 1950-е – 60-е годы
В Московском, Ленинградском и Киевском университетах в 1950-е годы началась подготовка специалистов по вычислительной математике, в технических высших учебных заведениях появились курсы по вычислительной технике, и стали открываться кафедры вычислительных машин [1, 4, 11]. Министерство высшего образования и Высшая аттестационная комиссия ввели формальный список таких специальностей. Эти списки в системе образования и научной аттестации играли в СССР важную роль, т. к. служили средством идентификации и формального признания квалификации специалистов. В частности, каждая образовательная специальность получала право иметь самостоятельный учебный план от первого до выпускного года обучения. Учебный план в своей основной части являлся обязательным для каждого вуза и утверждался министерством. Имелось, однако, некоторое количество курсов и семинаров по выбору, которые использовались для более конкретной специализации студентов в рамках данной специальности.
В 1952-м году в нескольких университетах была открыта в дополнение к существовавшей специальности «математика» новая специальность «вычислительная математика», предназначенная для подготовки специалистов, использующих вычислительную технику. Первый учебный курс программирования в СССР был прочитан А.А.Ляпуновым в 1952-м – 53-м учебном году. Структура курса складывалась на глазах у студентов. В перерыве между первым и вторым семестрами у лектора начали складываться основные подходы к «операторному методу». Вся вторая половина курса – это была по существу совместная работа профессора и студентов по созданию и уточнению символики операторов, используемых при составлении схем программ. Курс читался и воспринимался с большим энтузиазмом, и неслучайно почти половина слушателей, математиков-вычислителей, стали после выпуска профессиональными программистами. В 1955-м году в Московском университете при кафедре вычислительной математики работал семинар по смежным вопросам кибернетики и физиологии, который с 1956-го года принял название «семинар по кибернетике».
В 1955-м году чтение курса программирования в МГУ продолжил М.Р. Шура-Бура [1, 4]. Первой книгой об ЭВМ, рассчитанной на массового читателя, была книга А.И. Китова «Электронные цифровые машины», вышедшая в середине 1956-го года. Хорошим качеством книги была убедительная и увлекающая свежего читателя демонстрация новизны, вносимой ЭВМ в практику человеческой деятельности. Ее развитием стал учебник А.И. Китова и Н.А. Криницкого «Электронные цифровые машины и программирование» [5]. Это была первая книга, официально рекомендованная министерством высшего образования в качестве учебного пособия, весьма солидного объема (572 стр.), и изданная большим тиражом (25 тыс. экземпляров). Первым учебником, специально посвященным программированию, была книга киевских авторов Б.В. Гнеденко, А.С. Королюка и Е.Л. Ющенко «Элементы программирования». Они использовали для изложения условную ЭВМ и дидактику курса А.А. Ляпунова. Отдельная глава была посвящена символике адресного программирования. Первой попыткой создать солидный университетский курс программирования, базировавшийся на Алголе-60, была книга Е.А. Жоголева и Н.П.Трифонова «Курс программирования», основанная на опыте чтения лекций по программированию в МГУ.
Потребности в специалистах по программированию и в усилении подготовки по технологии системного программирования, как для общего математического обеспечения, так и для прикладных программ, привели к организации в 1969-м году новой специальности «прикладная математика» (для университетов и политехнических институтов), а также специальности «автоматизированные системы управления» (АСУ) (для отраслевых институтов). В 1975-м году подготовка по этим специальностям осуществлялась на 54 (прикладная математика) и 43 (АСУ) факультетах с общей численностью выпуска порядка 5000 человек в год.
Глава 2. История отечественной вычислительной техники в 1950-е – 70-е годы
2.1. История семейства стационарных универсальных вычислительных машин «Урал» в 1960-е – 70-е годы
В середине 60-х годов и в последующие годы, заводами страны производился серийно ряд оригинальных типов универсальных ЭВМ— БЭСМ-4; Урал-11 – 14; М-220; М-222; Минск-22; Минск-32; Раздан-2; Наири; Мир-1– 3 и другие – (см. рис. 1). Наиболее полно перечень свыше тридцати типов и десяти семейств ЭВМ, разработанных в СССР, представлен в Виртуальном компьютерном музее [10]. Некоторые ЭВМ имели экспериментальный характер или выпускались столь малыми сериями, что практически не отражались на вычислительном потенциале страны и не позволяли широко распространять и применять разрабатываемые на них программы. Поэтому далее в монографии этапы история программной инженерии отражены на ряде примеров технологических программных средств и операционных систем, оказавших наибольшее влияние на вычислительный потенциал страны, так как было нецелесообразно излагать историю программной инженерии для всей совокупности созданных вычислительных машин.
Для выделенных и рассматриваемых машин были созданы различные по функциям и качеству операционные системы и технологические компоненты программной инженерии. Квалификация их разработчиков значительно различалась, среди их продуктов можно найти оригинальные технические решения, однако большинство обеспечивало основные типовые функции автоматизации программирования, для более или менее комфортного применения соответствующих ЭВМ индивидуальными пользователями. В конце 60-х годов стало ясно, что необходимо сокращать разнотипность машин и сосредоточить их производство и разработку технологического программного обеспечения на нескольких типах наиболее перспективных универсальных ЭВМ для массового применения в научных учреждениях и промышленных предприятиях страны. Для таких ЭВМ следовало активизировать и сконцентрировать усилия специалистов по их оснащению эффективными средствами программной инженерии с целью расширения сфер применения и повышения производительности разработчиков прикладных программных продуктов.
Пензенская научная школа в области вычислительной техники, созданная Баширом Искандеровичем Рамеевым получила широкую известность и признание благодаря его таланту и колоссальному труду, вложенному в разработку и выпуск целого ряда вычислительных машин [11]. Первый, ламповый «Урал -1», был выпущен в 1957 году. Он стал «рабочей лошадью» во многих вычислительных центрах страны. Для серийного производства машины «Урал-1» был выбран завод в Пензе. Вместе с группой молодых специалистов, работавших с ним в Москве в СКБ-245, Б.И. Рамеев в 1955 – м году переехал в этот город. Коллектив разработчиков, который составил Пензенскую школу, начал складываться в 1952 – 54 годах еще в Москве в СКБ-245. Часть сотрудников училась в МИФИ, а после окончания института были направлены в СКБ-245.
В Пензе Б.И. Рамеев становится главным инженером и заместителем директора по научной работе НИИ математических машин (потом НИИ управляющих машин) и главным конструктором вычислительных машин «Урал». Машина «Урал-1» стала родоначальницей целого семейства. Простота машины, удачная конструкция, невысокая стоимость обусловили ее широкое применение. После «Урал-1» на той же элементной базе (на электронных лампах) были созданы еще две машины: в 1959 году – «Урал-2», а в 1961 – м году – «Урал-4». По сравнению с первым «Уралом» их быстродействие увеличилось в 50 раз, оперативная память была реализована на ферритовых сердечниках и значительно увеличен объем внешней памяти.
В 1960-м году были начаты работы по созданию семейства полупроводниковых «Уралов». Основные черты нового поколения машин были сформулированы еще в 1959-м году. В соответствии с ними определили состав семейства машин, их структуру, архитектуру, интерфейсы, установили принципы унификации, утвердили технические задания на устройства, ограничения на используемые комплектующие изделия и некоторые другие документы. В процессе проектирования обсуждались с разработчиками основные решения и ход работы. В ноябре 1962-го года была закончена разработка унифицированного комплекса компонентов «Урал-10», рассчитанного на автоматизированное производство. Хотя компоненты разрабатывались для использования в серии ЭВМ «Урал-11» – «Урал-16», они нашли широкое применение и в других средствах вычислительной техники и автоматике. Для этих целей было выпущено несколько миллионов штук компонентов.
В семейство полупроводниковых «Уралов» входили три модели: «Урал-11», «Урал-14» и «Урал-16». Первые две модели стали выпускаться серийно с 1964 года, а последняя – с 1969 года. Выпуск моделей этого семейства ознаменовал новую веху в творческом наследии главного конструктора Б.И. Рамеева. Это первое в нашей стране семейство машин с унифицированной системой организации связи с периферийными устройствами (унифицированный интерфейс), унифицированной оперативной и внешней памятью. В моделях этого семейства нашли свое воплощение многие идеи, которые затем широко использовались в машинах третьего поколения (развитая система прерываний, эффективная система защиты памяти, развитое программное обеспечение).
Это семейство являлось выдающимся примером создания массовых, программно совместимых универсальных ЭВМ разной мощности в 70-е голы, на единой конструктивной, технологической и схемной базе. Основные особенности поколения машин, воплощенные Б.И. Рамеевым в серии «Урал», сводились к следующему:
• машины представляли собой конструктивно, схемно– и программно совместимый ряд ЭВМ различной производительности, с гибкой блочной структурой;
• с широкой номенклатурой устройств, со стандартизованным способом подключения, позволяющим подобрать комплект машины, наиболее подходящий для данного конкретного применения, и поддержать в процессе эксплуатации параметры машины на уровне изменяющихся потребностей заказчика и новых разработок устройств;
• конструктивные и схемные возможности позволяли комплектовать системы обработки информации, состоящие из нескольких одинаковых или разных машин, обеспечивая плавное изменение количественных характеристик и существенно расширяя ряд в сторону увеличения производительности, круга решаемых задач и областей применения;
• наличие датчика времени, аппаратуры сопряжения с каналами связи и пультов операторов для связи с машиной давали возможность строить различные системы обработки данных коллективного пользования, работающие в режиме разделения времени;
• возможности резервирования отдельных устройств и машин обеспечивали создание систем повышенной надежности для обработки информации в заданное время.
В семействе ЭВМ были предусмотрены:
система схемной защиты информации, независимость программ от места в памяти, система относительных адресов, развитая система прерываний и приостановок и соответствующая система команд, позволяющая организовать сложную систему одновременно работающих устройств и одновременное решение многих задач;
• – возможность резервирования отдельных устройств машин, позволяющая создавать системы повышенной надежности: системы схемной защиты данных, независимость программ от их места в памяти, система относительных адресов, развитая система прерываний и соответствующая система команд;
• возможность работать в режимах: с плавающей и фиксированной запятой, в двоичной и десятичной системах счисления, выполнение операций со словами фиксированной и переменной длины, что позволяло эффективно решать, как планово-экономические, информационные, так и научно-технические задачи;
• система аппаратного контроля устройств хранения, адресации, передачи, ввода и обработки информации;
• большая емкость оперативной памяти с непосредственной выборкой слов переменной длины, эффективные аппаратные средства контроля и защиты программ друг от друга, ступенчатая адресация, развитая система прерываний и приостановок;
• возможность подключения памяти большой емкости с произвольной выборкой на магнитных барабанах и дисках, наличие датчика времени, аппаратуры сопряжения с каналами связи и пультов операторов для связи с машиной, что давало возможность строить различные системы обработки информации коллективного пользования, работающие в режиме разделения времени.
Основные черты этого поколения машин были изложены еще в 1963-м году в проекте на семейство ЭВМ. Он появился на полтора года раньше публикаций об американском семействе машин IBM-360. Таким образом, идея создания семейства программно и конструктивно совместимых ЭВМ была опубликована Б.И. Рамеевым независимо от американских ученых и реализована практически одновременно. В отличие от первых моделей семейства IBM-360, семейство «Урал» обеспечивало возможность создания систем обработки информации, состоящих из нескольких одинаковых или разных машин, было рассчитано на работу в сетях и, наконец, было открытым для дальнейшего наращивания технических средств для конкретных систем. Семейство этих ЭВМ производилось серийно с 1964-го года и более десятка лет широко применялось на промышленных предприятиях в стране.
2.2. История стационарных универсальных, высокопроизводительных ЭВМ в 1960-е – 70-е годы
Наибольшее влияние на программирование в 70-е годы оказало появление машины БЭСМ-6 [2]. Ее автором был академик Сергей Алексеевич Лебедев – глава выдающейся отечественной научной школы в области вычислительной техники и программирования. В архитектуре этой машины было сделано много для аппаратной поддержки операционных систем: аппаратная поддержка виртуальной памяти; защита памяти; развитая структура двухуровневой системы прерываний; защищенный супервизорный режим и т. п. Все эти характеристики являлись неотъемлемым признаком современных процессоров, но во времена создания БЭСМ-6 это было необычным и новым. БЭСМ-6, разработанная в ИТМ и ВТ совместно с Московским заводом счетно-аналитических машин (САМ), начала выпускаться с 1968 года, а в 70-х годах была среди универсальных ЭВМ самой высокопроизводительной в мире.
Основная цель [2, 7], которую преследовали авторы проекта БЭСМ-6 – создать быстродействующую серийную машину, сравнительно дешевую, удовлетворяющую наиболее важным современным требованиям с точки зрения автоматизации программирования и развития операционных систем, оснащенную имевшимися в то время в отечественном серийном производстве внешними запоминающими устройствами и устройствами ввода-вывода. Машина БЭСМ-6 предназначалась для решения крупных научно-технических задач, что, естественно, отразилось как на ее архитектуре, так и на выборе системы элементов и конструкции. Она не являлась копией какой-либо отечественной или зарубежной установки ни по системе команд, ни по внутренней структурной организации. При ее создании и проектировании был изучен и проанализирован опыт создания ЭВМ высокой производительности, накопленный к тому времени. В БЭСМ-6 были реализованы новые архитектурные и схемотехнические решения, многие из которых отразились в появившихся потом машинах третьего поколения.
Машины БЭСМ-6 составили стратегическую основу вычислительных средств большинства крупных вычислительных центров и оборонных предприятий страны. Сфера использования машины превзошла прогнозы ее разработчиков. Первоначально предполагалось, что небольшая серия БЭСМ-6 будет использована для решения крупных научных задач в нескольких научных институтах Советского Союза и ядерных центрах. Реально эта машина нашла значительно более широкое применение. На основе БЭСМ-6 были созданы центры коллективного пользования, центры управления в реальном масштабе времени, координационно-вычислительные центры, системы телеобработки и т. д. Машина БЭСМ-6 широко использовались в системах автоматизации проектирования, для моделирования сложнейших физических процессов и процессов управления, как инструментальная машина для разработки крупных программных продуктов оборонных систем и различных новых ЭВМ.
Важной особенностью машины явились аппаратные и программные средства для обеспечения мультипрограммного режима. К ним относятся виртуальная адресация памяти со страничной организацией, система прерывания и соответствующие программы операционной системы, наличие нескольких режимов выполнения команд в процессоре. Высокая скорость преобразования виртуальных адресов в физические обеспечивалась размещением таблицы их соответствия в регистровой памяти. Имелись аппаратные механизмы защиты памяти для команд и операндов. Все это обеспечивало возможность динамического распределения памяти в процессе вычислений средствами операционной системы.
По уровню производительности и степени согласования аппаратных средств с архитектурой, а также архитектуры – с алгоритмами научно-технических задач, БЭСМ-6 может быть отнесена к классу суперЭВМ. БЭСМ-6 за счет многочисленных нововведений архитектурного и структурного плана при основной тактовой частоте 10 МГц выполняла в среднем один миллион операций в секунду над 48-разрядными операндами. В начале 60-х годов отечественной промышленностью были созданы высокочастотные транзисторы и диоды, на основе которых была разработана элементная база машины (в машине было использовано около 60 тыс. транзисторов и 180 тыс. диодов).
Назначение машины, ее архитектурные и структурные особенности, отвечающие современным идеям, потребовали создания соответствующей операционной системы и системы программирования, удовлетворяющих требованиям пользователей. БЭСМ-6 стала первой отечественной ЭВМ, которая была принята государственной комиссией и поставлялась как система аппаратных средств совместно с ее системным программным обеспечением (см. главу 3). Работы по исследованию и разработке операционных систем, стратегий распределения ресурсов и планирования вычислений в нашей стране начались широким фронтом с появлением БЭСМ-6 [7, 11].
В 1968-м году на Московском заводе счетно-аналитических машин (САМ) началось производство ЭВМ БЭСМ-6. Полностью новый компьютер на основе транзисторов и интегральных схем был разработан под руководством С.А. Лебедева, В.А. Мельникова и Л.Н. Королева. При его разработке была поставлена серьезная задача – достичь производительности порядка 1000000 операций в секунду (один мегафлоп). БЭСМ-6 сильно опередила свое время, став началом второго поколения ЭВМ. Она вобрала в себя много оригинальных идей. Систем подобного класса в мире не было. Одно из основных отличий и главных новшеств – «лебедевская водопроводная структура» процессора, позволяющая совмещать обработку различных команд на разных стадиях их выполнения.
Уже позже западные коллеги придумали для этого метода термин «конвейер» (все процессоры на сегодняшний день используют конвейерную архитектуру). Отныне к разным блокам памяти можно было обращаться одновременно, появился прообраз кэш-памяти – сверхбыстрое устройство хранения часто используемых данных и команд. Все эти улучшения обеспечили качественный скачок производительности. Коллеги и современники называли С.А Лебедева настоящим гением— при всей сложности собранной системы, он сумел отсечь все ненужное, оставив самые необходимые блоки. В период с 1968-го по 1987-й год было выпущено порядка 400 машин БЭСМ-6, которые использовали в самых разных, преимущественно оборонных отраслях. Важной особенностью БЭСМ-6 считается программное обеспечение – впервые с момента появления отрасли, ЭВМ начали поставлять с необходимым софтом прямо с завода. Для БЭСМ-6 была разработана полноценная операционная система, над ней трудились лучшие советские умы из Института прикладной математики АН СССР, Вычислительного центра Академии наук и Московского государственного университета (см. главу 3).
С.А. Лебедев одним из первых понял значение системного программирования, значение совместной работы программистов-математиков и инженеров при создании вычислительных систем, включающих как неотъемлемую часть технологическое программное обеспечение, состав и качество которого определяет удобство использования и эффективность работы систем в целом. По инициативе С.А. Лебедева в ИТМ и ВТ в 60-е годы была создана лаборатория математического обеспечения, выполнявшая разработку системного программного обеспечения для всех вычислительных систем: ЭВМ БЭСМ-6, многомашинного информационно-вычислительного комплекса АС-6, ЭВМ серии «Эльбрус», ЭВМ специального назначения.
Математики-программисты принимали полноправное участие в разработке архитектур создаваемых машин, математическом моделировании их структурной организации, создании системы автоматизации проектирования ЭВМ. Все схемы БЭСМ-6 по инициативе С.А. Лебедева были записаны формулами булевой алгебры, что открыло широкие возможности для автоматизации проектирования и подготовки монтажной и производственной документации. Она выдавалась на завод в виде таблиц, полученных на «инструментальной» ЭВМ БЭСМ-2. В разработке БЭСМ-6 были впервые применены методы проектирования и описания, которые в дальнейшем стали широко использоваться при создании новейших суперЭВМ. В годы становления вычислительной техники далеко не у всех было понимание важности системного, технологического программного обеспечения и системного (инженерного) программирования. Программирование систем жесткого реального времени (например, в системах ПВО) являлось одной из самых сложных задач программирования, с наиболее высокой ценой каждой допущенной ошибки, которые, тем не менее, проявлялись даже при натурных испытаниях. Надежность в значительной степени обеспечивается большим запасом мощности основных элементных блоков (диоды и транзисторы были нагружены на 25–40 % от допустимого номинала). Время наработки на отказ достигало нескольких сотен часов.
Влияние машины БЭСМ-6 на развитие отечественной вычислительной техники определялось не только длительностью эксплуатации, сколько тем, что заложенные при создании машины идеи оказались весьма плодотворными. Несколько поколений инженеров и программистов, работавших на БЭСМ-6, были воспитаны на этих идеях. Разработка БЭСМ-6, составившей целую эпоху в отечественном вычислительном машиностроении, явилась примером творческого подхода к созданию ЭВМ, учитывающего все возможности, предоставляемые технической базой, математическим моделированием структурных решений, а также возможности производства для достижения наилучших характеристик машины.
Система АС-6 (главные конструкторы – В.А. Мельников, А.А. Соколов) была предназначена для решения больших научных и экономических задач, задач обработки информации и управления в реальном времени [2, 11]. Машина разработана коллективом ИТМ и ВТ АН СССР совместно с заводом САМ. Разработка АС-6 была завершена в 1975 году, а в 1977 году Московский завод САМ начал изготовление системы малой серией.
2.3. История стационарных, специализированных ЭВМ реального времени в 1970-е – 80-е годы
На 1970-е – 80-е годы пришлось активное развитие отечественных, специализированных ЭВМ и сложных комплексов программ для стационарных систем противоракетной обороны. При этом основное внимание было сосредоточено на разработке аппаратуры ЭВМ и на достижении высоких характеристик по их производительности в реальном времени. При доступной элементной базе это достигалось в значительной степени путем специализации архитектуры и структуры команд ЭВМ, в соответствии с конкретными функциональными задачами и алгоритмами работы оборонных систем. Высокие требования руководства страны к срокам и темпам разработки систем, приводили к сосредоточению всех усилий специалистов и промышленности на создании аппаратуры ЭВМ. До завершения ее монтажа и испытаний, программирование и отладка комплексов программ зачастую оказывалась невозможной, в частности, вследствие уникальности систем команд этих машин. Первичная разработка и отладка программ обычно начиналась на «сырых» машинах в объектном коде, практически без применения технологического инструментария «на одном энтузиазме». Впоследствии машины оснащались минимумом технологических средств на уровне автокодов, которые применялись при развитии и совершенствовании «унаследованных» комплексов программ. В результате, существовавшие в стране на других оборонных предприятиях, методы и инструментальные средства программной инженерии в рассматриваемой сфере в это время практически не использовались.
В 1964 году под руководством Сергея Алексеевича Лебедева была разработана и прошла межведомственные испытания ЭВМ 5Э92б, (первая группа специализированных машин) предназначенная для использования в системе контроля космического пространства и обработки телеметрии спутников [2, 9, 11]. ЭВМ 5Э92б – модификация М-50, применялась в вычислительных и управляющих информационных комплексах управления космическими объектами, центрах контроля космического пространства. Межведомственные испытания комплекса из восьми машин прошли в 1967 году. Программное обеспечение включало развитую систему тестовых и диагностических программ, существенно использующую аппаратный контроль и позволяющую определить неисправный блок.
Первая очередь системы включала одномашинный вычислительный комплекс 5Э92б, системы передачи данных и одного рабочего места оператора на командном пункте. В 1969 году были проведены государственные испытания, и работы по первой очереди завершились. На этом этапе вычислительный комплекс позволял ежесуточно обрабатывать около 4000 радиолокационных измерений и около 200 оптических наблюдений и иметь главный каталог емкостью до 500 формуляров по космическим объектам. Запаздывание в обработке информации было сокращено с нескольких суток до нескольких часов.
Машина 5Э92б была модернизирована в части введения арифметики с плавающей запятой и мультипрограммного режима, и получила название ЭВМ 5Э51. Ее серийный выпуск начался в 1967 году. Благодаря автономной работе основных устройств и, в первую очередь, процессора ввода-вывода на базе общего ОЗУ, эти машины успешно использовались при создании многомашинных комплексов с единой внешней памятью. ЭВМ была надежной, достаточно производительной и удобной в эксплуатации. В общей сложности Загорский электромеханический завод выпустил большую серию из почти трехсот ЭВМ 5Э92б и 5Э51. Но, несмотря на это, машин не хватало, и, как правило, все ЭВМ забирало министерство обороны. Функциональные программы системы создавались в основном в машинных кодах, а позднее на автокоде.
Вторая очередь системы предусматривала замену 5Э92б на модернизированный четырехмашинный комплекс на базе ЭВМ 5Э51. Командный пункт оборудовался коллективными средствами отображения космической обстановки и рабочими местами операторов. В 1972 году был испытан трехмашинный вычислительный комплекс 5Э51, а в 1973 году были успешно проведены испытания четырехмашинного комплекса на базе этой же ЭВМ и новой программно-алгоритмической системы, в которой обработка координатной информации была практически полностью автоматизирована. Для контроля космического пространства с командным пунктом взаимодействовали несколько измерительных пунктов (ИП) на территории СССР и на кораблях в море. На ИП предварительно, на ЭВМ М-220 обрабатывалась информация о координатах, параметрах и состоянии космических объектов, которая селектировалась и сжималась для последующей передачи на командный пункт. На этом завершились работы по созданию второй очереди. Общая производительность вычислительного комплекса командного пункта составила около двух миллионов операций в секунду. Обладая высокой надежностью, он проработал до начала 90-х годов.
В 1957-м году началась разработка одной из первых в Советском Союзе транзисторных машин – для обработки данных радиолокационных станций (РЛС) под руководством Михаила Александровича Карцева (вторая группа специализированных машин). В ноябре 1962-го года вышло постановление правительства о запуске М-4 в серийное производство [11]. Это была первая опытная машина, сделанная на транзисторах. Еще в 1966-м году М.А. Карцев выдвинул идею создания многомашинного вычислительного комплекса, построенного из вычислительных машин, специально разработанных для совместной работы в таком комплексе. Проведенные исследования показали, что производительность комплекса может достигнуть миллиарда операций в секунду. На то время ни одна из машин в мире не имела такой производительности! Это воодушевляло М.А. Карцева, увлекало коллектив разработчиков. Уже в 1967-м году был разработан эскизный проект комплекса (ВК М-9). При защите в министерстве он получил положительную оценку. Вскоре был организован Научно-исследовательский институт вычислительных комплексов (НИИ ВК), а самого М.А. Карцева назначили директором.
В марте 1963-го года распоряжением Военно-промышленной комиссии НИИ ВК была поручена разработка ЭВМ М4-2М. Задача системы – обеспечивать военно-политическое руководство страны достоверной информацией о возможной угрозе ракетного нападения и обстановке в космосе, т. е. она имеет чисто оборонительный характер. Для обеспечения возможности работы на трех уровнях были созданы три модификации М4-2М – 5Э71 для радиолокационных станций, 5Э72 – для командных пунктов (КП) радиолокационных узлов, 5Э73 – для будущего КП комплекса ПРО. В октябре 1964 года начались приемо-сдаточные испытания, в ноябре машина была принята заказчиком и отправлена на головной объект. К концу 1964-го года еще шесть машин 5Э71 были отгружены на объекты заказчика. В 1965-м – 66-м годах были проведены стыковки машин с РЛС и отработка на них программного обеспечения, которое создавалось следующим образом [9, 11].
Работы шли в три смены, особенно у разработчиков программ, которые отлаживались на штатных ЭВМ в составе РЛС и командного пункта ПРО. Машинное время расписывалось до минуты. Программирование рабочих алгоритмов было очень трудоемким процессом. Средств автоматизации программирования в то время практически не было, да и применить их было нельзя. Это было неизбежно из-за крайне ограниченных ресурсов памяти и производительности ЭВМ. Чтобы «втиснуть» функциональные программы системы в отведенные ей память и время работы, приходилось перепрограммировать по несколько раз. Современные программисты вряд ли могут представить, как можно было сжать до четырех тысяч машинных команд всю рабочую программу радиолокационного узла ПРО. Он с двумя секторными РЛС должен был обеспечивать одновременное обнаружение траекторий целей, уточнение траекторий для шести сопровождаемых целей, выдачу в нужной форме информации на средства отображения и на командный пункт.
В 1963-м году в тематическом отделе была создана лаборатория по разработке программного обеспечения для будущих радиолокационных станций и командных пунктов узлов ПРО. В лаборатории было определено два направления по созданию программно-алгоритмического обеспечения. Разработка алгоритмов для командных пунктов узлов была поручена одной группе специалистов, а разработка алгоритмов и программ для радиолокационных узлов другой. Главная трудность на первом этапе заключалась в том, чтобы представить себе поставленную задачу, понять, что нужно делать и как ее решать. Ни в зарубежной, ни в отечественной закрытой литературе найти прототипы не удалось (последствия барьеров секретности). Прежде всего, были определены алгоритмы, связанные с траекторной обработкой информации о космических объектах. С большим трудом удавался выбор методов первичной обработки радиолокационной информации от момента выхода ее с аппаратуры РЛС до момента формирования математических опорных точек траекторий целей. (Однако, в то же время подобные задачи успешно решались в НИИ-5 при создании радиолокационных узлов «Межа» и командных пунктов системы ПВО страны, см. главу 3. Эти проекты, к сожалению, вследствие глубокой секретности, развивались параллельно и совершенно независимо, без обмена информацией.
В конце 1965-го года на узле были смонтированы две из трех предусмотренных по штату ЭВМ 5Э71, функционировало несколько линеек приемно-индикационной аппаратуры станции, настраивались передатчики. Можно было начинать отладку боевой программы на реальных вычислительных средствах и проводить пробную стыковку с аппаратурой [9]. ЭВМ 5Э71 имела высокую надежность, была простой и удобной в эксплуатации, но для программистов была пока еще фактически грудой железа. Никаких технологических программных средств к ней не прилагалось. Не было даже операционной системы реального времени и программной среды, в которой она работает. Все это предстояло создавать на месте. Год непрерывной круглосуточной работы программистов и алгоритмистов принес свои плоды. К концу 1966 года боевая программа уже вполне достойно функционировала в составе системы. Формальным и успешным подтверждением этому были завершившиеся конструкторские испытания станции. Существенных претензий к боевой программе ни со стороны главного конструктора, ни со стороны заказчиков объекта предъявлено не было. (РЛУ «Межа» на ЭВМ 5Э89 в системе ПВО успешно завершил государственные испытания в 1967 году).
В 1969-м году главный конструктор М.А. Карцев начал разработку ЭВМ М-10, которая в 1973-м году начала эксплуатироваться [3, 9]. Создание ЭВМ М-10 долго держалось в глубоком секрете, потому что машина разрабатывалась для Системы предупреждения о ракетном нападении (СПРН), а также для общего наблюдения за космическим пространством. На околоземных орбитах тогда находится около 17 тысяч объектов различного происхождения, включая действующие и отслужившие свой срок спутники, куски ракетоносителей и пр. Первый эшелон СПРН – космический: по факелам запускаемых ракет, на спутниках засекают их старт. Костяк системы – ее второй, наземный эшелон, включающий мощные радиолокационные станции, расположенные по окраинам страны (до развала СССР их было девять – под Ригой, Мурманском, Балхашем, Иркутском, и т. д.), а также сопряженные с ними вычислительные комплексы на базе ЭВМ М-10, которые имели следующие основные характеристики [3]:
• среднее быстродействие – 5 млн. операций в секунду, быстродействие на малом формате <16 разрядов – около 10 млн. операций в секунду;
• общий объем внутренней памяти – 5 млн. байт;
• первый уровень – оперативная память – 0,5 млн. байт; постоянная память 0,5 – млн. байт.
• второй уровень памяти – 4 млн. байт;
• показатели надежности: коэффициент готовности – не менее 0,975, время (среднее) безотказной работы – не менее 90 часов;
• обеспечивалась одновременная работа 8 пользователей на восьми математических пультах.
К началу 1980-х годов ЭВМ М-10 обладала: наивысшими производительностью (по некоторым оценкам – 20–30 млн. операций в сек.), емкостью внутренней памяти и пропускной способностью мультиплексного канала, достигнутыми в СССР. Впервые в мире в ней был реализован ряд новых прогрессивных решений, в том числе: предусмотрена возможность синхронного комплексирования до семи ЭВМ при прямом (минуя мультиплексный канал) обмене информацией между программами отдельных машин. При динамическом разделении оборудования; реализована автоматическая перестройка поля процессоров; в состав ЭВМ введен второй уровень внутренней памяти емкостью более 4 млн. байт с произвольным доступом; обеспечен внешний обмен с обоими уровнями внутренней памяти.