Вирт, Никлаус

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Никлаус Вирт
нем. Niklaus Wirth
Никлаус Вирт во время визита в Россию (Уральский университет, 2005 год)
Никлаус Вирт во время визита в Россию (Уральский университет, 2005 год)
Дата рождения 15 февраля 1934(1934-02-15)
Место рождения
Дата смерти 1 января 2024(2024-01-01) (89 лет)
Место смерти
Страна
Научная сфера информационные технологии
Место работы Швейцарская высшая техническая школа Цюриха,
Стэнфордский университет,
Цюрихский университет,
Xerox PARC
Альма-матер Швейцарская высшая техническая школа Цюриха,
Университет Лаваля,
Калифорнийский университет в Беркли
Учёное звание профессор информатики (ETH)
Научный руководитель Гарри Хаски
Известен как создатель PL360, ALGOL W, Euler, Modula-2, Oberon, Oberon-2, Pascal, Lola
Награды и премии Премия Тьюринга (1984), Медаль «Пионер компьютерной техники» (1987)
Автограф Изображение автографа
Сайт www.inf.ethz.ch/personal/wirth
Логотип Викицитатника Цитаты в Викицитатнике
Логотип Викисклада Медиафайлы на Викискладе

Никлаус Вирт (нем. Niklaus Emil Wirth; 15 февраля 1934[1][2], Винтертур, Цюрих — 1 января 2024[3], Цюрих) — швейцарский учёный, специалист в области информатики, один из известнейших теоретиков в области разработки языков программирования, профессор компьютерных наук Швейцарской высшей технической школы Цюриха (ETHZ), лауреат премии Тьюринга 1984 года. Создатель и ведущий проектировщик языков программирования Паскаль, Модула-2, Оберон.

Биография[править | править код]

Никлаус Вирт родился 15 февраля 1934 года в Винтертуре, в предместье Цюриха (Швейцария), в семье Вальтера Вирта, школьного учителя, и Хедвиг Вирт, урождённой Келлер.

В детстве Никлаус Вирт увлекался авиамоделизмом и постройкой ракет, увлечение электроникой и системами программного управления началось с разработки устройств дистанционного управления для моделей. В 1954 году поступил на факультет электроники Швейцарского федерального технологического института (ETH) в Цюрихе, где за четыре года получил степень бакалавра по электротехнике. Продолжил обучение в университете Лаваля (Квебек, Канада), в 1960 году получил степень магистра. Затем был приглашён в Калифорнийский университет в Беркли (США), где в 1963 году, под руководством профессора Гарри Хаски, защитил диссертацию, темой которой стал язык программирования Эйлер (англ. Euler) — расширение Алгола средствами языка Лисп.

Диссертация Вирта была замечена сообществом разработчиков языков программирования, и в том же 1963 году он был приглашён в Комитет по стандартизации Алгола IFIP (Международной федерации информатики[en]), который разрабатывал новый стандарт языка Алгол, впоследствии ставший Алголом-68. Вместе с Чарльзом Хоаром Вирт отстаивал в комитете линию на разработку умеренно модифицированной версии Алгола, свободной от недостатков исходного языка и дополненной минимумом действительно необходимых средств. Вирт и Хоар представили комитету язык Алгол-W[en] (W — от Wirth), представлявший собой именно такую переработку Алгола, но поддержки не встретили. По завершении работы комитета в 1968 году Вирт вошёл в число тех, кто критиковал Алгол-68, говоря о его недостаточной надёжности и чрезвычайной избыточности. Параллельно, с 1963 по 1967 год Вирт работал ассистентом в Стэнфордском университете (США). Вместе с Джимом Уэльсом разработал и реализовал язык PL/360[en], предназначенный для программирования на платформе IBM/360 — алголоподобный язык, в который был введён ряд системно-зависимых возможностей, связанных с архитектурой IBM/360.

В 1967 году вернулся в звании доцента в Цюрихский университет, в 1968 году получил в ETH звание профессора компьютерных наук. В течение 31 года работал в ETH. Много занимался организационной деятельностью, совершенствуя систему обучения своего университета.

В 1970 году создал язык программирования Паскаль. В 1970-х годах разработал, вместе с Хоаром и Дейкстрой технологию структурного программирования. Вышедшая в 1971 году статья Вирта «Разработка программы методом пошагового уточнения» описала и обосновала ставшую впоследствии классической методологию разработки программного обеспечения «сверху вниз». Для переноса Паскаль-системы на различные вычислительные платформы в 1973 году с участием Вирта был разработан прототип виртуальной машины, исполняющей на любой платформе промежуточный «пи-код», в который предполагалось компилировать все программы.

