Материал из Википедии - свободной энциклопедии

(нем. Niklaus Wirth, род. 15 февраля 1934) - швейцарский учёный, специалист в области информатики, один из известнейших теоретиков в области разработки языков программирования, профессор компьютерных наук (ETH), Лауреат премии Тьюринга 1984 года. Ведущий разработчик языков Паскаль, Модула-2, Оберон.

Биография

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

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

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

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

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

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

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

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

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

В 1992 году Вирт и Мёссенбёк выпустили сообщение о новом языке программирования - Оберон-2, - минимально расширенной версии Оберона. В этом же году была образована дочерняя компания ETH - Oberon microsystems, которая занялась разработкой систем Оберон. Вирт стал одним из членов её совета директоров. В 1999 году эта компания выпустила следующую версию Оберона - Component Pascal, более приспособленную для компонентного программирования. В 1996 году Вирт разработал ещё один оригинальный язык программирования - Lola, простой обучающий язык для формального описания и симуляции цифровых электрических схем.

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

19 июня 2007 года Постановлением Президиума Российской академии наук №141 Вирту было присуждена ученая степень доктора honoris causa (по представлению Отделения информационных технологий и вычислительных систем). Инициатором представления был российский ученый в области IT-технологий Игорь Шагаев, профессор Лондонского Университета Метрополитен, которого с Никлаусом Виртом связывает совместная работа в 2005-2008 годах над европейским проектом ONBASS.

Член национальных академий: Swiss Academy of Engineering (Швейцария), U.S. Academy of Engineering (США), Berlin-Brandenburg Academy (Германия).
[править] Премии и награды
IEEE Emanuel Piore Award (1983)
ACM Turing Award (Премия Тьюринга) (1984)
ACM Award for Outstanding Contributions to Computer Science Education (1987, 1989)
IEEE Computer Pioneer (1988)
Prix Max Petitpierre (1989)
IBM Europe Science and Technology Prize (1989)
Marcel Benoit Prize (1990)
Orden Pour le Merite (1996)
Leonardo da Vinci Medal (1999)
ACM Outstanding Research Award in Software Engineering (1999).

Достижения

Вирт разработал или участвовал в разработке языков программирования: Euler, Algol-W, PL/360, Pascal, Modula-2, Oberon, Oberon-2, Component Pascal. Наиболее известная его разработка, безусловно - язык программирования Паскаль, оказавший огромное влияние на несколько поколений программистов и ставший базой для создания большого числа языков программирования. Ещё одна фундаментальная работа, участником которой стал Вирт - разработка технологии структурного программирования, ставшая в программировании, безусловно, самой сильной формализацией как минимум 1970-х - 1980-х годов. Эта технология разработана, обоснована и внедрена в жизнь всего тремя выдающимися людьми - Виртом, Дейкстрой и Хоаром.

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

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

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

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

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

Москва: ДМК Пресс, 2010. - 192с.
Книга известного специалиста в области информатики Никлауса Вирта написана по материалам его лекций по вводному курсу проектирования компиляторов. На примере простого языка Оберон-0 рассмотрены все элементы транслятора, включая оптимизацию и генерацию кода. Приведен полный текст компилятора на языке программирования Оберон. Для программистов, преподавателей и студентов, изучающих системное программирование и методы трансляции.
Содержание
Введение
Язык и синтаксис
Упражнения
Регулярные языки
Упражнение
Анализ контекстно-свободных языков
Метод рекурсивного спуска;
Таблично-управляемый нисходящий синтаксический анализ
Восходящий синтаксический анализ
Упражнения
Атрибутные грамматики и семантики
Правила типов
Правила вычислений
Правила трансляции
Упражнение
Язык программирования Оберон-0
Упражнение
Синтаксический анализатор для Оберона-0
Лексический анализатор
Синтаксический анализатор
Устранение синтаксических ошибок
Упражнения
Учет контекста, заданного объявлениями
Объявления
Записи о типах данных
Представление данных во время выполнения
Упражнения
RISC-архитектура как цель
Ресурсы и регистры
Выражения и присваивания
Прямая генерация кода по принципу стека
Отсроченная генерация кода
Индексированные переменные и поля записей
Упражнения
Условные и циклические операторы и логические выражения
Сравнения и переходы
Условные и циклические операторы
Логические операции
Присваивание логическим переменным
Упражнения
Процедуры и концепция локализации
Организация памяти во время выполнения
Адресация переменных
Параметры
Объявления и вызовы процедур
Стандартные процедуры
Процедуры-функции
Упражнения
Элементарные типы данных
Типы REAL и LONGREAL
Совместимость между числовыми типами данных
Тип данных SET
Упражнения
Открытые массивы, указательный и процедурный типы
Открытые массивы
Динамические структуры данных и указатели
Процедурные типы
Упражнения
Модули и раздельная компиляция
Принцип скрытия информации
Раздельная компиляция
Реализация символьных файлов
Адресация внешних объектов
Проверка конфигурационной совместимости
Упражнения
Оптимизация и структура пре/постпроцессора
Общие соображения
Простые оптимизации
Исключение повторных вычислений
Распределение регистров
Структура пре/постпроцессорного компилятора
Упражнения
Приложение А.
Синтаксис
Оберон-0
Оберон
Символьные файлы
Приложение В.
Набор символов ASCII
Приложение С.
Компилятор Оберон-0
Лексический анализатор
Синтаксический анализатор
Генератор кода
Литература

