ДИАЛОГ ОБ АЛГОЛЕ 68
Становление Новосибирской школы программирования. Мозаика воспоминаний.

ДИАЛОГ ОБ АЛГОЛЕ 68

Авторы просматривают архивные материалы и непринужденно беседуют

Берс: Так когда мы занялись Алголом 68? 

Рар: Я занялся Алголом еще в 66 году, когда Ершов привез, не помню с какой конференции, известие, что наступил следующий шаг в развитии Алгола 60, что называется новый язык «Алгол 67» , и прочитал нам всем лекцию, что это за язык и что там содержится.

Берс: Там уже была двухэтажная грамматика. Какое впечатление на тебя произвело это известие?

Рар: Я был молод и послушен. Ну, язык как язык, дальнейшее развитие и т.д. В чем дело? Всё удовольствие от логической стройности языка и все связанные с этим затруднения я оценил значительно позднее, когда стал писать реальные программы на Алголе 68. В 66-м же году сразу началась работа по созданию русской версии нового Алгола, невзирая на то, что он еще не был доделан. В этой работе были задействованы в основном мы с Андреем Петровичем в Новосибирске и Святослав Сергеевич Лавров в Питере. Между нами началась оживленнейшая переписка; эти материалы есть. Главным образом по поводу составления словаря.

Берс: Это очень интересно. Хорошо бы выдержки из этих писем посмотреть, вспомнить, как какие термины переводились.

Рар: Да нет, они, в основном, мелочные — типа, этот термин лучше перевести вот так…

Берс : А словарь того времени более-менее полный сохранился? Это на самом деле интересно. Потому что я-то в 68 году впал в вашу команду и на самом деле достаточно быстро влип в это дело…

Рар: «Словарь терминов Алгола 67. (Согласован 5 февраля 1967 года.)» Я не помню, с кем он был согласован, может быть, было согласовано у нас с Ершовым.

Берс: Если ты переписывался с Свет Сергеичем… Вот тут «row» переведено как «ряд» А вообще-то как-то мало материалов.

Рар: Мало.

Берс: Они что потом появились? Потому что к тому моменту, когда я в 68 году этим занялся, их было уже довольно много … Я-то пришел, когда только появился документ амстердамского Математического центра под номером 93…

Рар: МК-93.

Берс: Да. И вот там уже были пресловутые и «КВАЗИЛЕДУСЫ» и «КВАЗИЛЕМОДУСЫ» — метапонятия, заканчивающиеся в английском на «ETY», а в русском варианте начинающиеся с «КВАЗИ» и дающие в числе своих порождений «ПУСТО»
Рар: А вот здесь какие-то «clarifications», «уточнения». А чьи они и для кого, я не помню. Может они принадлежали Лаврову, потому что у меня здесь замечания по поводу «уточнений» Лаврова. Все они тут какие-то разрозненные…

А в 67 году началась у меня переписка с ван Вейнгаарденом. Вот здесь мое письмо к нему от апреля 1967 года: «дальнейшее изучение последнего присланного Вами документа по Алголу 67 заставляет меня послать Вам это второе моё письмо. Оба письма не касаются каких-либо принципиальных вопросов и не содержат каких-либо существенных предложений по поводу улучшения языка. Я хочу лишь привлечь Ваше внимание к некоторым сомнительным пунктам как большой, так и малой важности»… после чего следуют «major remarks» и «minor remarks». И началась такого сорта переписка, так сказать «взаимопроникновение».

Берс: Какова же была позиция ван Вейнгаардена? И как происходили контакты. Ты ездил куда-нибудь?

Рар: Это было потом. Ездил я в 1970 году в Мюнхен. А до того я бывал только в Ленинграде, где в основном общался с Цейтиным, который к тому времени тоже включился в эту работу. И вместе с Цейтиным мы писали письма ван Вейнгаардену.

Берс: И повлияло ли что из этого на язык?

Рар: Думаю, что если и повлияло, то по мелочам. Скорее, мы выполняли приятную роль критика со стороны. Ну не в этом суть. И попутно мы переводили. В это время ты и включился в это дело.

Берс: Ну, я пришел осенью 68-го. А в конце 68-начале 69-го Андрей Петрович нарисовал громадную такую синтаксическую карту. Это было первое мое впечатление. Да, а участие Андрея Петровича во всем этом до 68 года? Ведь на международные конференции ездил он. 

