Не стало Никлауса Вирта

Аватар пользователя NOT

Никлаус Вирт во время визита в Россию (Уральский университет, 2005 год)

Первого января 2024-го года на 90-м году жизни скончался Никлаус Вирт (Niklaus Wirt). Он ушёл из жизни в собственном доме, в окружении родных. Прожил долгую и, наверное, счастливую жизнь.

Никлаус Вирт — специалист в области информатики, один из известнейших теоретиков в области разработки языков программирования, профессор компьютерных наук Швейцарской высшей технической школы Цюриха (ETHZ), лауреат премии Тьюринга, автор книг по алгоритмам и структурам данных, ведущий разработчик языков программирования Euler, PL360, Algol W, Modula, Modula-2, Oberon, Oberon-2 и Oberon-07. Пионер информатики и популяризатор парадигмы структурного программирования.

Но большинству (причастных) он известен как создатель языка Pascal.

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

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

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

Вирт также работал профессором информатики в Швейцарской высшей технической школа в Цюрихе, откуда вышел на пенсию в 1999 году.


Никлаус Вирт в своём доме. Легендарный информатик был вдохновлён Копфом и фон Форшергейстом

За время преподавательской работы Вирт дважды брал годичные творческие отпуска, чтобы поработать в лаборатории Xerox PARC, известной созданием компьютерной мыши, оконного интерфейса и прочими разработками, ныне получившими повсеместное распространение.

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

Самое известное творение Никлауса Вирта — язык программирования Pascal, разработанный им в 1970 году.

Помимо языка Pascal Никлаус Вирт был главным создателем языков программирования Euler (в 1965 году), PL360 для серии мейнфреймов IBM/360 (в 1966 году), ALGOL W (в 1968 году), Modula (в 1975 году), Modula-2 (в 1978 году), Oberon (в 1987 году, в содружестве с Юргом Гуткнехтом; нем. Jürg Gutknecht), Oberon-2 (в 1991 году) и Oberon-07 (в 2007 году), а также операционной системы Oberon.

Языки программирования Вирта обычно отличала ясность, простота и эффективность, благодаря чему в своё время они получили широчайшее распространение и оказали сильное влияние на развитие структурного программирования как явления и на дальнейшую разработку языков программирования.

Pascal в своё время был самым распространённым коммерческим языком программирования. Он лёг в основу знаменитого компилятора Turbo Pascal компании Borland, на базе которого были созданы Object Pascal и Delphi.

«Закон Вирта» — шуточное высказывание Никлауса Вирта (1995 год) в духе законов Паркинсона: «программы становятся медленнее куда шустрее, чем компьютеры становятся быстрее.

Авторство: 
Копия чужих материалов
Комментарий автора: 

Великий был учёный. Познакомился с его работами в 1977 году. До дыр зачитывался «Пересмотренным сообщением об Алголе-68». Ну и «Паскаль», конечно… Вместе с тремя томами Д.Э. Кнута и трудами Э.В. Дейкстры, конечно.
Помним.

Комментарии

Аватар пользователя ПиротехникЪ
ПиротехникЪ(11 лет 6 месяцев)

Утрата! Скорбим!

Аватар пользователя NOT
NOT(12 лет 11 месяцев)

Один из немногих Великих.

Так думаю.

Аватар пользователя ПиротехникЪ
ПиротехникЪ(11 лет 6 месяцев)

Я, грешным делом, даже не подозревал что он до сих пор был жив!

ГлЫба!

Аватар пользователя NOT
NOT(12 лет 11 месяцев)

Да я тоже!

Но вот промелькнала новость — я и отреагировал.

Аватар пользователя nm53
nm53(6 лет 8 месяцев)

Великие уходят...

Аватар пользователя MMirex
MMirex(12 лет 11 месяцев)

Ну раз уж Вы - скорбите, наверное был хороший человек.

Аватар пользователя NOT
NOT(12 лет 11 месяцев)

Насчёт того, какой он был человек, я, конечно, не знаю.

