Профессор А.Н. Терехов о конференции Niklaus Wirth Birthday Symposium
К счастью, еще жив и активно работает великий швейцарский ученый, профессор Никлаус Вирт. Он начал свою научную карьеру в Стэнфорде, где участвовал в создании одной из первых (а точнее, второй) кафедр Computer Science. Он создал языки программирования Algol-W, Pascal, Oberon, Modula-2, разработал HLL-компьютеры Lilith и Ceres. После нескольких лет работы в Стэнфорде он вернулся в Швейцарию в один из самых знаменитых университетов в мире ETH и образовал кафедру программной инженерии, которой руководил до выхода на пенсию. Наследником Вирта по руководству кафедрой стал другой известный ученый Бертран Мейер – большой друг России.
В честь 80-летия Вирта в Цюрихе была организована конференция Niklaus Wirth Birthday Symposium, куда можно было попасть только по персональному приглашению. Мне посчастливилось получить такое приглашение. Состав докладчиков был весьма представительным. Открыл конференцию Винт Серф (президент AСМ), с докладами выступили представители крупнейших американских и европейских университетов. Особенно мне запомнилась дискуссия между Мартином Одерски (автором языка SCALA) и Бертраном Мейером (автором языка Eifel). Прозвучал очень интересный доклад Михаэля Франца (из университета Калифорнии, США) в чем-то перекликающийся с нашими работами по CODA.
Безусловно, самым интересным для меня был заключительный доклад самого Никлауса Вирта (это не комплемент, а реальная констатация фактов) о его сегодняшних работах. Примерно в 1990-м году Вирт опубликовал книгу с практическим руководством по созданию компиляторов, операционных систем и компьютеров на основании Oberon`а и компьютера Ceres. Эта книга выгодно отличалась от огромного количества чисто теоретических книг тем, что в ней были описаны реальные практические приемы, которые можно было использовать в других работах. Книга стала библиографической редкостью, а других столь же практически полезных книг не появилось. Вначале Вирт решил просто переиздать эту книгу, но потом усомнился в этой идее, так как компьютер Ceres уже перестал существовать, да и возникли некоторые новые идеи по технике трансляции. Поэтому пару лет назад был начат крупный проект по созданию новой виртуальной машины, ее программной реализации и обновлению компилятора с языка Oberon в коды этой виртуальной машины. Чтобы показать полный цикл проектирования, Вирт решил разработать и аппаратную часть виртуальной машины на основе дешевых ПЛИС серии Spartan. Вся эта громадная работа была успешно завершена. Сейчас идет активное внедрение компьютеров, операционной системы и транслятора в образовательный процесс в вузах и даже школах.
После завершения доклада Никлауса я задал профессору несколько вопросов. Во-первых, я поинтересовался, кто и как придумал P-код. Он рассказал, что это произошло еще в Стэнфорде. После завершения разработки транслятора с языка Pascal на CDC встал вопрос о переносе транслятора на другие компьютеры и тогда он придумал простую виртуальную машину, для которой был реализован транслятор с языка Pascal (отсюда и название P-код), а виртуальная машина реализовывалась на всех известных ему компьютерах на основе программных интерпретаторов.
Во-вторых, я спросил Вирта, зачем потребовалась аппаратная реализация, если сейчас даже в школах можно сделать программный интерпретатор его новой виртуальной машины. В ответ профессор Вирт сказал, что сегодня проектированием ЭВМ занимаются не столько инженеры, сколько программисты (с чем я совершенно согласен). Поэтому ему хотелось показать полную линейку проектирования от языка через компилятор и операционную систему до аппаратно реализованного на языке Verilog компьютера.
Доклад профессора Вирта мне не просто понравился, а профессионально заинтересовал, поскольку именно сейчас я работаю над аналогичной системой RuC. Мне тоже всегда казалось, что книги многих авторов по технике трансляции практически бесполезны. Поэтому еще в 1992 году я со своими молдавскими учениками и коллегами написал книгу «Как Паскаль и Оберон попадают на «Самсон»*. В этой монографии не просто рассказано, как устроен лексический анализатор, видонезависимый анализ, видозависимый анализ, оптимизация, генерация объективного кода и т.п., но и приведены фрагменты соответствующих программ, которые, если собрать их вместе, давали реально работающий компилятор. Книга готовилась еще в те далекие времена, когда рукописи сдавались в издательство на листах, отпечатанных на обычной печатной машинке, а не в виде файлов, и сейчас эту книгу трудно рекомендовать молодым специалистам. Поэтому год назад я решил повторить наш старый подвиг и приступил к реализации Си для выдуманной мной виртуальной машины (которая удивительно похожа на систему команд нашего УВК Самсон :-). Приступая к решению этой задачи, я преследовал сразу несколько целей:
1. Дать инструмент для школьников и студентов, в котором ключевые слова и идентификаторы можно писать по-русски;
2. Обеспечить, наконец, нормальную сигнализацию об ошибках пользователя с точной привязкой к месту ошибки и подробным описанием сути ошибки;
3. Выложить исходные тексты компилятора в открытый доступ. Надеюсь, я найду партнеров для написания новой книги по технике трансляции, основанной на этой реализации;
4. Обеспечить возможность использования RuC для программирования (в том числе с использованием графических диаграмм) роботов ТРИК, создаваемых на кафедрах системного программирования и теоретической кибернетики математико-механического факультета СПбГУ.
Таким образом, доклад профессора Вирта для меня лично что называется «попал в жилу». Разумеется, до встречи на симпозиуме я ничего не слышал о работах Вирта последних лет, но такое совпадение меня чрезвычайно порадовало.
* «Как Паскаль и Оберон попадают на «Самсон» (монография), Монография по технике программирования. Кишинев, «Штиинца», 1992.