Рар: Его участие было непосредственным в том смысле, что все что я предлагал по словарю, шло через Андрея Петровича. Да, в начале 68-го состоялась уже зимняя лыжная школа по Алголу 68 в Бакуриани. Туда ездили я, Ершов, Змиевская и покойный Саша Куртуков. Там были Лавров, Шура-Бура, Любимский, Тыугу. От хозяев были Деканосидзе, Мурман Цуладзе. Было очень хорошо и приятно. Мы читали лекции по Алголу 68 по главам. Ну и кроме того, говорили и о других работах. Я, кстати, об Эпсилон там рассказывал. Энн Тыугу докладывал о своих проектах. Да, еще Брудно там был с едкими критическими замечаниями.

Берс: А, кстати, критика Алгола была достаточно жесткой? И за счет чего? Что в языке ругали?

Рар: Я думаю, ругали за сложность.

Берс: Ну это понятно. Потом появился МК-93, а следующий существенный документ был, как я помню, МК-95. Значит, шел перевод и, в основном, составление словаря. Ну, а что на меня произвело впечатление? Во-первых, синтаксическая карта, которую рисовал Андрей Петрович. Она была в основном древовидная, что мне не очень нравилось из-за большого числа повторных листьев. Потом я помню, что влез во все эти «portmanteaux», метапонятия, соединяющие в себе разные смыслы — «VIRACT» как соединение «virtual» и «actual»… Если помнишь, я по их поводу заводился, от разных НЕПРОБЕСПАР да еще НИРХНИЙ, и потихоньку начал предлагать какие-то способы избавиться от них. Но к некоторому моменту мы это утрясли, и перевод ушел в «Кибернетику» уже безо всяких там КВАЗИЛЕДУСОВ и КВАЗИЛЕМОДУСОВ… Зимой, в конце 68, мы все ездили на ВКП-1 в Киев и там договорились, что будет издаваться билистинг в журнале у Глушкова.

А в это время у меня появился Валера Грушецкий, и это уже, если не ошибаюсь 69-й год. Мы с Грушецким придумали, как можно уменьшить количество линий на синтаксической карте — за счет того, чтобы устроить некоторый коллектор. Это опубликовано даже. Чтобы по коллектору сохранялось одно и то же направление. Эту карту мы с Грушецким и выкладывали на полу у меня дома из спичек и фишек. Конкурентов в этом направлении у нас фактически не было. Я даже помню, как я уходил, вернулся, лежит записка «Я все сложил, свет не гашу, жалко проделанных трудов». А мы в этот момент выкладывали пятую главу, про форматы. Пользовались мы ссылками, ссылки оказались неверными, в результате у нас получился цикл, который было очень трудно расположить. Потом пришли исправления, вся эта конструкция цикла рассыпалась, в последующем пришлось заново приводить в порядок.

В общем, этот перевод занял у нас достаточно много времени, мы практически этим все время и занимались. Хотя, впрочем, и не только этим. Ведь у тебя был Эпсилон, у меня были потоковые схемы, которые потом, в 72 году, Андрей Петрович выставил на симпозиум по теории программирования. Но в 69 году мы уже с весны начали застревать подолгу в Киеве.

Рар: Сперва ты поехал в Киев один, я не смог.

Берс: Потом мы ездили с Грушецким и с тобой. Потом я еще ездил. И на самом деле мы достаточно хорошо продвигались, хотя были фундаментальные трудности из-за того, что нам для издания на двух языках требовалось разнообразие шрифтов. Ван Вейнгаардену было хорошо, у него была IBM овская пишущая машинка со сменными головками, и он, по-видимому, не ленился менять эти головки. Ведь все метапонятия печатались крупным шрифтом, протопонятия — мелким. Затем курсив, полужирный, — а в целом было по 6 начертаний шрифтов для каждого из текстов. Но когда мы появились в типографии издательства «Наукова думка», то выяснилось, что для латиницы того варианта, который мы хотели использовать, нет.