Но достаточно зорошо понимаю, сколько он сделал для информационных наук.

Поэтому да, искренние соболезнования.

Аватар пользователя MMirex
MMirex(12 лет 11 месяцев)

Давно это было, я работал в кочегарке, учился заочно, когда сдавал программирование на Паскале - преподаватель спросил - ну ведь передрал где то? А я реально сам сделал работу, вплоть до запятых. Теперь я колхозник, а мой сын - программист. Наверное я поступил правильно.

Аватар пользователя mishgun
mishgun(6 лет 1 месяц)

А я вчера закодировался и теперь тоже программист

Аватар пользователя NOT
NOT(12 лет 11 месяцев)

smile7.gif

ТакЪ!

Аватар пользователя RusEngineer
RusEngineer(8 лет 4 месяца)

А я вчера закодировался и теперь тоже программист

Не, ты просто архив с паролем "qwerty".

Аватар пользователя NOT
NOT(12 лет 11 месяцев)

В смысле — правильно?

Что колхозник? А почему нет? Крайне почётно. Хотя, думаю, весьма тяжко.

Аватар пользователя MMirex
MMirex(12 лет 11 месяцев)

Да, тяжко, вот скоро картоху садить, прям не знаю, надо или нет, надо рабочих, человек 20-30, хотяб, да где их теперь найдёшь. Бешеные деньги.

Аватар пользователя ПРОЛ
ПРОЛ(9 лет 4 месяца)

Всячески поддерживаю переход на колхозную стезю! Без связи с корнями совсем свихнёмся как вид.

Аватар пользователя RusEngineer
RusEngineer(8 лет 4 месяца)
Аватар пользователя NOT
NOT(12 лет 11 месяцев)

«ТаджыкСервис»?

Хотя эта публика сейчас изрядно охамела…

Я уже давно не обращаюсь к ним.

Аватар пользователя Yana Hazina
Yana Hazina(5 лет 5 месяцев)

один из последних Отцов.

кто еще жив? Томпсон вроде? Керниган?

Аватар пользователя NOT
NOT(12 лет 11 месяцев)

Керниган вполне себе.

Долгой ему жизни.

Аватар пользователя parson
parson(8 лет 10 месяцев)

Кнут еще жив

Аватар пользователя utx
utx(8 лет 10 месяцев)

Майерс еще жив. 

Аватар пользователя Nikmich19
Nikmich19(8 лет 3 месяца)

Программировал на Паскале, спасибо Вирту, хороший язык.

Аватар пользователя NOT
NOT(12 лет 11 месяцев)

А я и на Алголе.

P.S. Есть ощущение, чтр с Algol-68 здорово перемудрили. Он же «в народ» так и не пошёл.

Аватар пользователя Nikmich19
Nikmich19(8 лет 3 месяца)

Алгол и Кобол студентом просмотрел и совсем немного применил, в основном Фортран, после ВС СССР - Паскаль. На Паскале заработал на 3-х комнатную кооперативную квартиру в конце 80-х, в 90-м плюс на пусконаладке стоек управления на дековской архитектуре.

Аватар пользователя NOT
NOT(12 лет 11 месяцев)

Я на Фортране и ассемблере основное делал. Потом чистый Си плюс тот же ассемблер.

А сейчас тайком открываю учебник по Хаскелу. Не было в моё время функциональных языков программирования. И тянет порой на что-то эдакое…

Аватар пользователя An-Swer
An-Swer(12 лет 4 недели)

Prolog таки красивше всех.

Аватар пользователя NOT
NOT(12 лет 11 месяцев)

Понимаю, о чём речь, но не сильно в теме.

Уже ушёл в другое в то время.

А сейчас иногда появляются, типа, задачки, для дизайна, да. Но не руками в Adobe Illustrator рисовать, а плагинчик самому написать.

Алгоритм осиливаемый, так что вот иногда руки чешутся именно вспомнить молодость и написать.

Аватар пользователя An-Swer
An-Swer(12 лет 4 недели)

