Умер создатель языка программирования Pascal Никлаус Вирт Статьи редакции

Ему было 89 лет.

Николаус Вирт
  • О смерти Никлауса Вирта сообщил в X учёный, создатель языка программирования Эйфель Бертран Мейер. По данным iTWire, Вирт умер в своём доме в окружении родных 1 января 2024 года.
  • Вирт получил степень доктора электротехники в области компьютерных наук в 1963 году. После он четыре года был доцентом на факультете компьютерных наук Стэнфордского университета, с 1967 по 1999 год — профессором информатики в Федеральном институте технологии в Цюрихе (ETH Zurich). За время преподавания он дважды брал отпуска на год для работы в научно-исследовательском подразделении Xerox PARC.
  • В 1970 году Никлаус Вирт создал язык программирования Pascal, также он автор языков Euler, PL360, ALGOL W, Modula и Oberon. В 1984-м учёный стал лауреатом самой престижной премии в области информатики — премии Тьюринга.
0
354 комментария
Написать комментарий...
Георгий

Сегодняшние программисты высокоуровневых языков, которые начинали с Pascal и Basic создают нам жирные не оптимизированные программы и игры.
Жаль, что в учебных заведениях начинают изучать языки программирования не с ассемблера – он основа, даёт понимание, как работает процессор, что такое регистры и стек, как эффективно и оптимально писать код.
После ассемблера нужно учить JavaScript, потому что это ассемблер для Веба, потом уже остальные языки.

Ответить
Развернуть ветку
Аккаунт заморожен

Комментарий недоступен

Ответить
Развернуть ветку
Георгий

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

Ответить
Развернуть ветку
Аккаунт заморожен

Комментарий недоступен

Ответить
Развернуть ветку
Георгий
Я никогда не пойму как высокоуровневый код будет выглядеть в машинном коде )

В отладчике мы можем в памяти все увидеть. Всё лишние циклы, функции такты, весь этот ненужный жир.

Попробуйте заиплементить какой-нибудь нехитрый алгоритм на коленке на C, посчитайте сколько тактов должен исполняться на пальцах, и сравните с реальностью (с -O3). Будете приятно удивлены )

Руками на асме так не напишете точно.

Да. Я проверял давно, декомпилированный чистый код на асме простой программы всё равно содержит меньше строк, чем декомпилированный бинарник написанный на C. Любой высокоуровневый язык добавляет избыточность, даже Rust, который сегодня делает C по тестам (не по всем еще), всё равно добавляет избыточность.

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

Ответить
Развернуть ветку
Аккаунт заморожен

Комментарий недоступен

Ответить
Развернуть ветку
Георгий
Избыточность в размере кода? Несомненно!
А в скорости исполнения?

Я выше не зря говорил именно о строках и вы не уловили смысл. Видимо от непонимания ассемблера и того, как транслятор преобразовывает код в машинный. Когда это делает транслятор с ассемблера, у нас одна строка, это всего 1 или больше тактов процессора. Код, генерируемый высокоуровневыми языками содержит больше строк, например вместо одной, на C или Rust, у нас 3 строки и это в самом лучшем случае 3, Java или Python точно тысячи и миллионы лишних создадут. Анализируя процесс программы в памяти через отладчик, весь лишний код виден на ассемблере.

Т.е. ещё раз - если отключить оптимизации - то будет всё как Вы говорите - много "лишнего" кода, "жир", и на асме выйдет самому закодить лучше.

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

Ответить
Развернуть ветку
Аккаунт заморожен

Комментарий недоступен

Ответить
Развернуть ветку
Георгий
Лишние строки это чепуха.
Лишние строки это чепуха.
Лишние строки это чепуха.

Смотри, я три раза процитировал одно и тоже. А мог бы один раз. Так и процессор тратит больше времени на обработки лишних строк.

У меня было полно примеров когда написанный - действительно короткий - код на асме в котором нет ничего лишнего, исполнялся во много раз дольше чем казалось бы "наивного" вида, без всяких ухищрений написанный код на C который компилятор прооптимизировал как надо.

Такое может быть, если использовались аппаратные оптимизации, но это зависит от модели процессора, если процессор не поддерживает аппаратно. Или просто это дешёвый EC2 инстанс в облаке, то он может исполнить ту же самую программу дольше. Доверять оптимизациям это чистое казино.

Ответить
Развернуть ветку
Аккаунт заморожен

Комментарий недоступен

Ответить
Развернуть ветку
Георгий

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

Ответить
Развернуть ветку
Аккаунт заморожен

Комментарий недоступен

Ответить
Развернуть ветку
Георгий

да, они вообще про это не знают

Ответить
Развернуть ветку
Аккаунт заморожен

Комментарий недоступен

Ответить
Развернуть ветку
Георгий

Если бы я их брал... Мы пол-года добивались от них, чтобы они правильно добавили параметры запуска их Java программы в Kubernetes контейнере, там всего лишь нужно было задать параметр не в виде конкретного числа, как они делали, а в процентах задать 100% и программа перестала падать. До этого они перекладывали проблему на DevOps отдел. И подобных случаев масса. Node.js программы тоже не могут оптимизировать, вместо этого ругают Node.js и JavaScript как язык.

Ответить
Развернуть ветку
Аккаунт заморожен

Комментарий недоступен

Ответить
Развернуть ветку
Георгий

ой им платят нормально, дело в лени

Ответить
Развернуть ветку
Георгий

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

Ответить
Развернуть ветку
C. Steel
JavaScript все почему то ненавидят, хотя я его обожаю, он тоже, как ассемблер, только для веба.

Ассемблер для веба - это WebAssembly.

Ответить
Развернуть ветку
Георгий

WebAssembly классная тема. Но "ассемблером для веба" JavaScript в начале 2000-х уже называли, а WebAssembly только в 2015 появился.
Почему лично я так называю JavaScript, потому что консоль разработчика в Chrome, Firefox, Safari позволяет точно так же в реальном времени менять код страницы налёту, как и отладчики программ позволяют видеть запущенные программы в виде ассемблерного кода и тоже менять код на лету. Сходство есть, согласись. Ну и JavaSvript код может быть сгенерирован более высокоуровневыми фреймворками, примерно, как высокоуровневые языки генерят машинный код, тоже сходство на лицо, согласись.

Ответить
Развернуть ветку
Георгий

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

Ответить
Развернуть ветку
Аккаунт заморожен

Комментарий недоступен

Ответить
Развернуть ветку
C. Steel

Современные компиляторы системных языков C/C++/D/Rust/Zig/Nim часто оптимизируют лучше, чем человек вручную на ассемблере.

Ответить
Развернуть ветку
Георгий

это слишком сказочно звучит, верю только реальным тестам

Ответить
Развернуть ветку
C. Steel

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

Ответить
Развернуть ветку
Георгий

трюки с оптимизацией не отменяют того, что программистам полезно знать основы

Ответить
Развернуть ветку
351 комментарий
Раскрывать всегда