Короче говоря, нам пришлось выбрать комплект двух «разных» гарнитур — «обыкновенная новая» и «литературная», которые, вообще-то говоря, на нормальный взгляд ничем не отличаются. И плюс какая-то «рубленая» у нас все-таки была. Всё это набиралось монотипом, мы собственноручно ковырялись в тексте прямо на талере шилом, и я ругался сильно по поводу того, что в некотором месте должна быть прямая запятая, а стоит курсивная. В ответ мне естественно говорили, что этого никто не увидит, а я возражал: я же увидел. И на самом деле это различие было существенным. Тексты примеров на Алголе 68 набирались курсивом, и все запятые, которые были там, тоже должны были набираться курсивом; далее шла прямая запятая, и начинался следующий пример. Конечно, все это было очень здорово, но зато приводило к большим техническим затруднениям и огромному количеству опечаток.

Вообще, должен заметить, что среди прочих впечатлений об Алголе 68 на меня произвел приятное впечатление опыт обмена сообщениями об опечатках. Он был очень хорошо спроектирован, достаточно прост и в то же время достаточно точен, позволял описывать любые текстуальные изменения. За всем этими изменениями следили в Москве, Новосибирске, Ленинграде, Брюсселе, Амстердаме, Эдмонтоне. Алгол 68 был действительно международным проектом, и действовала международная Рабочая Группа. Один раз эта группа, как ты помнишь, заседала здесь, и мы были наблюдателями.

Официальное сообщение о языке было опубликовано в «Numerische Mathematik» № 14 — последнем номере за 1969 год, и мы уложились в сроки и опубликовали наш перевод в «Кибернетике» в № 6 за 1969 (вышел в январе 70) и в № 1 за 1970, правда, первый номер за 70-й год вышел в июле. К тому времени мы с Грушецким сделали всё-таки эти самые синтаксические карты. Это печатный лист формата А0, у которого с одной стороны была русская синтаксическая карта с другой — английская. В оригинале это представляло собой четыре ватманских листа. Я помню, как перед ВКП-2 привезли отпечатанные на меловой бумаги кусочки карт. То есть синтаксические правила были напечатаны отдельно, мы их клеили, страшно торопились и были вознаграждены. Потому что эти четыре листа синтаксической карты, наклеенные и расчерченные, мы принесли в гостиницу, в номер к ван Вейнгаардену. И ему ничего не оставалось, как положить их на ковер, на пол, после чего чтобы читать, ван Вейнгаардену пришлось опуститься на колени, а Валера Грушецкий потом рвал на себе волосы, потому что он забыл фотоаппарат. Я думаю, что фигура ван Вейнгаардена, улыбающегося, стоящего на коленях перед картами и их рассматривающего — вот это и была вполне достаточная награда за проделанную работу

Рар: Минуточку. Это когда было?

Берс: Это было на ВКП-2, 1970 год. Ван Вейнгаарден делал доклад на ВКП-2, показывал, как при помощи двухэтажной грамматики можно просто проводить вычисления. Показывал универсальность грамматики.

Рар: А разве он с этим докладом не в Ургенче выступал на конференции в честь Аль-Хорезми?

Берс: Нет, он выступал на ВКП-2.

Рар: Это был его единственный визит…

Берс : Нет, не единственный, по той простой причине, что был он и на Рабочей Группе которая проходила в Новосибирске. Это был второй его визит. И, по-моему, была еще какая-то конференция.

Рар: Я помню, когда он первый раз приезжал, я его встречал в Толмачево, он привез тогда книгу «Неформальное введение», которую мы тоже издавали. Её переводил С. Я. Лифшиц.

Берс: Правильно.

Рар: Да, но если вернуться к нашим киевским поездкам…

Берс: Если вернуться, то в июне 70-го и вышел, как я сказал, первый номер за 70 год, в котором, как известно, пять страниц было о чем-то, а все остальное — Алгол 68. Там же был и громадный вкладной лист с той самой синтаксической картой.

Еще я помню, что делал доклад про Алгол 68 в доме Просвещения, где был даже Н. Амосов, и он задавал такие содержательные вопросы. Там даже не один доклад был, ведь мы занимались пропагандой Алгола довольно основательно. Уже после выхода «Кибернетики» с сообщением, осенью 70-го, я ездил по приглашению Рафика Мкртчана в Ереван и читал курс Алгола 68 в их университете. Под эгидой Мкртчана и Риммы Подловченко, которая там кафедрой заведовала. Потом, я еще здесь в НГУ тоже читал спецкурс.

Хорошо бы еще вспомнить ситуацию с Minority Report членов алголовской Рабочей Группы.

