Трансляторы с Алгола-60
Наталия Дубова
В
1962 году в СССР разработан первый транслятор для языка высокого уровня
Только
в конце 50-х у пользователей советских ЭВМ появилась возможность вводить в свои
машины символьную информацию. На начальных этапах все программирование было
численным, поскольку устройства ввода могли работать только с числовыми
данными. Видимо, поэтому системное программирование для первых отечественных
машин развивалось в направлении создания трансляторов, а не автокодов и
стандартных подпрограмм. В середине 50-х появились так называемые
программирующие программы для БЭСМ и «Стрелы» — первый опыт автоматизации
программирования в Советском Союзе. Первые школы программирования СССР
складывались там, где шла наиболее интенсивная эксплуатация этих «рабочих
лошадок» раннего периода отечественной техники, — в ИТМиВТ и в Институте
прикладной математики под руководством академика Келдыша (здесь, кстати, в 1954
году была создана система расчета термоядерного взрыва). Благодаря накопленному
опыту этим коллективам удалось к 1962 году добиться новых успехов — именно
здесь разрабатываются отечественные трансляторы с только что появившегося языка
высокого уровня Алгол.
Первая
версия Алгола была выпущена в 1958-м. Однако признание и известность получил
усовершенствованный вариант языка, Алгол-60, названный так потому, что работа
международного коллектива разработчиков над его спецификацией завершилась в
1960 году. Никлаус Вирт назвал Алгол-60 «первым языком, который был ясно
определен: его синтаксис задан с помощью строгого формализма». В этом же году
стартовали проекты реализации трансляторов для Алгола-60 в СССР: в ИТМиВТ и в
ИПМ.
К
этому времени основная вычислительная нагрузка в этих организациях с БЭСМ и
«Стрелы» перешла на последнюю ламповую машину Лебедева, М–20. Машина
выпускалась серийно и завоевала популярность у программистов не столько даже
из-за своего быстродействия, сколько благодаря изяществу и удобству. Идейным
соавтором Лебедева при разработке М-20 был математик и программист Михаил
Романович Шура-Бура, создавший для этой ЭВМ так называемую интерпретирующую
систему ИС-2, которая автоматизировала обращение к библиотечным подпрограммам и
использовалась всеми появившимися в дальнейшем трансляторами с Алгола для этой
машины. Под руководством Шура-Буры коллектив программистов ИПМ начал разработку
своего транслятора.
Но
первый транслятор с языка Алгол для М-20 был завершен в тех же стенах, где была
разработана сама машина, в ИТМиВТ, хотя по времени этот проект был запущен
несколько позже проекта ИПМ. Его автор, Святослав Сергеевич Лавров, стремился
сделать систему трансляции как можно быстрее и по возможности эффективнее.
Поэтому транслятор по версии ИТМиВТ под названием ТА-1 был фактически транслятором
с подмножества языка, без рекурсии процедур и с рядом других ограничений.
В
ИПМ в начале 60-х работал блестящий коллектив программистов — почти весь первый
выпуск специальности «Программирование» кафедры вычислительной математики
мехмата МГУ, ученики Алексея Андреевича Ляпунова. Эдуард Зиновьевич Любимский,
который вместе с Шура-Бурой руководил разработкой транслятора с Алгола,
вспоминает, что, познакомившись с языком, специалисты института поначалу
замахнулись на систему автоматизации программирования более высокого уровня,
чем Алгол-60. Алгол по удаленности от машинного уровня был аналогичен
операторной схеме программы Ляпунова. Однако Шура-Бура настоял на том, чтобы
решать более «приземленную» и насущную задачу.
В
ИПМ тоже был свой ТА1 — первая, не вполне удачная версия транслятора.
Окончательный вариант, ТА2, был завершен несколько позже разработки ИТМиВТ,
весной 1963 года, и уже в мае демонстрировался на международной конференции по
программированию в Киеве. Это была практически полная реализация языка, и во
время показов в Киеве на М-20 транслятор справился с придуманной одним из
участников тяжелейшей рекурсией. Любимский рассказал также, что вскоре после
завершения разработки авторам ТА2 попал в руки западногерманский журнал с
тестовой программой для трансляторов с Алгола-60. Журнал предлагал проверить
зрелость транслятора, на какую категорию он потянет: man or boy. В ИПМ прогнали
программу и удостоверились в высоком уровне своей разработки.
Первая
версия языка, Алгол-58, очень заинтересовала Андрея Петровича Ершова. После
окончания мехмата (тот же выпуск Ляпунова) он работал в ИТМиВТ и был автором
программирующей программы для БЭСМ. Однако в начале 60-х Ершов — уже в
Новосибирске, где формировался новый научный центр, Сибирское отделение АН СССР.
Ершова пригласил сюда академик Соболев, о роли которого в развитии
вычислительной математики и становлении советского программирования мы уже не
раз упоминали. Теперь Соболев возглавил Институт математики СО; организацией
отдела программирования в институте занялся Ершов.
Постепенно
в Сибири сложилась новая мощная программистская школа. Одним из первых ее ярких
результатов стала разработка языка Альфа, явившегося итогом работы Ершова и его
коллег над Алголом-58. Ершов развил возможности этого языка, в частности
добавил матричные операции, и полученный в конечном итоге язык оказался во
многом схож с Алголом-60. Фактически, завершенный в 1961 году язык Альфа — это
«расширенное подмножество» Алгола-60, без рекурсий, но с определением
многомерных значений и операциями над ними, возможностью инициирования
переменных и некоторыми другими нововведениями.
Список литературы
Для
подготовки данной работы были использованы материалы с сайта http://www.osp.ru/