Сейчас такое время, что плагинчик уже и нейросеть написать может. smile23.gif

Аватар пользователя NOT
NOT(12 лет 11 месяцев)

Это да…

Но мы олдскульны, считаем, это не по-пацански.

smile1.gif

Аватар пользователя igorzzz
igorzzz(6 лет 10 месяцев)

Есть ощущение, чтр с Algol-68 здорово перемудрили

 Насколько знаю, Вирт рассматривал свой Pascal, как вариант развития языка Algol.

Но оргкомитет по языку Algol-68 решил, что Pascal - это слишком просто :)

Аватар пользователя Intel4004
Intel4004(12 лет 3 месяца)

Паскаль - это его величайшая ошибка. Недооценил он своих студентов.

Вирт вел в университете Цюриха спец курс "проектирование компиляторов". По окончании курса студентам предстояло написать курсовую - свой собственный компилятор.

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

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

Изменения синтаксиса (например begin/end вместо скобок) - это мелочи. Это чисто для того, чтобы увидеть, как студенты справятся с написанием синтаксического анализатора.

Основные изменения - в спецификации вызова функции.

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

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

В результате в Паскале невозможна такая фишка Си, как функции с переменным числом аргументов. Например функция printf. Функцию printf Вирту пришлось заменить оператором write. Функцию оператором. Заодно средства ввода/вывода пришлось внести в спецификацию языка, что сделало его еще более ущербным (что Вирту и требовалось).

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

Недооценил он своих студентов.

Одним из студентов был Филипп Кан, которому удалось реализовать студенческую максиму "я написал компилятор - значит это лучший компилятор в мире и его должны использовать все". Кан основал фирму Borland (Дельфи, Билдер - это оно), которая занималась разработкой компиляторов, точнее интегрированных сред разработки (редактор, компилятор, отладчик в одном флаконе).

Первым компилятором, был естественно Паскаль (будущий Дельфи). Но на Паскале подняться ему не удалось, для зарабатывания денег пришлось выпустить компилятор Си (будущий Билдер).

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

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

Ну а дальше - большинство студентов после окончания института не учатся больше ничему. Он знает Паскаль - он будет писать на Паскале. Говнокод пошел в мир.

Аватар пользователя NOT
NOT(12 лет 11 месяцев)

Большущее спасибо!

Отличное дополнение.

Аватар пользователя Фелидор
Фелидор(1 год 9 месяцев)

Настолько убедительно, что я готов поверить.
Скажите мне, что это шутка!

Аватар пользователя NOT
NOT(12 лет 11 месяцев)

Вовсе не шутка.

Ну, если по смыслу.

Аватар пользователя Фелидор
Фелидор(1 год 9 месяцев)

Нафиг такие пасквили

Аватар пользователя NOT
NOT(12 лет 11 месяцев)

Так по сути оно примерно так и было, история-то известная.

smile1.gif

Аватар пользователя igorzzz
igorzzz(6 лет 10 месяцев)

Это просто пасквиль. Языки PASCAL и C появились примерно одновременно, PASCAL даже чуть раньше.

Аватар пользователя Фелидор
Фелидор(1 год 9 месяцев)

Фуффф... Отлегло. Спасибо!

Всего-то надо было посмотреть даты появления языков. Паскаль на два года раньше

Аватар пользователя Intel4004
Intel4004(12 лет 3 месяца)

Вообще-то нет.

Си изначально разрабатывался как основной универсальный язык. И обсуждался, разрабатывался и согласовывался он очень долго.

К тому моменту, когда Вирт начал заниматься Паскалем, у всех специалистов в этом вопросе (и у Вирта тоже) уже была предварительная спецификация языка Си.

К тому моменту, когда Вирт закончил заниматься Паскалем, язык Си все еще находился на этапе согласования и утверждения.

Аватар пользователя Самозванец
Самозванец(10 лет 3 месяца)

Изменения синтаксиса (например begin/end вместо скобок) - это мелочи.

Кому-то может и мелочи, а для меня как пенопластом по стеклу. Визуальная мерзость. 