Скачать файл

  • 2.16 МБ
  • добавлен 19.09.2009

В книге известного английского автора рассматриваются проблемы проектирования и построения компиляторов для языков программирования высокого уровня, в частности Алгола 60, ПЛ/1, Алгола 68, Паскаля и Ады. Основное внимание уделяется целям проектирования надежных компиляторов и средствам их достижения. Практические вопросы разъясн...

  • 1.57 МБ
  • добавлен 17.12.2008

Лекции по построению компилятора на Pascal. 255 с.
Эта серия статей является руководством по теории и практике разработки синтаксических анализаторов и компиляторов языков программирования. Прежде чем вы закончите чтение этой книги, мы раскроем все аспекты конструирования компиляторов, создадим новый язык программирования, и...

  • 1.25 МБ
  • добавлен 16.05.2009

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

  • 5.49 МБ
  • добавлен 10.10.2007

М.: Издательский дом "Вильямс", 2003. - 768 с.: ил.

Каждый, кто интересовался разработкой компиляторов, несомненно, слышал о знаменитой "Книге Дракона" - "Dragon Book", классическом труде Ахо и Ульмана "Принципы разработки компиляторов". Бурное развитие технологий компиляции привело к рождению нового дракона - книги "К...

  • 1.22 МБ
  • добавлен 16.05.2009

Предмета: лексический и синтаксический анализ, организация памяти, генерация кода. Сделана попытка на протяжении всего изложения провести единую "атрибутную" точку зрения на процесс разработки компилятора. В книге не затрагиваются чрезвычайно важные вопросы глобальной оптимизации и разработки компиляторов для машин с параллельно...

  • 59.93 МБ
  • добавлен 07.12.2010

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


Дата Рождения:1934


Программы становятся медленнее более быстро, чем компьютеры становятся быстрее .

©.

Никлаус Вирт