Рар: У меня об этом «Особом Мнении» что-то есть.

Берс: А у тебя, случайно, нет текста песни о Minority Report ?

Рар: Случайно нет.

Берс: Вот, английский текст один человек по Интернету нашел, но он требует у нас русский текст, а я помню только фрагмент из припева

Подайте нам язык другой.
чтоб не было в нем обмана,
чтобы на нем могла писать
любая обезьяна…
Нет, нет, нет — это не наш язык.

Это было где-то зимой, и песню туда повез Маккарти, который до того у нас тут проживал.

Рар: Вот именно, это было в декабре 68-го во время празднования десятилетнего юбилея отдела программирования в ТБК. Там был и Маккарти, и там Ершов пел песню вроде бы на двух языках. А английский текст у меня есть.

Берс: Это надо сохранить. А русский? Может, у тебя и русский найдется, если хорошо покопаться… Интересно было бы найти… Мелодия эта или из Дилана, или из Джоан Баез … Андрей Петрович увлекался тогда этой самой… — кантри.

Рар: А это наше с Цейтиным совместное письмо ван Вейнгаардену в июле 69 года, вот тоже своеобразный перл: «Чтобы равенство в нашем равенстве сохранить…»

Берс: Ну да, а Minority Report … это 10 декабря 68-го, ладно, это я отдельно посмотрю просто-напросто… У нас к тому времени было готово предложение о национализации Алгола 68, ты его увез в Питер и там рассказывал, там оно одобрялось. Потом приезжал в Новосибирск М. Ламберт, старичок такой маленький, кругленький, симпатичненький… и мы с ним синтаксис поправок обсуждали. И всё это, естественно, повезли в Мюнхен.

Если уж говорить о Киеве, в частности о весеннем заезде 70-го года, то в связи с этими всеми обменами опечатками мы получили в Киеве исправления на исправления, то есть на опечатки. Я вспомнил анекдот про киевскую газетную опечатку в «Печерском листке» про коронацию, и мы его переводили на английский язык, чтобы порадовать ван Вейнгаардена. И это на самом деле удалось: в нашем английском варианте газета сначала сообщала, что на царскую главу была (вместо crown ) возложена crow , а затем (в порядке исправления опечатки) — clown . В языке уже тогда было много семантики, перенесенной в синтаксис, хотя были и контекстные условия.

И мне кажется, что здесь стоит упомянуть выдающийся прорыв, который сделал Андрей Петрович, придумавший одновременную реализацию трех языков. Ведь, честно, А. П. сделал прекрасный шаг, он вытащил нас из языков. Каждый из нас воспитывался в каком-то алгоритмическом языке как программист, мы были в основном алголики, Курочкин был фортранец, и вдруг оказалось, что есть три больших языка семантически достаточно похожих и достаточно разнообразных тем не менее. И А. П. решил, что мы их можем реализовать все вместе. И в результате, мы были вытащены из языка, и с этой точки зрения хорошо сравнить нас и Л. Терехова, который реализовал Алгол 68, но в его стиле и застрял надолго…

И вот эта ситуация выхода в надъязыковое пространство представляется мне одним из выдающихся достижений А. П. Ершова. По крайней мере, в моей проектно-программной жизни выход этот сыграл очень большую роль. И с этой точки зрения я помню позицию, которую занимал Терехов. Например, безусловная статическая определимость языков и многое другое… Он за пределы идеологии Алгола 68 ну никак не мог вылезти, а мы спокойно вылезали. Вот хороший пример реализация матрицы двумерным массивом. Выяснилось, что в Фортране не было двумерных массивов, в Алголе были, в Алголе 68 двойной вырезкой можно было выбрать любой компактный минор, а в PL , если ты делал ограничения по одному измерению, то должен был ставить звездочку по другому измерению. То есть ты мог взять вертикальную полосу либо горизонтальную, а если хочешь взять минор, то надо взять из матрицы прямоугольный массив, назвать его новым объектом и потом взять опять прямоугольный массив. Но с другой стороны, разреженный минор, произвольный набор строк и столбцов (по Гантмахеру — знаешь ведь, что наряду с языками программирования есть такая хорошая книга, толстая — «Теория матриц») и ни в одном языке программирования до сих пор взять нельзя. Причем есть ведь фундаментальный метод — метод прогонки, но ни в одном языке тип не имеет диагонали в качестве подобъекта как сущности, то есть нельзя двигаться непосредственно и по диагонали, и по двум ближайшим диагоналям сразу, как этого требует прогонка.