Аватар пользователя дзядзька Хведар

Паскаль - это его величайшая ошибка.

как вы категорично не правы !

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

Вирт конструировал не только и не столько языки программирования но и компьютеры

вместе с паскалем шел и компьютер - лилит кажется назывался (надо гуглить)

насчет использования стека - есть буфер FIFO а есть LIFO.

почитайте про разницу

я еще в начале 90ых по книжкам собирал процессоры на макетке из логических элементов и секционных микросхем серий 589 и 1802

так что я в курсе про историю кампутеров до интеловской эпохи.

щас - да остался интел

а всякие барроуз уже история

так что паскалю вы не правы а вот про студентов Вирта - я коментов не дам

 

Аватар пользователя Разведка Погоды

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

Аватар пользователя An-Swer
An-Swer(12 лет 4 недели)

Это откудова такие сведения?

Аватар пользователя ers
ers(12 лет 3 месяца)

Вообще синтаксические скобки begin/end были еще в Algol (1958), оттуда перекочевали в PL/I (1964).
Нотация синтаксической скобки имеет значение только на уровне лексического анализатора. Человеку буквы изначально читабельнее, чем символы.
На уровне синтаксического анализатора как раз никакой разницы между нотациями скобки уже нет. Там грамматика важна.
Ну и критика в те времена тоже была:
http://lib.ru/ANEKDOTY/non_pas.txt

Аватар пользователя NOT
NOT(12 лет 11 месяцев)

Читал этот текст.

Ну просто супер!

Спасибо, что напомнили. ;-)

Аватар пользователя RusEngineer
RusEngineer(8 лет 4 месяца)

Паскаль - это его величайшая ошибка.

Таки шо ви говорите! А вообще-то признанный язык для обучения студентоты программированию. Красивый, структурированный...

Ну и FreePascal/Delphi - как развитие...

он разработал максимально неприемлемую спецификацию языка.

Да? Да ладно...

взял спецификацию языка Си и старательно ее изувечил

Изувечил Си? Изувечить Си невозможно! Си с рождения феноменальный урод!

