Навеяло...
РАЗВЕРНУТЬ СКРЫТЫЙ ТЕКСТ
Конец 50-х — начало 60-х годов ознаменовались не только активным созданием трансляторов — начался лавинообразный процесс языкотворчества. И среди системных программистов, создававших трансляторы в машинных кодах, возникла идея специализированных языков для создания трансляторов и других больших систем. Такой язык должен быть машинно ориентированным и одновременно языком-посредником. Для того чтобы создать трансляторы с M языков на N машин нужно написать M*N трансляторов, а с использованием языка-посредника достаточно M трансляторов с исходного языка на язык-посредник и N трансляторов с языка-посредника на N машин. Первой такой попыткой был язык UNCOL [5], разработанный Мэлвином Конвеем в 1958 году, а у нас были созданы языки АЛМО (ИПМ), Эпсилон и Сигма (СО АН СССР).
АЛМО (АЛгоритмический Машинно Ориентированный) — это язык и абстрактная вычислительная машина со своей памятью нескольких видов и набором операций, близких к системам команд физической ЭВМ. Все вместе это позволяет выполнять программу, написанную на языке АЛМО, почти так же эффективно, как и программу, написанную специально для конкретной машины. Организация системы программирования на базе АЛМО предполагает следующую схему работы: для каждой машины должен быть создан компилятор с языка АЛМО на язык этой машины; транслятор с каждого проблемно-ориентированного языка, например Алгола, пишется на АЛМО, а затем он переводится с помощью компилятора в код конкретной машины; программа, написанная на проблемно-ориентированном языке, переводится на АЛМО транслятором, работающим в коде машины, а затем компилятором в код машины, где и исполняется.
Первым был создан компилятор АЛМО-БЭСМ-4, затем транслятор Комплекс Алгол, транслятор Фортран-АЛМО, а затем начал создаваться транслятор Алгамс-АЛМО. Комплекс Алгол — это транслятор с Алгола и средства отладки, позволяющие получить информацию о месте аварийного останова в терминах языка и предпринять некоторые действия (например, сделать необходимые выдачи). Алгамс-АЛМО — транслятор с языка Алгамс, дополненного рекурсивными процедурами. Алгамс был разработан в 1963–1966 годах Группой по автоматизации программирования для машин среднего типа (ГАМС), созданной комиссией многостороннего сотрудничества Академий наук социалистических стран. В основу Алгамса был положен язык Алгол с ограничениями, облегчающими процесс трансляции. Фортран-АЛМО — транслятор с языка Фортран IV. Несколько позже началась работа по созданию транслятора Форшаг-АЛМО, который наряду с выполнением функций, присущих обычным трансляторам, позволял вести пошаговую, пооператорную трансляцию программы на Фортран IV в диалоговом режиме.
Компилятор АЛМО-БЭСМ-4 заработал в 1968 году, а АЛМО-БЭСМ-6 был готов к 1970 году. Компиляторы АЛМО появлялись и на других машинах — например, на машине СПЭМ, созданной в Военно-космической Академии (ВИКИ) им. А. Ф. Можайского в Ленинграде.
АЛМО использовался в разных организациях не только как промежуточный язык, но и как язык программирования для создания систем программ. К ним прежде всего относятся программы решения задач логического и информационного характера. АЛМО, хотя и не создавался специально для решения таких задач, тем не менее подкупал своей эффективностью и возможностями.
Система программирования на базе языка АЛМО получила название Универсальной. В среднем времена счета, полученные по готовым программам различных задач, для трансляторов Универсальной системы были не хуже, чем для трансляторов, написанных вручную. Более того, для трансляторов Фортран-АЛМО и Форшаг времена счета были даже лучше, чем для транслятора Фортран-Дубна. В трансляторы Универсальной системы не включались алгоритмы оптимизации циклов, вследствие чего в готовой программе не используется эффективная команда окончания цикла. Это значит, что использование АЛМО в качестве языка для написания транслятора и двойная трансляция не приводили к замедлению работы.
Следует отметить, что система программирования на базе языка АЛМО — явление уникальное в мировой программной инженерии, ведь язык UNCOL так и остался теоретическим языком и система трансляторов на его основе не появилась. Создание машинно ориентированного языка и действующей системы трансляторов на его основе, несомненно, было значительным достижением.