И поэтому пришло понимание того, что такое подобъект, подтип. Потом Хоар объяснил всем, что есть структуры и в них выбираемые подобъекты — поля. А потом пошел Венский метод с селекторами на синтаксических и семантических деревьях… и предикаты. Хотя в «Пересмотренном сообщении» тоже появились предикаты в синтаксисе, и в результате всё резко упростилось и все контекстные условия выкинули. А я помню, как до предикатов мне пришлось написать две страницы синтаксических правил, чтобы порождать конструкцию «список понятий длины » , где и задавалось как число в единичной системе (iii iii iii i…). Понятно, что конструкция эта порождалось из конструкций «список понятий длины п-1». Оказалось что и при таком представлении чисел переносы между разрядами можно было спокойно таскать просто подбором метапонятий.

В 79 году вышел мой перевод «Пересмотренного сообщения», и там удалось добиться того, чтобы можно было все синтаксические правила читать как предложения русского языка, причем достаточно естественные, благодаря находке и подсказке Цейтина, который предложил разделять слово «ПОЛЯ» как родительный падеж слова «ПОЛЕ» и слово «!ПОЛЯ» в качестве множественного числа. И, кроме того, мы выкинули слово «КВАЗИ» (в оригинале ETY ), заменив его знаком вопроса впереди метапонятия, например ?ДЛИННОЕ вместо LONGSETY . В результате все «portmanteaux» можно было элиминировать и как я помню, какой-то один я оставил, чтобы эпиграф сохранить. С эпиграфами я к тому времени хорошо наловчился работать, и я спокойно пользовался такой возможностью: слева стоит эпиграф ван Вейнгаардена — «The flowers that bloom in the spring , tra la , have nothing to do with the case», а справа стоит «Каравай, каравай! кого хочешь выбирай!» к выбирающему предложению, но рубленым, чтобы ни с чем не спутать.

Примечание при корректуре: Оказывается, что все «хливкие» метапонятия я таки в переводе «Revised Report» выкинул, а вместо эпиграфа из Л. Кэррола «Well , ‘ slithy ’ means ‘ lithe and slimy ’. … You see it ’ s like a portmanteau — there two meanings packed up into one word . » был поставлен эпиграф из Платоновского «Кратила», который явно подчеркивал намерения переводчика: «Сократ: Однако, если … имена должны быть выражением чего-либо, знаешь ли ты иной, лучший способ создать эти выражения, нежели сделать их возможно более тождественными тому, что они должны выразить?». И это было одобрено и утверждено ВНТК!

Рар: За границей ради Алгола 68 я был еще в Дрездене, в 73 году. А Revised Report когда появился?

Берс: Примерно в это самое время.

Рар: Это могло быть именно там. На банкете ван Вейнгаарден, произнося тост, говорит, что купил сейчас в магазине книгу Гоголя в переводе на английский язык. Берет книгу и читает первую фразу: «Господа, я пригласил вас для того, чтобы сообщить вам пренеприятное известие. К нам едет Reviser». Да, это тогда было.

Берс: У ван Вейнгаардена естественно был замечательный стиль: сильный математик с чувством юмора. Умел подпустить крупицу соли.

Рар: Ну, это, наверное, характерно для всех.

Берс: Ну как сказать. Нет.

Рар: Костер, например.

Берс: Костер вообще под сильным влиянием Аада сформировался. Он, когда первый раз приехал, то вообще был еще мальчик, честно говоря… В общем, ван Вейнгаарден был очаровательным…

И сейчас можно проследить, что хотя сам язык не прижился, но от него осталось очень много идей. То, что типы можно описывать как угодно, какими угодно способами, потихоньку переросло в понятие класса. Это было не то подхвачено, не то, скорее всего, параллельно по-другому сделано в СИМУЛЕ, и потом потихоньку перекочевывало аж до С++.

