Код
#статьи

Никлаус Вирт: человек, который создал Pascal и не только его

Никлаус Вирт известен как создатель языка Pascal. Но не все знают, что он создал ещё несколько языков и написал много культовых книг.

Иллюстрация: Colowgee для Skillbox Media

Будущий всемирно известный программист родился в 1934 году в швейцарском городке Винтертуре в семье школьного учителя. С ранних лет Никлаус увлекался авиамоделированием и строительством ракет — и даже пытался изготавливать в подвале школы ракетное топливо.

Мечты о небе остались с Виртом на всю жизнь. Он был привязан к ним так сильно, что его коллега, профессор Дональд Кнут, однажды сказал: «Никлаус всегда мечтал строить аэропланы, а языки программирования и микрокомпьютеры были нужны ему лишь как инструменты для их создания».

Никлаус в молодости
Фото: Wikimedia Commons

Позже молодой авиалюбитель перешёл к конструированию систем для управления авиамоделями. Так он увлёкся электроникой и программированием.

Швейцарский федеральный технологический институт в Цюрихе
Фото: Wikimedia Commons

В 1954 году Вирт стал студентом Швейцарского федерального технологического института в Цюрихе (сокр. ETH — от нем. Eidgenössische Technische Hochschule), а затем продолжил учёбу в Канаде и Калифорнии. Там он защитил диссертацию по языку Algol.

Что было не так с Algol 68

Вскоре Вирт стал работать в комитете IFIP, где занимался стандартизацией Algol. В то время Algol 60 пользовался большой популярностью в Европе — как язык программирования и как средство описания алгоритмов в научных работах. Но у него было много недостатков, и язык срочно нуждался в доработке.

Вирт в 1960-х
Фото: Wikimedia Commons

Никлаус и учёный из Оксфордского университета Чарльз Хоар предложили свой вариант языка — Algol W. Это была умеренная переработка Algol, очищенная от дефектов и дополненная необходимой функциональностью. Хотя многие учёные положительно оценили этот проект, комитет его отклонил.

В 1968 году комитет представил новый язык — Algol 68. Даже опытные программисты сочли его слишком объёмным и сложным, а напарник Никлауса Чарльз Хоар так и вообще назвал неясным и чересчур амбициозным.

Пример. Вычисление даты следующего дня на Algol 68:

# Next day date - English variant #
 MODE DATE = STRUCT(INT day, STRING month, INT year);
 PROC the day following = (DATE x) DATE:
      IF day OF  x < length of month (month OF x, year OF x)
      THEN (day OF x + 1, month OF x, year OF x)
      ELIF month OF x = "December"
      THEN (1, "January", year OF x + 1)
      ELSE (1, successor of month (month OF x), year OF x)
      FI;

Многие члены комитета, в том числе Вирт, выступили с критикой Algol 68 и составили доклад, в котором говорилось: «Как инструмент надёжного создания сложных программ язык следует признать неудачным». Однако комитет IFIP запретил распространять этот доклад.

Algol 68 не достиг популярности Algol 60 и не смог потеснить распространённые Fortran и COBOL. В академических кругах его сочли слишком громоздким и не захотели использовать.

Чарльз Энтони Хоар
Фото: Wikimedia Commons

Как родился Pascal

До 1967 года Никлаус Вирт трудился в Стэнфорде и разрабатывал язык PL/360 для IBM System/360. Затем он вернулся в Цюрихский университет и вскоре стал профессором компьютерных наук. Так началось самое плодотворное время в его жизни.

У себя на родине, в Швейцарии, Вирт хотел создать что-то, похожее на Стэнфорд. Он занялся не только научной, но ещё и организационной деятельностью и успешно внедрил в ETH нравы и традиции Стэнфордского университета.

Вирту не нравился ни Algol, ни другие существовавшие на тот момент языки — он считал их слишком многословными и нелогичными.

Надо понимать, что в 1960–1970-х годах в языки программирования вкладывался философский смысл — их рассматривали как средство общения человека с машиной. Вирт же считал, что языки программирования должны стать чётко структурированными наборами правил для управления компьютером. Поэтому он приступил к разработке языка Pascal, названного так в честь физика Паскаля.