Но освоевшему Си (и всякие С++, С# и т.д.) - даже и ничего... Когда живёшь долго рядом с уродом, перестаешь замечать, что он урод.

Порог вхождения в C/C++ значительно выше, чем в Pascal.

А синтаксис С++ писали геи. Ибо никто кроме извращенцев не мог придумать такой адское вырвиглазное поделие...

smile13.gifsmile3.gif

это очень быстро оценили студенты, которым простота и удобство важнее, чем качество и функционал

И какого такого качества не хватало в Delphi, чтоб выстрелить себе в ногу и свихнуть мозги?

До ухода баз данных в Web-приложения Delphi был адски удобен для написания именно баз данных.

Кроме того, на Delphi написано немало олдскульных программ.

Аватар пользователя grizzly
grizzly(2 года 3 месяца)

До ухода баз данных в Web-​приложения Delphi был адски удобен для написания именно баз данных.

Delphi был удобен практически для всего. Приходилось на нём мат. моделированием заниматься, начиная с 4 версии с динамическими массивами никаких ограничений не ощущалось. В 2000 делал на нём визуализацию телеметрической информации, тоже нормально получилось.
А ещё лет 5-7 назад на нём веб-сервисы писал, было гораздо удобнее, чем на C#

Аватар пользователя Holzer
Holzer(8 лет 10 месяцев)

Ну а дальше - большинство студентов после окончания института не учатся больше ничему. Он знает Паскаль - он будет писать на Паскале. Говнокод пошел в мир.

Сдается мне, что вы -- ein Dreck

Аватар пользователя RusEngineer
RusEngineer(8 лет 4 месяца)

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

smile34.gif

В Pascal, если действительно очень нужно передавать в процедуры списки переменной длины с разнородным содержимым, можно, например, реализовать на основе динамических списков. Или с помощью вариантных записей:

program Project1;
 
const
  cByte     = 0;
  cChar     = 1;
  cInteger  = 2;
  cWord     = 3;
  cLongint  = 4;
  cDouble   = 5;
  cExtended = 6;
  cString   = 7;
 
type
  TVariant = record
    bType : Byte;
    case Byte of
      cByte     : ( dByte : Byte; );
      cChar     : ( dChar : Char; );
      cInteger  : ( dInteger : Integer; );
      cWord     : ( dWord : Word; );
      cLongint  : ( dLongint : Longint; );
      cDouble   : ( dDouble : Double; );
      cExtended : ( dExtended : Extended; );
      cString   : ( dString : String; );
  end;
 
function Func(const aArr : array of TVariant) : String;
var
  i, Num : Longint;
  S, sRes : String;
begin
  sRes := '';
  S := '';
  for i := 0 to High(aArr) do
  with aArr[i] do begin
    case bType of
      cByte     : Str(dByte, S);
      cChar     : S := '"' + dChar + '"';
      cInteger  : Str(dInteger, S);
      cWord     : Str(dWord, S);
      cLongint  : Str(dLongint, S);
      cDouble   : Str(dDouble:6:3, S);
      cExtended : Str(dExtended:8:4, S);
      cString   : S := dString;
      else begin
        S := '<!TYPE_ERROR!>';
      end;
    end;
 
    if sRes <> '' then sRes := sRes + ', ';
    sRes := sRes + S;
  end;
  Func := sRes;
end;
 
var
  Arr : array[1..5] of TVariant;
  S : String;
begin
  Arr[1].bType := cString;
  Arr[1].dString := 'Слово';
  Arr[2].bType := cInteger;
  Arr[2].dInteger := 100;
  Arr[3].bType := cChar;
  Arr[3].dChar := 'Z';
  Arr[4].bType := cDouble;
  Arr[4].dDouble := 12.11111111;
  Arr[5].bType := cExtended;
  Arr[5].dExtended := 123.22222222;
 
  S := Func(Arr);
  Writeln(S);
  Readln;
end.

С помощью классов (тип Object) ещё можно реализовать.
Но в процедуру список будет передаваться в виде одного параметра, конечно.

B поздних реализациях Pascal и Delphi уже всё есть.

Так что претензии ваши от неумения вашего. smile124.gif

Аватар пользователя Steel Rat
Steel Rat(6 лет 7 месяцев)

Ну сейчас то уже не модно...

Если задуматься, сейчас студентам должны питон преподавать наверное... smile23.gif

Скриптовый, неплохо увязан с вебом и матприложениями, в т.ч. нейросетями, есть визуализация. Неплохая инфраструктура.

Матлаб скорее инструмент...

Аватар пользователя Mc_Aaron
Mc_Aaron(9 лет 9 месяцев)

Глупости пишете. Паскаль является языком, ориентированным на операторы, а Си -- на выражения, что позволяет програмировать в функциональном стиле, в отличие от Паскаля. Второе глобальное отличие Си от Паскаля и всех остальных "паскалеподобных языков, реализующих парадигму структурного программирования" состоит в синтаксических особенностях объявлений -- в Си с точки зрения синтаксиса абсолютно все объявляется точно так, как будет использоваться, а в Паскале синтаксис объявлений и использования вообще никак не связаны друг с другом. Это позволяет легко и понятно создавать в программах на Си любые, насколько угодно сложные типы, что практически невозможно сделать в Паскале. Поэтому многое в паскаль программах сделано через жопу. И еще одно -- в стандарте языка Си четко написано, что массивов, как таковых, в Си не существует, а оператор "квадратные скобки" -- это просто синтаксический сахар поверх арифметики указателей. Это обеспечивает потрясающую гибкость работы с массивами (двумерный массив -- это массив одномерных массивов, и далее рекурсивно). Единственным недостатком этого является расположение двумерного массива по строкам, в отличие от, например, фортрана. И это немного снижает эффективность программ, работающих с матрицами и векторами из-за несмежного расположения контрвариантных компонент векторов, тензоров и прочих матричных объектов.

Страницы