Вообще само понятие вида аккуратно алгебраизировалось, причем множество значений перешло во множество операций, которые над ними можно выполнять. Далее имело место усиление выраженческого характера языка, и тут Алгол 68 был ведущий, я бы так сказал по своему опыту. Потому что возможность написать сложное выражение и по дороге что-то там же оставить, присваивая значение этого выражения, и теперь хорошо используется. Это тот самый вариант, когда один раз мы значение выражения использовали, а оно нам еще будет нужно, вот мы его и спрятали. Раньше для этого надо было выходить из хода рассуждений, причем не вычислений, а рассуждений, которые проводились.

С точки зрения сопоставления текста программы с ходом ее исполнения языки программирования ставили огромный барьер — буфер между тем, что написано и тем, что делается, И повышение уровня языка программирования приводит к тому, что пишется одно, имеется в виду другое, а делается третье. Я на лекциях говорю, что поскольку программисты чаще всего не принцессы, то семантические горошины остаются незамеченными через «пятнадцать перин» трансляторов и операционных систем. Все это — тоже стиль Алгола 68. 

Этот выраженческий характер был подхвачен в Smalltalk , в котором проявилось понятие «объект». После появления «объектов» отслеживание системой изменений их состояния в динамике стало тем, что называется «программированием, управляемым событиями» — я вижу здесь подхват значения (как в выражениях), но при его изменении.

Конечно, очень интересно было сравнивать Алгол 68 с другими столь же мощными языками. У меня на полке стоит дипломная работа двух матлингвистов, сводный словарь перевода понятий для трех языков и попытка унификации их терминов. Вообще, с одной стороны было межъязыковое соперничество Алголиков и PL -щиков, но с другой стороны все это, как правило, касалось не фазы исполнения, а только языковых форм записи. Во всяком случае, с точки зрения тех людей, которые могли сравнить, проанализировать два или три языка вместе, — а это, конечно, разработчики Беты.

Но это, кажется, другая история…

Рар: Том третий декомпозиция. «Руководитель Ершов, координатор первой фазы Берс, координатор второй фазы Поттосин, разработчик языковых форм Шварцман. 1972 год.» Это, кажется, эскизный проект.

Берс: С этой точки зрения мне представляется, что Алгол 68 сыграл свою большую роль. Он был академическим языком, и так и не оказался производственным. Ленинградцы сработали очень сильно, сделали хороший транслятор, конечно, им они пользовались, но когда они над этим стали надстраивать технологию, у них это плоховато стыковалось со всем остальным.

И кстати, это выделение стандартного введения, которое составляет четверть описания языка. Если теперь взять какой-нибудь язык, BASIC For Application , который обслуживает Office , там языка-то мало, а всё остальное — это большая библиотека на каком-то языке, заголовки, которые называются функциями, конечно, назло всем математикам. Никакой однозначности отображения там в жизни не было. Вот в упорядоченности и ректификации свойств и понятий Алгол 68 сыграл большую роль.

И заодно, если мы уж разговариваем о мета-языковых вещах, то довольно интересным был подход венский, метод семантических деревьев, который описывал PL . Там достаточно аккуратно описывались связи значения с обозначениями. Это отслеживала Людмила Леонидовна Змиевская, она же отслеживала PL -стандарт. Алгол 68, кстати, тоже дошел до стандарта, до ГОСТа.

Рар: Но на этом и сдох.

Берс: Ну да. Хотя стоит отметить хорошую координацию работ по Алголу.

Рар: Да, была создана Временная научно-техническая комиссия, целая госкомитетовская эпопея. Она много сделала по стандартизации представлений, особенно для русской части.

Берс : Там работала бригада Маслова они довольно сильно прошлись по исходному тексту и значительно повлияли на само стандартное вступление в Revised Report . Потому что соответствующие процедуры Алгола 68 к тому времени проверились на существующих тогда уже трансляторах. Эта же самая комиссия помогала переводу Revised Report с одной стороны, а с другой стороны занималась прессингом, что я помню как переводчик. Однако некоторые наши новации пропали, например, «фонд» вместо «файл».

Рар: Мы потерпели поражение в этой борьбе. Как-то пришлось согласиться с победителями.

Берс: Тем не менее как было в русском языке всего два слова со слогом «айл»: кайло и хайло.

Рар: Но дело-то в том, что я в русском просто ненавидел слово «файл», не в английском, нет. Сейчас я к нему отношусь нормально. Заменяли его на «фонд», но это не фонд все-таки. Сейчас у нас на персональном компьютере есть понятие «файл», но это единица, некоторый единичный текст, и заменить его на «фонд» — это, конечно, совсем не то. 