Никлаус Вирт прежде всего известен как создатель языка программирования PASCAL. Кроме этого, на его счету такие великолепные разработки, как MODULA-2, OBERON и многое-многое другое.
Родился Никлаус 15 февраля 1934 года в Винтер-хуре (Швейцария). Родители Никлауса - Уолтер и Хедвиг (Келер) Вирт. Он женился на Нани Такер, у них трое детей: дочери Кэролин и Тина, сын Христиан. Вирт приятный в общении и добродушный человек, который выглядит моложе своих лет. Все свободное от работы время он проводит с семьей, часто совершая пешие походы по холмистым возвышенностям северной Швейцарии.
В сферу информатики Вирт погрузился в 1960 году, когда ей не уделялось должного внимания ни в коммерческой рекламе, ни в академических учебных планах. Никлаус рассказывает: "...Во время моего обучения в Швейцарском государственном технологическом институте единственное упоминание о компьютерах, которое я услышал, прозвучало в факультативном курсе, читавшемся Амброзом Спайзером, ставшим позднее президентом IFIP. Разработанный им компьютер ERMETH был малодоступен обычным студентам, и поэтому мое посвящение в информатику оказалось отложенным до того момента, как я прослушал курс численного анализа в Лавальском университете в Канаде. Тогда мне стало очевидно, что программирование будущих компьютеров должно было быть более эффективным. Поэтому я учился в первую очередь не проектировать аппаратную часть, а правильно и элегантно ее использовать".
Вирт присоединился к группе, участвовавшей в разработке - или, скорее, в доработке - компилятора и языка для компьютера IBM-704. Этот язык был назван NELIAC и являлся диалектом языка ALGOL-58.
С этого момента и начались приключения Никлауса в области языков программирования. Первый эксперимент привел к диссертации и к языку EULER, который оказался академически элегантным, но имел малую практическую ценность - он был почти антитезой более поздним языкам с типами данных и структурным программированием. Но этот язык заложил фундамент систематической разработки компиляторов, позволявших без потери ясности расширять их, чтобы включить новые возможности.
Выдающийся же этап в карьере Вирта начался в Стэнфордском университете, где он работал в качестве адъюнкт-профессора информатики вновь созданного факультета вычислительной техники с 1963 по 1967 год. Язык EULER привлек внимание рабочей группы Международной федерации по обработке информации (IFIP), участвовавшей в составлении планов, относительно будущего ALGOL.
Сейчас можно сказать, что работа Вирта над языком PASCAL началась именно тогда, в 1965 году, когда IFIP пригласила его принять участие в разработке нового языка, который должен был стать преемником ALGOL-60. Разработчики разделились на два направления, и Вирт оказался в том из них, которое пошло по пути расширения ALGOL. В 1966 году в Стэнфордском университете был создан язык под названием ALGOL-W.
С осени 1967 по 1968 год, когда Вирт вернулся в Швейцарию и служил в качестве адъюнкт-профессора в университете Цюриха, освободившись от обязательств перед IFIP, он разработал язык, ставший преемником ALGOL-W. Вирт назвал этот язык PASCAL, в честь французского математика и физика XVII столетия Блеза Паскаля, который в 1642 году сконструировал вычислительную машину, чтобы помочь своему отцу в работе по сбору налогов. "Кроме того, слово "PASCAL" звучит довольно мелодично", - говорит Вирт. Язык PASCAL первоначально разрабатывался как язык для обучения, но этим его функции не ограничились. В 1972 году PASCAL начал использоваться на занятиях по программированию в Швейцарском государственном технологическом институте. Свою работу над языком Никлаус закончил в 1974 году, создав высококачественный компилятор, а подлинное признание PASCAL получил после разработки Кеном Боулесом Р-кода для микрокомпьютеров, который позволил использовать PASCAL на новых машинах различной конфигурации.
После этого он переключил свое внимание на изучение мультипрограммирования, в результате чего появился язык MODULA, предназначенный главным образом для программирования специализированных систем, в том числе и миникомпьютеров. Основой для нового языка послужил "Параллельный PASCAL", в котором был применен принцип модульной организации комплексов программ, позволяющий программисту "прятать" определенные части программ. Первоначальный вариант MODULA-1 "никогда не Рассматривался как полноправный язык программирования", подчеркивает Вирт. Языком модульного программирования стал MODULA-2, ориентированный на персональные компьютеры.
В эти годы работа Вирта была связана с конструированием персонального компьютера "Лилит" и использованием языка MODULA-2.
OBERON - еще один язык программирования, созданный доктором Виртом в 1987 году и названный в честь спутника Урана - OBERON, открытого "Вояджером" в 1977 году.
При создании всех своих языков программирования Вирт придерживался принципа: "Сущности не следует умножать без необходимости", который получил название "бритва Оккама" В языке OBERON этот принцип реализован особенно явно. OBERON стал продолжением линии языков ALGOL-60, PASCAL, MODULA-2. OBERON создан на основе языка MODULA-2, однако, в отличие от PASCAL и MODULA-2, это комбинация языка программирования и операционной системы "для отдельного пользователя персональной рабочей станции". Удивительно простой и даже аскетичный, OBERON представляет собой, пожалуй, минимальный язык высокого уровня.
Работа продолжалась там же в Цюрихе, где Вирт находился уже в качестве профессора информатики с 1968 по 1975 год. Одновременно, начиная с 1968 года, доктор Никлаус Вирт стал профессором информатики в Федеральном Институте технологий Цюриха в Швейцарии, где и работает в этом звании по сей день и продолжает активное исследование в области языков программирования.
Талант Вирта как разработчика языков программирования дополняется писательским даром. В апрельском номере 1971 года журнала "Comrnunications of the ASM" Вирт опубликовал основополагающую статью по "нисходящему" методу проектирования программ ("Разработка программы методом поэтапного усовершенствования"), в которой сформулированы принципы нисходящего построения программы (с последовательным уточнением ее фрагментов). Полученный в результате элегантный и мощный метод проектирования не утратил своей значимости и сегодня. Две другие его статьи "О дисциплине программирования в реальном времени" и "Что мы можем сделать с необязательным разнообразием обозначений", опубликованные в том же журнале, посвящены проблемам поиска адекватного языкового формализма.

Вирт написал неско лько книг по программистской тематике: "Алгоритмы и структуры данных",

"Программирование на OBERON", "PASCAL - руководство пользователя и справочник" и "Проект цифровых операций".

Сейчас доктор Вирт совместно с тремя другими коллегами занимается вопросами автоматизированного проектирования аппаратных средств компьютерных систем.
Все работы доктора Вирта внесли большой вклад в компьютерную науку PASCAL сделал языки программирования более легкими для использования и изучения, а компьютеры более доступными для массового пользователя" Его проекты, от EULER до OBERON, стремились упростить и уничтожить барьеры между аппаратными средствами и программным обеспечением, сделать языки программирования более легкими в использовании.
Конечно, известно много других компьютерных языков программирования, помимо PASCAL, OBERON или MODULA-2, но вклад Вирта в создание и развитие языков программирования очень значителен.
За большой вклад в информатику доктор Никлаус Вирт получил многочисленные награды и почести. Американский Совет Магистров присвоил ему звание член-корреспондента; Компьютерное Общество Института Инженеров по электронике и радиотехнике - звание компьютерного пионера; он получил приз IBM европейской науки и техники; стал членом Швейцарской Академии Инженерии и иностранным партнером Американской Академии Инженерии, а также получил орден "Pur le merte" и премию Тьюринга. Вирт получил почетные докторские степени от многих университетов: университет Лавапь, Квебек (Канада), университет Калифорнии, Беркли, университет Йорк (Англия), университет Лине Иоганна Кеплера (Австрия), университет Новосибирска (Россия), Открытый университет Англии, университет Пре-тории (Южная Африка).

Язык должен быть очевидным и естественным отражением фундаментальных и наиболее важных концепций алгоритмов.

