Транслятор с языка Алгол 68 для ЕС ЭВМ

С 1968 года коллектив лаборатории системного программирования, которой тогда руководил Борис Константинович Мартыненко, работал над реализацией транслятора с языка Алгол 68 для будущей ЕС ЭВМ. Фактическим научным руководителем был Григорий Самуилович Цейтин, который в ту пору руководил лабораторией математической лингвистики. Довольно быстро эта большая работа была поделена на фрагменты, каждым из которых занимался конкретный сотрудник. Так получилось, что транслятором в целом не занимался никто, считалось, что это очень простая техническая работа. Однако, для Алгола 68 это было совсем не так. Дело в том, что конструкция m a; может быть как описанием переменной а, если m описана как вид, так и унарной формулой, если m описана как унарная операция. Таким образом, какую-то начальную идентификацию надо было проводить ещё до традиционного синтаксического разбора. А идентификация видов и операций требовала разбора блочной структуры всей программы и составления многих нетривиальных таблиц. Мне удалось придумать архитектуру транслятора из шести просмотров, причем направления просмотров чередовались. По предложению Цейтина примерно в начале 1973 года я написал статью об этом. Тогда публиковаться специалистам по программированию было практически негде. Был академический журнал «Автоматика и телемеханика», но туда весьма неохотно принимали статьи по программированию. В 1975 году появился новый академический журнал «Программирование». Мою статью приняли в его второй номер.

«Процессы идентификации и структура компилятора с языка Алгол 68″, «Программирование», N2, 1975, кол-во страниц 7

На самом деле к моменту публикации я уже давно занимался другими вопросами. Подробнее об этом времени см. раздел Истории. Мне уже не хотелось заниматься синтаксическим анализом, поэтому я попросил Цейтина дать мне совершенно другую тему. Он вспомнил про свою старую идею учёта последующего контекста и предложил реализовать её для синтеза эффективного объектного кода. Мне удалось довести первоначальную идею до практической программной реализации, по результатам мы выступили на всесоюзном симпозиуме в Новосибирске

«Язык синтеза объектной программы с учетом последующего контекста», Сб. «Труды всесоюзного симпозиума по методам реализации новых алгоритмических языков», Новосибирск, ВЦ СОАН СССР, 1975, соавтор – Г.С.Цейтин

и опубликовали совместную статью в журнале «Программирование» в том же 1975-ом году.

«Средства эффективного синтеза объектной программы«, «Программирование» N6, 1975, соавтор Г.С.Цейтин, кол-во страниц – 11.

Мне показалось, что в этой статье подход был описан слишком общим образом без конкретных примеров использования, поэтому чуть позже я опубликовал в «Программировании» ещё одну статью, где применил описанную раннее технику для полезной на практике задачи.

«Распределение регистров в рабочей программе«, «Программирование»,  N1, 1977, кол-во страниц – 5.

В конце 1975 года транслятор с Алгола 68 на ЕС ЭВМ заработал. Анализирующая часть работала на ОДРЕ 1204, а синтезирующая – на ЕС ЭВМ. Текст на промежуточном языке переносился с машины на машину на перфоленте. Там было еще много ошибок, качеством объектного кода мы были недовольны, но, самое главное, он работал! Г.С. Цейтин предложил написать монографию по результатам наших работ, что мы и сделали.

«Алгол 68. Методы реализации» под редакцией Г.С.Цейтина, Изд.ЛГУ, 1976, авторы — Балуев А.Н., Братчиков И.Л., Гиндыш И.Б., Крупко Н.А., Терехов А.Н., Цейтин Г.С. и др. (всего 12 человек), кол-во страниц – 224

В предисловии мы указали, кто написал каждую главу и даже каждый параграф. Там моя фамилия упоминается чаще всех, да и по тексту мне принадлежит примерно половина книги. Я думаю, что это отражает реальное положение дел к этому моменту – старшие товарищи практически потеряли интерес к проекту, как только он перешел в промышленную стадию, в частности, пока не появилась ЕС ЭВМ на мат-мехе, мы каждую неделю ездили на 2-3 дня в Москву, где работали ночами на IBM 360. С этой монографией связана интересная история. Как раз когда мы получили новенькую книжку из типографии, к нам в Ленинград приехали с визитом Дейкстра, Хоар и Шварц, сопровождаемые А.П. Ершовым. Я с ними гулял по Эрмитажу, в Летнем саду, мне было жутко интересно – тогда это была большая редкость поговорить с живыми классиками. Мы им подарили по экземпляру монографии. Через месяц от Дейкстры пришло письмо с таким примерно содержанием: «Спасибо за подарок! Я даже представить себе не мог, что в таком медвежьем углу, как Ленинград, занимаются такими тонкими вопросами, как Алгол 68. Поскольку я не владею русским языком, я подарю эту книжку библиотеке своего университета (не помню точно, то ли Лейдена, то ли Эйндховена) и она будет там стоять в одном ряду с редкими китайскими манускриптами». Дейкстра – великий ученый, но как человек он мне еще во время наших прогулок не понравился, вечно строил из себя монумент. Мы весело посмеялись над этим письмом, а Цейтина письмо вывело из себя. Он всё порывался близко к тексту перевести на английский письмо запорожцев султану и направить его от нас в качестве ответа Дейкстре. В те годы это письмо не было доступно простым людям, но Цейтин как руководитель лаборатории мат.лингвистики имел доступ в Спецхран, а поскольку английским, как и многими другими языками, он владел в совершенстве, ни минуты не сомневаюсь, что он смог бы выполнить свою задумку. Еле отговорили. В 1978 году в Киеве состоялась первая всесоюзная конференция по программированию. Это было очень крупное событие, куда приглашали только известных людей. Цейтина, разумеется, пригласили. Мы подготовили для него «генеральский доклад»