В 1975 году разработал язык Модула, в котором реализовал идеи разработки модульных программ с хорошо определёнными межмодульными интерфейсами и параллельного программирования. Кроме того, в Модуле был изменён синтаксис языка — Вирт избавился от унаследованной ещё от Алгола-60 необходимости применять составные операторы в конструкциях ветвления и циклах. Модула не была широко известна и имела всего одну экспериментальную реализацию, но её доработанная версия — Модула-2, разработка которой началась в 1977 и закончилась в 1980 году, предназначенная для реализации системного ПО разрабатываемой в ETH системы Лилит (англ. Lilith) — 16-разрядного персонального компьютера, стала известна и довольно популярна, хотя и не превзошла по популярности Паскаль, особенно его коммерческие реализации. Система Lilith обогнала тенденции компьютерной индустрии на несколько лет, позднее Вирт с сожалением говорил, что, не реализовав потенциал этой системы, швейцарская компьютерная индустрия упустила свой исторический шанс. Развитием Модулы-2 стал язык Модула-3, разработанный совместно фирмами DEC и Olivetti; в его создании Вирт участия не принимал.

Во второй половине 1970-х участвовал в конкурсе министерства обороны США на разработку нового языка для программирования встроенных систем, в результате которого был создан язык Ада. Повторилась история с Алголом-68 — проект группы, в которой работали Вирт и Хоар, не был одобрен комитетом по языку. В итоге конкурс выиграл проект, основанный на Паскале, но гораздо более сложный и объёмный.

С 1982 по 1984 и с 1988 по 1990 год Вирт возглавлял факультет компьютерных наук ETH, с 1990 года — Институт компьютерных систем при ETH.

В 1988 году в содружестве с Юргом Гуткнехтом (нем. Jürg Gutknecht) Вирт разработал язык программирования Оберон. Целью разработки было создание языка для реализации системного ПО проектируемой новой рабочей станции. Основой для Оберона стала Модула-2, которую существенно упростили, но при этом дополнили новыми возможностями.

В 1992 году Вирт и Мёссенбёк (нем. Hanspeter Mössenböck) выпустили сообщение о новом языке программирования — Оберон-2, — минимально расширенной версии Оберона. В этом же году была образована дочерняя компания ETH — Oberon microsystems, которая занялась разработкой систем Оберон. Вирт стал одним из членов её совета директоров. В 1999 году эта компания выпустила следующую версию Оберона — Компонентный Паскаль, более приспособленную для компонентного программирования. В 1996 году Вирт разработал ещё один оригинальный язык программирования — Lola[en], простой обучающий язык для формального описания и симуляции цифровых электрических схем.

1 апреля 1999 года Вирт вышел на пенсию, достигнув предельного для государственного служащего в Швейцарии возраста 65 лет (ETH — государственный ВУЗ, его работники являются госслужащими и их работа подчиняется соответствующему законодательству).

19 июня 2007 года Вирту была присуждена учёная степень почётного доктора Российской академии наук[4]. Член национальных академий: Swiss Academy of Engineering (Швейцария), U. S. Academy of Engineering (США), Berlin-Brandenburg Academy (Германия). «Почётный доктор Университета ИТМО» (2005).

Умер 1 января 2024 года в возрасте 89 лет[5][6].

Премии и награды[править | править код]

Достижения[править | править код]

Разработал или участвовал в разработке языков программирования: Euler, Algol-W[en], PL/360, Pascal, Modula-2, Oberon, Оберон-2, Component Pascal. Наиболее известная его разработка — Паскаль, оказавший огромное влияние на несколько поколений программистов и ставший базой для создания большого числа языков программирования. Ещё одна фундаментальная работа, участником которой стал Вирт — разработка и внедрение (наряду с Дейкстрой и Хоаром) технологии структурного программирования.

Идеи Вирта зачастую опережали развитие компьютерной индустрии на годы, иногда — на десятилетия. Разработанная в начале 1970-х система Pascal-P, предполагающая компиляцию программ на Паскале в универсальный «пи-код» и реализацию на любой платформе интерпретатора пи-кода (одна из известных её реализаций — UCSD-Pascal Университета Сан-Диего), которая позволяла с минимальными затратами переносить Паскаль-системы на новые аппаратные платформы, более чем на два десятилетия опередила идеи интерпретатора промежуточного кода, реализованные в системах, поддерживающих исполнение программ на языке Java и в платформе .NET. Идея совмещения системы программирования со сборщиком мусора, освобождающим программиста от необходимости отслеживать время жизни объектов, динамически размещённых в памяти, была реализована в 1988 году в языке и операционной системе Оберон. Обе эти идеи были использованы разработчиками Java и .NET во второй половине 1990-х годов.

Научные принципы[править | править код]

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

Даже расширение существующих языков и систем всегда сопровождалось упрощением. По подсчётам, опубликованным в статье Сергея Свердлова «Арифметика синтаксиса»[7], «линия Вирта», как он её назвал — линейка языков, включающая Паскаль, Модулу-2, Оберон и Оберон-2 — это единственный пример «генетической линии» языков-потомков Алгола-60, в которой сложность языка, определённая как количество лексем в его описании, стабильно снижалась и в настоящее время оказывается ниже, чем у общего «прародителя» — Алгола-60. Все языки «линии Вирта» проще Алгола-60, и каждый следующий язык в этой линии проще предыдущего. В то же время Ада более чем вдвое сложнее своего предшественника — Паскаля, C++ приблизительно в 1,7 раза сложнее Си, а в линейке «Паскаль — Турбо Паскаль — Object Pascal» сложность постоянно растёт от версии к версии.

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

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

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