Никлаус Вирт

Никлаус Вирт

Никлаус Вирт прежде всего известен как создатель языка программирования PASCAL. Кроме этого, на его счету такие великолепные разработки, как MODULA-2, OBERON и многое-многое другое.

Родился Никлаус 15 февраля 1934 года в Винтерхуре (Швейцария). Родители Никлауса - Уолтер и Хедвиг (Келер) Вирт. Он женился на Нани Такер, у них трое детей: дочери Кэролин и Тина, сын Христиан. Вирт приятный в общении и добродушный человек, который выглядит моложе своих лет. Все свободное от работы время он проводит с семьей, часто совершая пешие походы по холмистым возвышенностям северной Швейцарии.

В сферу информатики Вирт погрузился в 1960 году, когда ей не уделялось должного внимания ни в коммерческой рекламе, ни в академических учебных планах. Никлаус рассказывает: "…Во время моего обучения в Швейцарском государственном технологическом институте единственное упоминание о компьютерах, которое я услышал, прозвучало в факультативном курсе, читавшемся Амброзом Спайзером, ставшим позднее президентом IFIP. Разработанный им компьютер ERMETH был малодоступен обычным студентам, и поэтому мое посвящение в информатику оказалось отложенным до того момента, как я прослушал курс численного анализа в Лавальском университете в Канаде. Тогда мне стало очевидно, что программирование будущих компьютеров должно было быть более эффективным. Поэтому я учился в первую очередь не проектировать аппаратную часть, а правильно и элегантно ее использовать".

Вирт присоединился к группе, участвовавшей в разработке - или, скорее, в доработке - компилятора и языка для компьютера IBM-704. Этот язык был назван NELIAC и являлся диалектом языка ALGOL-58.

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

Выдающийся же этап в карьере Вирта начался в Стэнфордском университете, где он работал в качестве адъюнкт-профессора информатики вновь созданного факультета вычислительной техники с 1963 по 1967 год. Язык EULER привлек внимание рабочей группы Международной федерации по обработке информации (IFIP), участвовавшей в составлении планов, относительно будущего ALGOL.

Сейчас можно сказать, что работа Вирта над языком PASCAL началась именно тогда, в 1965 году, когда IFIP пригласила его принять участие в разработке нового языка, который должен был стать преемником ALGOL-60. Разработчики разделились на два направления, и Вирт оказался в том из них, которое пошло по пути расширения ALGOL. В 1966 году в Стэнфордском университете был создан язык под названием ALGOL-W.

С осени 1967 по 1968 год, когда Вирт вернулся в Швейцарию и служил в качестве адъюнкт-профессора в университете Цюриха, освободившись от обязательств перед IFIP, он разработал язык, ставший преемником ALGOL-W. Вирт назвал этот язык PASCAL, в честь французского математика и физика XVII столетия Блеза Паскаля, который в 1642 году сконструировал вычислительную машину, чтобы помочь своему отцу в работе по сбору налогов. "Кроме того, слово "PASCAL" звучит довольно мелодично", - говорит Вирт. Язык PASCAL первоначально разрабатывался как язык для обучения, но этим его функции не ограничились. В 1972 году PASCAL начал использоваться на занятиях по программированию в Швейцарском государственном технологическом институте. Свою работу над языком Никлаус закончил в 1974 году, создав высококачественный компилятор, а подлинное признание PASCAL получил после разработки Кеном Боулесом P-кода для микрокомпьютеров, который позволил использовать PASCAL на новых машинах различной конфигурации.

После этого он переключил свое внимание на изучение мультипрограммирования, в результате чего появился язык MODULA, предназначенный главным образом для программирования специализированных систем, в том числе и миникомпьютеров. Основой для нового языка послужил "Параллельный PASCAL", в котором был применен принцип модульной организации комплексов программ, позволяющий программисту "прятать" определенные части программ. Первоначальный вариант MODULA-1 "никогда не рассматривался как полноправный язык программирования", подчеркивает Вирт. Языком модульного программирования стал MODULA-2, ориентированный на персональные компьютеры.

В эти годы работа Вирта была связана с конструированием персонального компьютера "Лилит" и использованием языка MODULA-2.

OBERON - еще один язык программирования, созданный доктором Виртом в 1987 году и названный в честь спутника Урана - OBERON, открытого "Вояджером" в 1977 году.

При создании всех своих языков программирования Вирт придерживался принципа: "Сущности не следует умножать без необходимости", который получил название "бритва Оккама" В языке OBERON этот принцип реализован особенно явно. OBERON стал продолжением линии языков ALGOL-60, PASCAL, MODULA-2. OBERON создан на основе языка MODULA-2, однако, в отличие от PASCAL и MODULA-2, это комбинация языка программирования и операционной системы "для отдельного пользователя персональной рабочей станции". Удивительно простой и даже аскетичный, OBERON представляет собой, пожалуй, минимальный язык высокого уровня.