Берс: Да, но в конечном итоге не прошло и 25 лет, как все это привело нас к тому, что есть национальные версии систем программирования, операционных систем, — таки есть! Например, вот компакт-диск с 
MS Windows Russian Edition.

Рар: Ну да. Понятно. Теперь уже это понятно, значит, не зря…

Берс: Люди всегда будут думать-то на своем родном языке, но это пока не дошло до того что появилась татарская национальная версия какого-то языка программирования. Кстати, у языков это как-то не прижилось, а вот что касается рабочих обстановок, операционных обстановок, то с ростом роли персональных компьютеров тут как-то ничего с одноязычьем не вышло.

Рар: У глобалистов не вышло.

Берс: Да у глобалистов. Языки программирования все продолжают быть англоязычными, просто, по-видимому, немцы и французы почему-то сдались. Хотя была интереснейшая вещь — французский вариант Алгола 68. Ведь там еще была проблема в том, что при написании синтаксиса нужно было соблюдать определенный порядок слов.

Рар: У нас тоже ведь возникала такая проблема… Ну, что еще вспомнить…

Берс: Давай теперь поговорим о самом Алголе 68. На самом деле, все наши увлечения переводом не очень сильно и не очень интенсивно вели к разработке транслятора. Ведь транслятор с Алгола 68 сделали Цейтин и Терехов, а потом делала группа в Москве (Маслов). А мы только как-то отслеживали.

Что на меня в Алголе 68 произвело наибольшее впечатление? Во-первых, это был первый язык, в котором был очень богатый список средств описания типов, и можно очень четко и формально описать структуры с вариантами и скомбинировать с массивами и т.д., и т.п., и все что по этому поводу проделывалось. Во-вторых, там был прекрасный механизм приведений, который позволял достаточно глубоко пользоваться описанными типами для того, чтоб перебрасывать по ним значения. И конечно, сама двухэтажная грамматика. И тут уже у меня возникло желание воспользоваться этим для того, чтобы делать хороший русский перевод.

Вообще в Алголе 68 была великолепно выдержана структура языка: словесные эквиваленты символов, закрывающие скобки для условных конструкций (например: пока глушков в цк в киеве будет процветать кц все ), выбирающие предложения, параллельные фразы, хорошо проведенная борьба с побочными эффектами, хотя в языке они не запрещались.

Как любил говаривать ван Вейнгаарден: «не пишите такие программы» и «ёсли у вас есть язык, то на нем надо уметь выражаться».

Да, еще одна замечательная вещь, которая там была — это выдача значения почти любой конструкцией, что позволяло широко пользоваться суперпозицией при построении выражений. Важно осознать тот факт, что значение, которое выражение выдает — однократно неповторимо и уникально и что оно может использоваться только двумя разными способами. Либо ты его подхватишь суперпозицией, либо должен спрятать как состояние объекта. В первом случае этому значению не надо давать обозначение, тогда его использование как бы от тебя скрыто. Потому что само это значение увидеть нельзя, и оно ничем не названо. С другой стороны, если ты его ничем не подхватишь, то оно исчезнет.

Сейчас в объектных языках всё очень хорошо: вы должны с помощью этого значения привести объект в определенное состояние. Приведя, вы можете из этого состояния вычитывать это значение столько раз, сколько вам надо, и получите, что оно обозначало. То есть вот эта композитная программа очень красиво позволяла писать синтаксические выражения, очень связного характера. И поскольку языки программирования всегда тащили за собой английский жаргон, причем не язык, а именно жаргон… Тут еще одна вещь была, на мой взгляд, существенной — это работа над созданием русских национальных вариантов Алгола 68. Ершов и я, мы стремились к тому, чтобы все можно написать и без латинских букв, чтобы программы можно было бы практически читать вслух, — вещь недоступная для предыдущих языков. А синтаксис вообще удалось перевести как математический стих — все правила сохранили, и мнемонический смысл, и точную форму.

И, в общем, язык получился довольно стройный. Но сложности ему добавляло, на мой взгляд, стандартное вступление. Это был еще более свернуто написанный программный текст с дополнительными надстройками макросного характера.

Следующая статья сборника

Из сборника «Становление Новосибирской школы программирования. Мозаика воспоминаний». Новосибирск, 2001 г.
Перепечатываются с разрешения редакции.