Книги[править | править код]

Изданы на русском языке :

  • Систематическое программирование. Введение. М.: Мир, 1977;
  • Паскаль. Руководство для пользователя и описание языка. М.: Финансы и статистика, 1982 (в соавторстве с К. Иенсен)
  • Алгоритмы + структуры данных = программы. М.: Мир, 1985;
  • Программирование на языке Модула-2. Перевод с англ. В. А. Серебрякова, В. М. Ходукина; Под ред. В. М. Курочкина. — М. : Мир, 1987. — 222 с.;
  • Алгоритмы и структуры данных. М.: Мир, 1989. ISBN 5-03-001045-9 (версия книги на языке Модула-2)
  • Алгоритмы и структуры данных. СПб.: Невский диалект. 2001.
  • Алгоритмы и структуры данных. Новая версия для Оберона + CD. М.: ДМК Пресс, 2010. ISBN 978-5-94074-584-6, 0-13-022005-9
  • Построение компиляторов. М.: ДМК Пресс, 2010. ISBN 978-5-94074-585-3, 0-201-40353-6
  • Разработка операционной системы и компилятора. Проект Оберон: Пер. с англ. Борисов Е. В., Чернышов Л. Н. — М.: ДМК Пресс, 2012. — 560 с.: ил.. ISBN 978-5-94074-672-0

Книга Вирта «Алгоритмы + структуры данных = программы» издавалась на русском языке несколько раз в разных вариантах и считается первым из трёх классических учебников по структурному программированию. Последняя версия книги переработана и переведена автором на язык Оберон.

На английском языке[8][9]:

  • Systematic Programming. Prentice Hall, Englewood Cliffs, 1973. 0-13-880369-2
  • PASCAL — User Manual and Report. (with Kathy Jensen) Springer-Verlag, 1974. ISBN 0-387-96048-1, 3-540-96048-1
  • Algorithms + Data Structures = Programs. Prentice-Hall, Inc., Englewood Cliffs (1976). ISBN 0-13-022418-9.
  • Programming in Modula-2. Springer-Verlag, Heidelberg, New York, 1982. ISBN 3-540-11674-5
  • Algorithms & Data Structures. Prentice-Hall, 1986. [PDF (2353 KB)] ISBN 0-13-022005-1
  • Programming in Oberon: Steps beyond Pascal and Modula. (with M. Reiser) Addison-Wesley, 1992. [PDF (334 KB)] ISBN 0-201-56543-9
  • Project Oberon. (with J. Gutknecht) Addison-Wesley, Reading, 1992. [PDF (4398 KB)] ISBN 0-201-54428-8
  • Digital Circuit Design. Springer-Verlag, Heidelberg, 1995. ISBN 3-540-58577-X
  • Theory and Techniques of Compiler Construction. Addison-Wesley, Reading, 1996. ISBN 0-201-40353-6
  • Algorithms and Data Structures (1985) (in Oberon: 2004) [PDF (1241 KB)]
  • The School of Niklaus Wirth. L. Boeszoermenyi, J. Gutknecht, G. Pomberger, Eds., 2000. ISBN 3-932588-85-1, ISBN 1-55860-723-4

Примечания[править | править код]

  1. Niklaus Wirth // Brockhaus Enzyklopädie (нем.) / Hrsg.: Bibliographisches Institut & F. A. Brockhaus, Wissen Media Verlag
  2. Niklaus Wirth // Encyklopedie dějin města Brna (чеш.) — 2004.
  3. Niklaus Wirth ist tot: IT-Welt trauert um Erfinder von Pascal
  4. президиум РАН. Постановление № 141 «О присуждении учёной степени доктора honoris causa иностранному ученому Никласу Вирту». РАН (19 июня 2007). Дата обращения: 9 апреля 2013. Архивировано 15 июля 2014 года.
  5. Proven, Liam RIP: Software design pioneer Niklaus Wirth (англ.). www.theregister.com. Дата обращения: 8 января 2024. Архивировано 7 января 2024 года.
  6. Niklaus Wirth ist tot: IT-Welt trauert um Erfinder von Pascal (нем.). winfuture.de (3 января 2024). Дата обращения: 8 января 2024. Архивировано 4 января 2024 года.
  7. Сергей Свердлов. Арифметика синтаксиса. Вологодский государственный педагогический университет. Дата обращения: 7 февраля 2020. Архивировано из оригинала 14 мая 2009 года.
  8. Архивированная копия. Дата обращения: 22 ноября 2016. Архивировано 10 апреля 2016 года.
  9. Некоторые книги доступны на сайте автора в электронном виде.

Ссылки[править | править код]