Работа продолжалась там же в Цюрихе, где Вирт находился уже в качестве профессора информатики с 1968 по 1975 год. Одновременно, начиная с 1968 года, доктор Никлаус Вирт стал профессором информатики в Федеральном Институте технологий Цюриха в Швейцарии, где и работает в этом звании по сей день и продолжает активное исследование в области языков программирования.

Талант Вирта как разработчика языков программирования дополняется писательским даром. В апрельском номере 1971 года журнала "Communications of the ASM" Вирт опубликовал основополагающую статью по "нисходящему" методу проектирования программ ("Разработка программы методом поэтапного усовершенствования"), в которой сформулированы принципы нисходящего построения программы (с последовательным уточнением ее фрагментов). Полученный в результате элегантный и мощный метод проектирования не утратил своей значимости и сегодня. Две другие его статьи "О дисциплине программирования в реальном времени" и "Что мы можем сделать с необязательным разнообразием обозначений", опубликованные в том же журнале, посвящены проблемам поиска адекватного языкового формализма.

Вирт написал несколько книг по программистской тематике: "Алгоритмы и структуры данных", "Программирование на OBERON", "PASCAL - руководство пользователя и справочник" и "Проект цифровых операций".

Сейчас доктор Вирт совместно с тремя другими коллегами занимается вопросами автоматизированного проектирования аппаратных средств компьютерных систем.

Все работы доктора Вирта внесли большой вклад в компьютерную науку. PASCAL сделал языки программирования более легкими для использования и изучения, а компьютеры более доступными для массового пользователя. Его проекты, от EULER до OBERON, стремились упростить и уничтожить барьеры между аппаратными средствами и программным обеспечением, сделать языки программирования более легкими в использовании.

Конечно, известно много других компьютерных языков программирования, помимо PASCAL, OBERON или MODULA-2, но вклад Вирта в создание и развитие языков программирования очень значителен.

За большой вклад в информатику доктор Никлаус Вирт получил многочисленные награды и почести. Американский Совет Магистров присвоил ему звание член-корреспондента; Компьютерное Общество Института Инженеров по электронике и радиотехнике - звание компьютерного пионера; он получил приз IBM европейской науки и техники; стал членом Швейцарской Академии Инженерии и иностранным партнером Американской Академии Инженерии, а также получил орден "Pur le merte" и премию Тьюринга. Вирт получил почетные докторские степени от многих университетов: университет Лаваль, Квебек (Канада), университет Калифорнии, Беркли, университет Йорк (Англия), университет Лине Иоганна Кеплера (Австрия), университет Новосибирска (Россия), Открытый университет Англии, университет Претории (Южная Африка).

Из книги Средневековая Франция автора Поло де Болье Мари-Анн

Из книги Повседневная жизнь Европы в 1000 году автора Поньон Эдмон

Образование «вульгарных языков» После того как латинский язык еще в античную эпоху вытеснил разнообразные италийские диалекты, он стал внедряться также в завоеванные Галлию и Испанию. Конечно, это не был язык Цицерона, Тита Ливия и Сенеки. На языке, который мы находим у

Из книги Молотов. Полудержавный властелин автора Чуев Феликс Иванович

Знание языков Молотов говорит, что не знает иностранных языков. Однако, читает Мопассана по-французски, Каутского - по-немецки… Я помню из детства, что в газетах писали, как он в ООН поправил переводчика, неточно переведшего с английского.Сказал, что языки учил в

Из книги Тюремные тетради [Избранное] автора Грамши Антонио

ВЗАИМОПЕРЕВОДИМОСТЬ НАУЧНЫХ И ФИЛОСОФСКИХ ЯЗЫКОВ В 1921 году по поводу организационных вопросов Виличи писал или говорил (примерно) так: мы не сумели «перевести» наш язык на европейские языки.Необходимо решить следующий вопрос: является ли взаимопереводимость различных

Из книги Тайны Беларуской Истории. автора Деружинский Вадим Владимирович

О смене языков. Как мне кажется, сегодня сами носители древнего наследия предков путают - идет речь о ятвягах или пруссах. Плюс тут еще и лаборский язык, который вполне может оказаться прусским языком. Хотя недавно в одной телепередаче о лаборах было высказано мнение, что,

Из книги Новая теория происхождения человека и его вырождения автора Мошков Валентин Александрович

30. ПРОИСХОЖДЕНИЕ ЯЗЫКОВ Порча звуков от недостатков органов речи. Разнообразие языков произошло от разнообразия способов расселения и от его разновременности. Арийцы азиатские сравнительно недавно выселились из Европы.Происхождение того множества языков, которые мы

Из книги От тайны к знанию автора Кондратов Александр Михайлович

Где была колыбель языков? Малайско-индонезийская, или австронезийская, семья языков не имеет родства с другими семьями мира. Правда в последнее время добыты факты, говорящие о том, что в глубокой древности, примерно 9 тысяч лет назад, эта семья образовывала вместе с

Из книги История русской литературы XIX века. Часть 2. 1840-1860 годы автора Прокофьева Наталья Николаевна

автора

Из книги Славянская энциклопедия автора Артемов Владислав Владимирович

Из книги Дорогами тысячелетий автора Драчук Виктор Семенович

