Из истории создания компилятора с Алгол 68
Рассказывает Андрей Николаевич Терехов, профессор Петербургского государственного университета, д.ф.-м.н., зав. кафедрой системного программирования.
IFIP - International Federation on Information Processing - международная общественная организация, которая была образована в 1950-х годах и прежде играла большую роль в сфере ИТ. Ее рабочая группа 2.1 занималась созданием языков программирования. В частности, ею был создан язык Алгол 60 (главный редактор - датчанин Peter Naur). Первое сообщение об Алголе 58 вышло в 1958 году, в 1960 году IFIP утвердила стандарт этого языка под именем Алгол 60, в 1964 году было опубликовано "Пересмотренное сообщение", но название языка сохранилось. После этого члены рабочей группы 2.1 опубликовали Белую книгу "Куда идти дальше". В ней впервые были описаны некоторые языки, оказавшие впоследствии большое влияние на развитие программирования, например CLU и Alphard. Кроме того, A. van Wijngaarden написал статью про двухуровневую грамматику, принятую позже рабочей группой 2.1 за основу языка следующего поколения, поначалу названного АлголХ. IFIP приняла стандарт на новый язык в 1968 году, поэтому в историю он вошел как Алгол 68. Язык получился довольно тяжелым, и ряд ведущих экспертов, в частности Вирт, Дейкстра, Хоар, не стали подписывать итоговый документ, а опубликовали отдельный "Отчет меньшинства" (minority report), выразив таким образом свою неудовлетворительную оценку. Однако и для них опыт разработки Алгола 68 не пропал даром, например Вирт разработал языки Паскаль и Модула2.
Интересно, что одним из тех, кому объявили благодарность за участие в разработке Алгола 68, был Григорий Самуилович Цейтин, руководитель лаборатории математической лингвистики НИИММ ЛГУ, доктор физ.-мат. наук, мой научный руководитель. Большой любитель разных языков (не только программирования, он знает английский, японский и др.), известный программист, ученый-математик. Он не входил в состав рабочей группы 2.1, так как был невыездным человеком, но активно переписывался с ее специалистами. Они присылали ему версии, он высказывал свои замечания. От СССР членами рабочей группы были академик А. П. Ершов, который проголосовал за новый язык, и член-корр. С. С. Лавров, при голосовании воздержавшийся. Одно из заседаний рабочей группы 2.1 прошло в СССР на знаменитом курорте Бакуриани.
В 1968 году я учился на третьем курсе матмеха. По предложению Г. С. Цейтина, считавшего, что лучший способ понять язык - это реализовать его, мы включились в работу. Моя дипломная работа "Поиск цепочки приведений" была частью проекта по реализации транслятора с Алгола 68. Как раз в ту пору сотрудники Научно-исследовательского центра электронной вычислительной техники (НИЦЭВТ) создавали машины ЕС ЭВМ по образцу архитектуры IBM 360. Так получилось, что именно я поехал в НИЦЭВТ подписывать договор на финансирование работ по созданию транслятора для ЕС ЭВМ. В 1971 мы получили финансирование и приступили к выполнению НИР. Руководил работами Г. С. Цейтин, а лабораторией системного программирования, на базе которой выполнялся НИР, - Борис Константинович Мартыненко. Параллельно с нами академик А. П. Ершов получил большое финансирование для ВЦ СО АН в Академгородке на разработку оптимизирующих трансляторов с разных языков для ЕС ЭВМ и БЭСМ6 (в том числе и с Алгола 68). Так как ЕС ЭВМ находились в стадии создания, первые три года мы работали на других инструментальных ЭВМ, а отладку транслятора проводили в Москве на IBM 360, доставленной к нам кружным путем, так как КОКОМ не позволял странам Восточной Европы законным путем приобретать машины и реальную документацию. НИЦЭВТ выполнял работы в интересах не только СССР, но и других стран Варшавского договора, и в гостинице при институте вместе с нами жили и также осваивали OC 360 специалисты из Венгрии, Болгарии, ГДР. Приходилось очень трудно, потому что справочных книг практически не было, а выданный нам талмуд "Supervisor and Data Management Macroinstructions" описывал по алфавиту порядка 1000 макрокоманд, разобраться в которых было очень сложно. Позже оказалось, что в НИЦЭВТ какими-то судьбами попала и другая книга "Supervisor and Data Management Services", которая как путеводная нить вводила в курс дела, но об этой книге никто не знал. Кроме того, работать на машинах приходилось по ночам, так как днем техника была занята, поэтому со временем в команде остались практически только молодые специалисты. Забавно вспоминать, что горничные гостиницы были абсолютно уверены, что у них поселились бандиты, так как днем мы спали, а по ночам работали.
Я вскоре стал руководителем лаборатории системного программирования. Г. С. Цейтин, как настоящий ученый, легко увлекался новыми научными темами. В то время он заинтересовался искусственным интеллектом, семантическими сетями и в результате, можно сказать, потерял вкус к разработке транслятора. На мне оказались все организационные вопросы выполнения НИР - договора, отчеты, руководство людьми... Часто Цейтина просто невозможно было найти! Меня признали вторым руководителем договора с правом подписи, а Цейтин постепенно отошел от работ, и наши пути разошлись. В конце концов, мы сделали транслятор с Алгола 68 - первый в СССР. Группа Ершова в Новосибирске так и не выпустила транслятор с Алгол 68, ряд других коллективов реализовали неполные языки. Позже хороший транслятор с Алгола 68 для супер-ЭВМ "Эльбрус" был создан группой из ИТМиВТ под руководством Александра Маслова.
В 1974 году вышло "Пересмотренное сообщение об Алголе 68", определившее более стройную и простую версию языка Алгол 68, получившую широкое признание в мире. Начали издаваться книги. Несомненное влияние Алгол 68 оказал на авторов языков Си и Ада, а затем и на более современные языки, например Java (тернарный оператор-условное выражение, операции с присваиваниями, полный видовой контроль и т. д.)
Я считаю, что Алгол 68 хорошо подходит для военных областей применения, так как за счет полного статического контроля позволяет отслеживать намного больше ошибок, чем другие языки. Пользователями нашего транслятора являются такие организации, как НПО "Красная Заря", "Импульс", "Ленинец" и многие другие по всему бывшему Советскому Союзу. Мы улучшали и развивали транслятор, в частности использовали метод "раскрутки", т. е. пропускали транслятор через себя, чтобы минимизировать объем занимаемой памяти. Алгол 68 - саморасширяемый язык, так как позволяет описывать новые типы данных, новые операции над ними и для каждой категории специалистов предлагать специализированный язык, например языки для бухгалтеров, экономистов, телефонистов и т. д. Интересно, что распространению языка Алгол 68 в нашей стране помог тот факт, что Министерство обороны США выбрало для себя язык Ада, который по конструкциям очень близок к языку Алгол 68, своему непосредственному предшественнику.
В заключение - шутка
Из серии "Малоизвестные факты биографии Андрея Николаевича Терехова", опубликованной в Интернете в честь юбилея - пятидесятилетия героя в 1998 году (http://www1.tepkom.ru/users/ant50/Relativity/10.html). Она никак не относится к Алголу 68, но связана с тем, чем Андрей Николаевич занимается сегодня:
Встретились как-то Андрей Николаевич Терехов и Эдсгер Дейкстра. "Ну как дела, брат Дейкстра?", - спрашивает Андрей Николаевич. Тот возьми да и начни афоризмами сыпать. "Использование Кобола, - говорит, - калечит ум. Его преподавание, следовательно, должно рассматриваться как уголовное преступление". А Терехов-то, не будь дурак, сразу смекнул. Так в "Теркоме" появилась группа реинжиниринга ("Ланит-Терком" - предприятие, которое занимается оффшорным программированием, его возглавляет А. Н. Терехов, одно из направлений работ - реинжиниринг программных приложений, т. е. перевод их на более новые платформы).
Статья опубликована 22.01.2002 г.