|
Трансляторы с Алгола-60
Наталия Дубова
05.12.1999
В 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, без рекурсий, но с определением многомерных
значений и операциями над ними, возможностью инициирования
переменных и некоторыми другими нововведениями.
Назад
|
|
|