Остров разных языков В третьем и втором тысячелетиях до нашей эры на островах Эгейского моря, на западе Малой Азии, в Греции и на острове Крит существовала яркая, высокоразвитая культура. Ее многочисленные следы находят до сих пор. Наиболее крупные археологические

Из книги Краткая история славян автора Таевский Д А

Иерархия славянских языков Иллирийский язык Албанский языкo Гегийские говоры o Тоскский диалект Латынь (Романская группа языков) Балкано-романская подгруппа (romana comuna)o Арумынский (аромунский) язык? Северная зона Фаршеротский диалект Москопольский диалект

Из книги Вагрия. Варяги Руси Яра: очерк деполитизированной историографии автора Чудинов Валерий Алексеевич

БЛИЗОСТЬ ЯЗЫКОВ «Зубы», или Начало цепи странных совпадений Первым на наличие «странностей» обратила мое внимание преподаватель английского языка Российского университета дружбы народов, казашка по национальности Улданай Бахтикиреева, которая очень удивилась

Из книги Архитекторы компьютерного мира автора Частиков Аркадий

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

Из книги Полное собрание сочинений. Том 8. Сентябрь 1903 - сентябрь 1904 автора Ленин Владимир Ильич

д) Инцидент с равноправием языков Вернемся к порядку заседаний съезда.Мы убедились теперь, что еще до перехода к обсуждению вопросов по существу на съезде ясно обнаружилась не только совершенно определенная группа антиискровцев (8 голосов), но и группа промежуточных,

Из книги Всемирная история в изречениях и цитатах автора Душенко Константин Васильевич

АЛГОРИТМЫ + СТРУКТУРЫ ДАННЫХ = ПРОГРАММЫ

Монография известного швейцарского специалиста по системному программированию, знакомого советским читателям по переводу его книги «Систематическое программирование. Введение.» (М.: Мир. 1977). Она содержит описание и анализ основных алгоритмов, методов построения программ. Книгу можно использовать и как руководство по применению языка Паскаль в задачах математического обеспечения ЭВМ.

Для научных работников, преподавателей, аспирантов и студентов, специализирующихся по математическому обеспечению ЭВМ.

Предисловие редактора перевода

Предисловие

1. Фундаментальные структуры данных

1.1. Введение

1.2. Концепция типа для данных

1.3. Простые типы данных

1.4. Стандартные простые типы

1.5. Ограниченные тисы

1.6. Массивы

1.7. Записи

1.8. Записи с вариантами

1.9. Множество

1.10. Представление массивов, записей и множеств

1.11. Последовательный файл

Упражнения

Литература

2. Сортировка

2.1. Введение

2.2. Сортировка массивов

2.3. Сортировка последовательных файлов

Упражнения

Литература

3. Рекурсивные алгоритмы

3.1. Введение

3.2. Когда не нужно использовать рекурсию

3.3. Два примера рекурсивных программ

3.4. Алгоритмы с возвратом

3.5. Задача о восьми ферзях

3.6 Задача об устойчивых браках

3.7. Задача оптимального выбора

Упражнения

Литература

4. Динамические информационные структуры

4.1. Рекурсивные типы данных

4.3. Линейные списки

4.4. Древовидные структуры

4.5. Сильно ветвящиеся деревья

4.6. Преобразования ключа (расстановка)

Упражнения

Литература

5. Структура языков и трансляторы

5.1. Определение и структура языка

5.2. Анализ предложений

5.3. Построение синтаксического графа

5.4. Построение программы грамматического разбора для заданного

синтаксиса

5.5. Построение таблично-управляемой программы грамматического

5.6. Преобразование БНФ в структуру данных, управляющую

грамматическим разбором

5.7. Язык программирования ПЛ/0

5.8. Программа грамматического разбора для ПЛ/0

5.9. Восстановление при синтаксических ошибках

5.10. Процессор ПЛ/0

5.11. Формирование команд

Упражнения

Литература

Приложение А

Множество символов ASCII

Приложение В

Синтаксические диаграммы Паскаля

Указатель программ

Указатель

Указатель программ

1.1. Вычисление степеней двойки 30

2.6. Сортировка Шелла 89

1.2. Сканер 42

2.7. Просеивание 93

1.3. Чтение вещественного числа 63

2.8. Пирамидальная сортировка 95

1.4. Печать вещественного числа 65

2.9. Разделение 97

Сортировка

простыми

2.10. Быстрая сортировка 99

включениями 79

2.11. Нерекурсивная версия быстрой

Сортировка

бинарными

сортировки 100

включениями 80

2.12. Поиск k-го элемента 105

2.3. Сортировка простым выбором 82

2.13. Сортировка простым слиянием

Сортировка методом

пузырька

2.! 4. Сортировка естественным

2.5. Шейкер-сортировка 86

слиянием 121

2.15. Сортировка сбалансированным

4.6. Построение оптимального дерева

слиянием 126

поиска 274

2.16. Многофазная сортировка 138

4.7. Поиск, включение и удаление в

2.17. Распределение начальных серий

