Выбрать главу

В начале 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, организовывал многочисленные международные конференции в Новосибирске и других регионах Советского Союза. А.П. Ершов инициировал (и часто редактировал) переводы западных книг по информатике. Установление и развитие личных и профессиональных связей между иностранными учеными и их советскими коллегами было целью, которой он посвятил значительную часть своей энергии.