Ещё во время работы в IFIP Никлаус познакомился с учёными Дейкстрой и Хоаром. Используя принципы структурного программирования Дейкстры и математическую базу Хоара, Вирт создал Pascal — причём на основе своих же наработок из Algol W.

Эдсгер Вибе Дейкстра
Фото: Wikimedia Commons

В 1968 году Никлаус с командой подготовили проект языка, затем занялись разработкой его компилятора. Учёные создали Pascal-машину (P-машину) с промежуточным P-кодом, что позволяло переносить Pascal на разные платформы. Компилятор для Pascal был написан на самом Pascal. В дальнейшем Джеймс Гослинг использовал концепцию P-машины при разработке Java и JVM.

В 1971 году Никлаус представил описание Pascal. Он назвал своё детище небольшим языком со структурным программированием и структурированными данными. Одной из целей Pascal было обучение студентов профессиональному программированию, однако язык годился также для решения сложных практических задач.

Пример. Вывод «Hello, world.» на Pascal:

program Hello;
begin
  writeln ('Hello, world.')
end.

Очень быстро, в течение двух-трёх лет, Pascal приобрёл большую популярность среди программистов и преподавателей. В 1990-х он считался одним из самых распространённых алгоритмических языков.

Другие проекты Вирта: Modula-2 и Lilith

А Никлаус Вирт продолжал создавать новые языки структурного программирования. Следующей его разработкой был Modula — язык, сочетавший модульность программ и параллельное программирование. Но Modula так и не стал популярным.

В 1977 году учёный решил создать целую компьютерную систему с персональной рабочей станцией, микрокодом, компилятором, операционной системой и сервисными программами, удобную для пользователей и разработчиков. Проект Никлаус назвал Lilith.

По меркам того времени это была новаторская идея — ведь тогда операторы производили вычисления на огромных мейнфреймах с доступом на терминалах, где на одной машине одновременно решались задачи двух-трёх пользователей, остальные дожидались своей очереди.

Мейнфрейм IBM System/370
Фото: Bettmann / Getty Images

Идея Lilith пришла Вирту, когда он побывал в калифорнийском центре Xerox PARC. Там он увидел персональную рабочую станцию с монитором, мышью и отдельным диском. Здесь пользователи не делили между собой ресурсы одной машины — у каждого имелся личный компьютер. На Никлауса это произвело большое впечатление, и он решил реализовать нечто подобное у себя дома, в Цюрихе.

В 1979 году специалисты-электронщики из ETH создали для проекта Lilith персональный компьютер с четырьмя наборами Am2901, работавший с 16-разрядными словами.

Персональная станция Lilith
Фото: Wikimedia Commons

А Никлаус со своей командой разрабатывал универсальный язык для системного и прикладного программирования, написал для него компилятор, операционную систему для Lilith, утилиты и первые приложения.

Так появился Modula-2. В нём была прикладная и системная часть и псевдомодуль SYSTEM для низкоуровневого программирования.

Пример. Нахождение наибольшего общего делителя на Modula-2:

MODULE NOD;
FROM InOut IMPORT ReadCard, WriteString, WriteLn, WriteCard;
VAR x, y: CARDINAL;
BEGIN
WriteString("Введите x="): ReadCard(x); WriteLn;
WriteString("Введите y="): ReadCard(y); WriteLn;
WHILE x <> у DO
IF x > у THEN x:=x-у
ELSE у:=у-x
END 
END;
WriteString("Наибольший общий делитель="); WriteCard(x,6); WriteLn;
END NOD. 

Для 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.

Никлаус Вирт сегодня
Фото: Ocg.at / Flickr

Но Вирт не прекратил свою научную деятельность. Он написал ряд классических учебников и справочников по информатике. Сегодня Никлаус Вирт — член нескольких национальных академий, в том числе почётный доктор Российской академии наук (с 2007 года).

Проверьте свой английский. Бесплатно ➞
Нескучные задания: small talk, поиск выдуманных слов — и не только. Подробный фидбэк от преподавателя + персональный план по повышению уровня.
Пройти тест
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована