Умер создатель языка программирования Pascal Никлаус Вирт Статьи редакции
Ему было 89 лет.
- О смерти Никлауса Вирта сообщил в X учёный, создатель языка программирования Эйфель Бертран Мейер. По данным iTWire, Вирт умер в своём доме в окружении родных 1 января 2024 года.
- Вирт получил степень доктора электротехники в области компьютерных наук в 1963 году. После он четыре года был доцентом на факультете компьютерных наук Стэнфордского университета, с 1967 по 1999 год — профессором информатики в Федеральном институте технологии в Цюрихе (ETH Zurich). За время преподавания он дважды брал отпуска на год для работы в научно-исследовательском подразделении Xerox PARC.
- В 1970 году Никлаус Вирт создал язык программирования Pascal, также он автор языков Euler, PL360, ALGOL W, Modula и Oberon. В 1984-м учёный стал лауреатом самой престижной премии в области информатики — премии Тьюринга.
46K
показов
19K
открытий
1
репост
Сегодняшние программисты высокоуровневых языков, которые начинали с 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 все почему то ненавидят, хотя я его обожаю, он тоже, как ассемблер, только для веба. А проблемы создают фреймворки, их можно сравнить с высокоуровневыми языками, там тоже оптимизации всякие, которые программистам лень изучать.
Ассемблер для веба - это WebAssembly.
WebAssembly классная тема. Но "ассемблером для веба" JavaScript в начале 2000-х уже называли, а WebAssembly только в 2015 появился.
Почему лично я так называю JavaScript, потому что консоль разработчика в Chrome, Firefox, Safari позволяет точно так же в реальном времени менять код страницы налёту, как и отладчики программ позволяют видеть запущенные программы в виде ассемблерного кода и тоже менять код на лету. Сходство есть, согласись. Ну и JavaSvript код может быть сгенерирован более высокоуровневыми фреймворками, примерно, как высокоуровневые языки генерят машинный код, тоже сходство на лицо, согласись.
с оптимизациями или без, код в любом случае сильно будет сильно избыточен , а оптимизациями не исправить не оптимизированный плохой код.
Комментарий недоступен
Современные компиляторы системных языков C/C++/D/Rust/Zig/Nim часто оптимизируют лучше, чем человек вручную на ассемблере.
это слишком сказочно звучит, верю только реальным тестам
Вы отстали от жизни, это реальность. Это я вам как человк знающий x86 и ARM ассемблер говорю. Я пишу периодически программы для микроконтроллеров и поглядываю на выхлоп компилятора. LLVM оптимизирует очень хорошо.
Иногда, конечно, лажает, но в целом весьма недурно.
трюки с оптимизацией не отменяют того, что программистам полезно знать основы