Б-дереве 290

с помощью пирамиды 145

Построение

3.1. Кривые Гильберта 157

перекрестных

3.2. Кривые Серпинского 161

использованием

3.3. Ход коня 167

расстановки 308

3.4. Восемь ферзей (одно решение)

Грамматический

синтаксиса из примера 5 334

3.5. Восемь ферзей (все решения) 174

Грамматический

3.6. Устойчивые браки 180

языка (5.12) 343

3.7. Оптимальная выборка 184

5.3. Транслятор для языка (5.13) 345

4.1. Включение в список 204

5.4. Грамматический разбор для ПЛ/0

4.2. Топологическая сортировка 218

Построение

идеально

5.5. Грамматический разбор для ПЛ/0

сбалансированного дерева 227

с восстановлением при ошибках

4.4. Поиск с включениями 236

Построение

5.6. Транслятор для ПЛ/0 380

перекрестных ссылок 240

Адельсон-Вельский 248

Указатель

Выбором простым 81

Адрес 44, 48

Обменом простым 83

Абсолютный 374

Пирамидальной 90

Базовый 374

С разделением 96

Возврата 374

Слиянием естественным 115

Относительный 374

Слиянием многофазным 137

Алгол-60 17, 320

Простым 109

Алгоритм включения в Б-дерево 285

Сбалансированным N -

В ББ-дерево 296

путевым 122

В сбалансированное дерево 254

Удаления из Б-дерева 288

В список 200

Из сбалансированного дерева

Вычисления n -го факториального

Шейкер-сортировки 85

Грамматического разбора 324

Алгоритмы рекурсивные 9

Линейного просмотра 203

С возвратом 9, 168

Поиска медианы 103

Анализ алгоритмов сортировки 79,

По дереву с включением 233

80, 82, 85, 88, 94, 100, 113

Построения кустарников 300

Балансировка 288

Сортировки включениями

Банки данных 58

бинарными 79

Барабаны магнитные 57

Простыми 78

Барьер 79, 203, 233

С убывающим приращением

ББ-дерево см. Б-дерево бинарное

(сортировка Шелла) 87

Б-дерево 282

Б-дерево бинарное 295

- - симметричное 298 Буквы латинские 24 Буфер 54

Бэйер 282, 289, 295, 298

Варианты в записях 35 Вес дерева 264 Ветвь 223

Возврат 9, 168, 325

Вольтер 13

Восстановление при ошибках 373 Время патентное 58 Выборочное изменение 28 Выравнивание 46 Выражение 17

Индексное 27

Высота дерева 220

Гаусс 169 Гильберт156

Глубина дерева 220 Горизонтальное распределение 134

Готлиб 267

Грамматический разбор 10, 328

Нисходящий 323

- - целеориентированный 328 Граф распознавания 328

- синтаксический 328

- - детерминированный 332 Графы 19 Данные 11

Дейкстра 7, 12

Дерево 10, 19, 219

АВЛ-сбалансированное 248

Бинарное 223

Вырожденное 220

- идеально сбалансированное 226

- лексикографическое 238

Оптимальное 263

Поиска 231

- сильно ветвящееся 223

Сортировки 91

- упорядоченное 220

Фибоначчи 249 2-3 дерево 295

Диаграмма зависимости 361 Дизъюнкция логическая 23 Диски магнитные 57 Дискриминант типа 36 Длина пути 220

Взвешенная 261

Внешнего 220

- - внутреннего 220 Доступ последовательный 53

Прямой 58

- случайный 25 Заглядывание вперед 55, 68 Заголовок списка 314

Задача об устойчивых браках 174

- о восьми ферзях 169

О ходе коня 164

- оптимального выбора 182

- поиска медианы 103

- построения школьного расписания

Запись (record) 8, 31, 48

- с вариантами 36 Запись бесскобочная 377

Инфиксная 230

Польская 377

Постфиксная 230

Искусственный интеллект 163 Итерация 9, 99, 154 Карта (индексов) 123, 128 Квантиль 105

Ключ 76, 303

Ключей преобразование 303 Ключи переменной длины 318

Кнут 77, 86, 134, 144, 264

Кольца 19 Конкатенация 51, 52, 54 Константа 17 Конструктор 20

Записи 32

Массива 26

Контекстная зависимость 322 Конфликт 304 Конфликтов разрешение 304 Конъюнкция логическая 23 Координаты 15, 31, 36

Декартовы 15, 36 Корень дерева 220

Коэффициент заполнения 312

- использования памяти 46

Кривая Гильберта 156

Серпинского 158

Кустарники 299

Ландис 248, 249

Магнитная 108

Лист дерева 220

Лорин 77 Лукасевич377 Мак-Вити 179 Мак-Крейт 289

Мантисса 15

Массив 19, 25, 44

Матрица 29 Машина ПЛ/0 373 Медиана 101, 103 Метасимволы 320

Метод деления пополам 28

Пузырька 84

- рассеянных таблиц 307 Множеств объединение 40

Пересечение 40

Разность 40

Сложение 40

- умножение 40 Множество 15, 19, 38 Множество-степень 38