«Опыт разработки транслятора с Алгола 68 в ЛГУ», Тезисы докладов I-ой Всесоюзной конференции по технологии программирования, Киев, 1978, соавторы – Цейтин Г.С., Мартыненко Б.К., кол-во страниц – 4

Потом я уже самостоятельно выступил в Новосибирске

«Реализация Алгола 68 на ЕС ЭВМ», Сб. материалов «Всесоюзной симпозиум по перспективам развития в системном и теоретическом программировании», Новосибирск, кол-во страниц – 5

Следующий доклад уже не назовешь проходным. Отдельно транслируемые процедуры применялись уже много лет, но обычно это сопровождалось массированным копированием описаний (COPYBOOK в языке Cobol) или требованием отсутствия глобальных идентификаторов. В Алголе 68 были предусмотрены специальные средства, а мы их аккуратно реализовали, позволяющие при трансляции большой программы определить определенные гнезда (nest), куда впоследствии можно положить не только процедуру, но и произвольный текст – яйцо (egg). Контекст в виде набора описаний типов, операций и идентификаторов запоминался в виде иерархически устроенных таблиц. В результате, пользователь получал возможность накопления контекстов, создавая тем самым специализированные языки. Каждый новый фрагмент транслировался совершенно без всяких потерь в надежности или эффективности. Руку на отсечение не дам, но все- таки думаю, что, по крайней мере, в СССР мы были первыми, кто сумел достичь таких результатов.

«Библиотечные вступления и отдельная трансляция процедур в трансляторе с Алгола 68″, Тезисы докладов и сообщений на Всесоюзной конф., ч.2, Вильнюс, 1980, кол-во страниц – 3

Следующая работа – это аспирантская работа другого моего ученика – Алексея Рухлина, которому мы все помогали, поскольку работа была очень объемной (управление динамической памятью).

«Управление процессами и памятью в мультипроцессной мини-ЭВМ», Тезисы докладов Всесоюзной школы-семинара. Часть 4. Киев, Наукова думка, 1982, соавторы — Рухлин А.П., Фоминых Н.Ф., Цейтин Г.С., кол-во страниц – 4

К началу 1980-ых годов стало ясно, что внедрение Алгола 68 идёт не так быстро, как хотелось бы. Мы выступали на конференциях, например:

«Опыт реализации и использования языка Алгол 68 в ЛГУ. Аппаратные и программные средства применения ЭВМ в учебном процессе» (учебно- методический материал), Материалы конференции «Применение ЭВМ в вузах», Л., 1984, соавтор – Рухлин А.П., количество страниц – 3.

читали обзорные лекции, делали большие промышленные эксперименты, чтобы обеспечить базу для сравнения по эффективности, но явно чего-то не хватало. Тогда я обратился к члену-корреспонденту АН СССР Святославу Сергеевичу Лаврову за советом. В принципе, я знал, что С.С. Лавров не любит Алгол 68, более того, когда-то он подписал Minority Report, в котором была рекомендация IFIP не утверждать новую версию языка. Тем не менее, я решил, что Лавров – человек с огромным опытом, внедривший многие системы в реальное производство, поэтому он может дать дельный совет. Совет оказался изумительно простым – прежде всего, нужно написать хороший учебник, так как формальное описание очень трудно для прочтения. Сказано – сделано, к этому времени я уже много раз прочитал курсы лекций по Алголу 68, но учебников я ранее не писал. Председатель Рабочей группы по Алголу 68 академик Андрей Петрович Ершов несколько раз говорил мне: «Андрей, ну, почему Вы так интересно говорите, но пишите, как записной сухарь?». Вот я и решил просто записать свои лекции простым разговорным языком. Кроме того, я воспользовался ещё одной идеей старших товарищей – написал сначала 30-страничное Введение, прочитав которое, уже можно было начинать писать программы на Алголе 68, а уж только потом написал еще 70 страниц более серьезного текста. В это время мои коллеги с мат-меха Г.Ф.Дейкало и Б.А. Новиков уже прославились со своей диалоговой системой JEC для ЕС ЭВМ, но у них тоже не было описания, доступного массовому пользователю. Мы решили объединиться, так появилась монография:

«Новые средства программирования для ЕС ЭВМ. Транслятор с языка Алгол 68 и диалоговая система JEC» (монография), «Финансы и статистика», М., 1984 г., соавторы – Дейкало Г.Ф., Новиков Б.А., Рухлин А.П., количество страниц – 201.

Через много лет, когда праздновалось 25-летие Алгола 68, я со своими друзьями и коллегами из Новосибирска написал большую статью о работах по Алголу 68 в СССР. На неё было довольно много ссылок, многие западные учёные высказывали удивление, что в СССР настолько продвинулись в реализации Алгола 68. Часто их удивление меня раздражало, по крайней мере, в начале 70-ых годов я ни на минуту не сомневался, что наш уровень теории и практики реализации трансляторов выше западного. К сожалению, сейчас я так сказать уже не могу.

«Algol 68 — 25 years in the USSR», Conference on the history of ALGOL 68, CWI Amsterdam, 1993, соавторы – Бульонков М.А., Рар А.Ф., кол-во страниц -7.