Никлаус Вирт: человек, который создал Pascal и не только его
Никлаус Вирт известен как создатель языка Pascal. Но не все знают, что он создал ещё несколько языков и написал много культовых книг.
Иллюстрация: Colowgee для Skillbox Media
Будущий всемирно известный программист родился в 1934 году в швейцарском городке Винтертуре в семье школьного учителя. С ранних лет Никлаус увлекался авиамоделированием и строительством ракет — и даже пытался изготавливать в подвале школы ракетное топливо.
Мечты о небе остались с Виртом на всю жизнь. Он был привязан к ним так сильно, что его коллега, профессор Дональд Кнут, однажды сказал: «Никлаус всегда мечтал строить аэропланы, а языки программирования и микрокомпьютеры были нужны ему лишь как инструменты для их создания».
Позже молодой авиалюбитель перешёл к конструированию систем для управления авиамоделями. Так он увлёкся электроникой и программированием.
В 1954 году Вирт стал студентом Швейцарского федерального технологического института в Цюрихе (сокр. ETH — от нем. Eidgenössische Technische Hochschule), а затем продолжил учёбу в Канаде и Калифорнии. Там он защитил диссертацию по языку Algol.
Что было не так с Algol 68
Вскоре Вирт стал работать в комитете IFIP, где занимался стандартизацией Algol. В то время Algol 60 пользовался большой популярностью в Европе — как язык программирования и как средство описания алгоритмов в научных работах. Но у него было много недостатков, и язык срочно нуждался в доработке.
Никлаус и учёный из Оксфордского университета Чарльз Хоар предложили свой вариант языка — Algol W. Это была умеренная переработка Algol, очищенная от дефектов и дополненная необходимой функциональностью. Хотя многие учёные положительно оценили этот проект, комитет его отклонил.
В 1968 году комитет представил новый язык — Algol 68. Даже опытные программисты сочли его слишком объёмным и сложным, а напарник Никлауса Чарльз Хоар так и вообще назвал неясным и чересчур амбициозным.
Пример. Вычисление даты следующего дня на Algol 68:
Многие члены комитета, в том числе Вирт, выступили с критикой Algol 68 и составили доклад, в котором говорилось: «Как инструмент надёжного создания сложных программ язык следует признать неудачным». Однако комитет IFIP запретил распространять этот доклад.
Algol 68 не достиг популярности Algol 60 и не смог потеснить распространённые Fortran и COBOL. В академических кругах его сочли слишком громоздким и не захотели использовать.
Как родился Pascal
До 1967 года Никлаус Вирт трудился в Стэнфорде и разрабатывал язык PL/360 для IBM System/360. Затем он вернулся в Цюрихский университет и вскоре стал профессором компьютерных наук. Так началось самое плодотворное время в его жизни.
У себя на родине, в Швейцарии, Вирт хотел создать что-то, похожее на Стэнфорд. Он занялся не только научной, но ещё и организационной деятельностью и успешно внедрил в ETH нравы и традиции Стэнфордского университета.
Вирту не нравился ни Algol, ни другие существовавшие на тот момент языки — он считал их слишком многословными и нелогичными.
Надо понимать, что в 1960–1970-х годах в языки программирования вкладывался философский смысл — их рассматривали как средство общения человека с машиной. Вирт же считал, что языки программирования должны стать чётко структурированными наборами правил для управления компьютером. Поэтому он приступил к разработке языка Pascal, названного так в честь физика Паскаля.
Ещё во время работы в IFIP Никлаус познакомился с учёными Дейкстрой и Хоаром. Используя принципы структурного программирования Дейкстры и математическую базу Хоара, Вирт создал Pascal — причём на основе своих же наработок из Algol W.
В 1968 году Никлаус с командой подготовили проект языка, затем занялись разработкой его компилятора. Учёные создали Pascal-машину (P-машину) с промежуточным P-кодом, что позволяло переносить Pascal на разные платформы. Компилятор для Pascal был написан на самом Pascal. В дальнейшем Джеймс Гослинг использовал концепцию P-машины при разработке Java и JVM.
В 1971 году Никлаус представил описание Pascal. Он назвал своё детище небольшим языком со структурным программированием и структурированными данными. Одной из целей Pascal было обучение студентов профессиональному программированию, однако язык годился также для решения сложных практических задач.
Пример. Вывод «Hello, world.» на Pascal:
Очень быстро, в течение двух-трёх лет, Pascal приобрёл большую популярность среди программистов и преподавателей. В 1990-х он считался одним из самых распространённых алгоритмических языков.
Другие проекты Вирта: Modula-2 и Lilith
А Никлаус Вирт продолжал создавать новые языки структурного программирования. Следующей его разработкой был Modula — язык, сочетавший модульность программ и параллельное программирование. Но Modula так и не стал популярным.
В 1977 году учёный решил создать целую компьютерную систему с персональной рабочей станцией, микрокодом, компилятором, операционной системой и сервисными программами, удобную для пользователей и разработчиков. Проект Никлаус назвал Lilith.
По меркам того времени это была новаторская идея — ведь тогда операторы производили вычисления на огромных мейнфреймах с доступом на терминалах, где на одной машине одновременно решались задачи двух-трёх пользователей, остальные дожидались своей очереди.
Идея Lilith пришла Вирту, когда он побывал в калифорнийском центре Xerox PARC. Там он увидел персональную рабочую станцию с монитором, мышью и отдельным диском. Здесь пользователи не делили между собой ресурсы одной машины — у каждого имелся личный компьютер. На Никлауса это произвело большое впечатление, и он решил реализовать нечто подобное у себя дома, в Цюрихе.
В 1979 году специалисты-электронщики из ETH создали для проекта Lilith персональный компьютер с четырьмя наборами Am2901, работавший с 16-разрядными словами.
А Никлаус со своей командой разрабатывал универсальный язык для системного и прикладного программирования, написал для него компилятор, операционную систему для Lilith, утилиты и первые приложения.
Так появился Modula-2. В нём была прикладная и системная часть и псевдомодуль SYSTEM для низкоуровневого программирования.
Пример. Нахождение наибольшего общего делителя на Modula-2:
Для Lilith была разработана ОC Medos с программной поддержкой дисплея и текстовый редактор с раскрывающимся меню.
В 1980 году студенты ETH собрали первые 20 компьютеров (всего их было 60). В 1982 году компьютеры Lilith подключили к серверу и сети на базе Ethernet. А когда появились лазерные принтеры Canon LBP-10, Lilith стали первыми компьютерами в Европе, полностью использовавшими их возможности: шрифты, графику, отсканированные изображения и электронные схемы.
Позже Вирт говорил, что если бы компьютерная индустрия Швейцарии сумела реализовать весь потенциал Lilith, то она смогла бы занять гораздо более видное место в истории.
В 1984 за Lilith и Modula-2 Никлаус Вирт был награждён премией Алана Тьюринга — аналогом Нобелевской премии в области компьютерных наук.
На языке Modula-2 была написана OS/400 для IBM AS/400, компиляторы для персональных компьютеров PC, Macintosh, рабочих станций IBM RS/6000, мейнфреймов IBM, SGI.
Но, несмотря на свою простоту и эффективность, Modula-2 не стал широко распространённым и не смог потеснить своего предшественника Pascal — возможно, потому, что мало кому известная система Lilith не смогла помочь языку в продвижении.
В 1988 году Никлаус Вирт и Юрг Гуткнехт создали на основе Modula-2 язык Oberon для работы на станции Ceres, а затем выпустили его улучшенную версию Oberon-2.
В 1996 году учёный разработал язык Lola для описания цифровых электрических схем.
И уже в конце своей профессиональной карьеры Вирт, как бы в продолжение своего мальчишеского увлечения, помог механикам из ETH создать первый экземпляр дрона. Он разработал и запрограммировал бортовой компьютер, причём сумел сократить почти в 10 раз количество потребляемой им энергии.
В 1999 году, в возрасте 65 лет, Никлаус Вирт ушёл на пенсию. Более 30 лет он отдал Швейцарскому федеральному технологическому институту, где был сначала профессором, затем деканом факультета компьютерных наук, а после стал во главе Института компьютерных систем ETH.
Но Вирт не прекратил свою научную деятельность. Он написал ряд классических учебников и справочников по информатике. Сегодня Никлаус Вирт — член нескольких национальных академий, в том числе почётный доктор Российской академии наук (с 2007 года).