Множеству принадлежность 40

Моррис 306

Нотация 52 Область переполнения 306 Обход дерева 229

Оператор варианта 37

- присоединения 34, 286

Процедуры 190

Условный 190

Цикла 29

С параметром 190

С предисловием 190 Операции булевские 23

Над файлами 54

Отношений 40

- преобразования 20 I/O-операции 62 Операция 17, 18, 19 Описание 17

Опробирование квадратичное 307

Линейное 306

Открытая адресация 306 Очередь 198 Ошибки наведенные 373

Память для программы 373

Оперативная 295

Паскаль 8, 11, 16, 19, 62

Переменная буферная 55 Переменные 17, 23 Переупорядочение списка 209 Пирамида 91

ПЛ/0 331, 349 ПЛ/1 20

Поддерево 223 Поиск бинарный 28 -- в списке 202

Медианы 103

- по дереву с включением 233

- по списку самоорганизующийся

Поле 48 Поле признака 36

Порядок Б-дерева 282

Частичный 211

- числа 15 Последовательность 16, 19, 52 Потомок 220 Поэтапное уточнение 11, 67, 344 Правила подстановки 320

Порождающие 320

Построения графа 329

Фиктивные 132

Правило «не поднимай панику» 363

Серпинский 158

Предложения 319

Символ 23, 40, 319

Преобразование (типов) 24

Начальным 320

Ключей 303

Пустой 24

Приоритеты операций 40

Символы внешние 363

Присваивание 19, 21, 189

Возобновления 363

Проблема пустой строки 326

Нетерминальные 320

Программа рабочая 373

Терминальные 320

Таблично-управляемая 328

Управляющие 393

Просеивание 92

Сканер 40, 341

Просмотр на один символ вперед без

Слияние 109

возврата 323

Двухфазное 115

Проход 109

Естественное 115

По списку 201

Каскадное 149

Процедура 190

Многопутевое 122

Путь внешний 222

Однофазное 110

Внутренний 220

Простое 109

Разряд 15, 44

Сбалансированное 110, 122

Расписание школьное 41

Трехленточное 109

Распознавание предложений 322

Слова размер 44

Распределение горизонтальное 134

Словарь частотный 203

Памяти динамическое 51, 193

Слово памяти 44

Расстановка 303

Случайный доступ 25

Повторная 318

Смещение 48, 374

Реализация 47, 50

Сопрограммы 144

Регистр адреса команды 374

Сортировка 9, 74, 77

Команды 374

Быстрая 96

Вершины стека 374

Включениями 77

Редактирование 67

Бинарными 80

Рекурсия 9, 99, 150

Простыми 78

Косвенная 151

Внешняя 75

Прямая 151

Внутренняя 75

СББ-дерево 298

Выбором 77

Связка динамическая 374

Простым 81

Сегмент 57

Массивов 75

Логический 58

Методом пузырька 84

Физический 58

Обменом 83

Простым 83

Селектор 20, 37

Пирамидальная 91

Записи 32

Слиянием 109

Массива 26 Серии 115

Многофазная 128

Максимальные 115

Простым 109

Фиктивные 132

С помощью дерева 89

Топологическая 211

Упаковка 47, 49

Устойчивая 79

Уровень 220

Файлов 75

Файл 14, 19, 53

Шелла88

Индексированный 58

i -сортировка 88

Многоуровневый 57

Список 10, 198

Персональный 14

Двунаправленный 315

С прямым доступом 58

Циклический 314

Фиктивный элемент 79

Сравнение 19

Флойд 92

Методов сортировки массивов 105

Фибоначчи деревья 249

Числа 131

Стек 99, 374

Фиксация 378

Строка разрядов 49

Форма бэкус-наурова 320

Текущая 69

Инфиксная 377

Структуры данных динамические 10

Постфиксная 377

Усложненные 8, 51

Формула Эйлера 247

Фундаментальные 8

Функция 17

Древовидные 219

Аккермана188

Структурирования методы 19

Преобразования 24

Схемы программ 56

Расстановки 304

Таблица рассеянная 307

Упорядочения 75

Расстановки 305

Факториал 150

Таблично-управляемые программы

Характеристическая 49

Ханойские башни 186

Таккер 266

Хоор 7, 8, 12, 96, 103

Ху 266

Тип базовый 18

Центроид 267

Данных 17

Цепочка 115

Регулярный 26

Скалярный 19

Цифры арабские 15, 24

Составной 30

Двоичные!5

Стандартный 19

Римские 15

Индексов 26

Числа вещественные 15

Рекурсивный 314

Комплексные 31

Транслятор 10, 17, 40, 319

Натуральные 150

Трансляция 40

С плавающей запятой 15

Удаление из дерева 241

Факториальные 153

Из списка 200

Цели с 15

Узел дерева внутренний 220

Число гармоническое 83

Специальный 222

Кардинальное 18, 20, 39, 49, 50

Уилсон 179

Читаемый вход 59

Уильямс 91

Указатели 10

Шенкер-сортировка 85

Уолкер 263

Эвристика 267 Эйлер