crypt of decay - ёбаный булшит! [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

ёбаный булшит! [May. 14th, 2024|05:25 am]
Previous Entry Add to Memories Tell A Friend Next Entry
Undefined behavior exists in C-based languages because the designers of C wanted it to be an extremely efficient low-level programming language.

да хуй там плавал! как раз для low-level оно с этим говном и непригодно. абсолютно. полностью. вообще. о какой, нахуй, эффективности для лов-левела может идти речь, если сраное переполнение целых — не определено? сдвиг отрицательного значения влево — не определён? bitwise and над отрицательным целым не определена? и так далее, далее, далее…

ёбаную жабу (про которую оно там дальше упоминает) ПРОЩЕ скомпилить в эффективный машинный код, чам современную всратосишечку. для всратосишечки надо писать охулиард бесполезных проверок на UB — которые Дохуя Умный Компилятор всё равно выкинет, потому что «UB не бывает и быть не может никогда».

вот, например: «int n; … if (n >= 0) n &= 0x1f;». все в курсе, что компилятор — в принципе — Имеет Право к хуям выкинуть тут проверку? а потому что хуй знает, что будет с таким «&» для отрицательных целых. короче, не может этого быть — а потому и проверка не нужна. да, гоцэцэ ещё не дошёл до такого маразма (по крайней мере, не всегда), но я уверен, что дойдёт.

впрочем, если я верно помню, то «&» с отрицательными целыми — это unspecified, а не undefined. так что есть очень-очень маленькая надежда, что хотя бы это не сломают.

вообще, никакого «undefined» в спецификациях языка быть не должно. никогда-никогда. максимум — «machine-specific». хуже это не сделает (куда уж хуже-то?), но хотя бы отобьёт у говноавторов говнокомпиляторов охоту «аптимизироваеть» то, что трогать нельзя. все машино-специфичные вещи должны оптимизироваться с учётом того, как это работает на целевой архитектуре. хотите переносимый код? тогда не используйте машино-специфичных вещей. и флаг в компиляторе пусть будет, который предупреждает о такой хуйне.

и да: кукареки говноавторов говнокомпиляторов про то, что подобные оптимизации Сильно Ускоряют Код — булшит. разные независимые исследования показывают, что всех ускорений — в районе «1.1» максимум. и даже это можно нивелировать, если чуть-чуть поправить руками исходный код (например, использовать `size_t` для индексов циклов, чтобы не приходилось постоянно делать sign extension). зато сломать вполне рабочую программу такие «оптимизации» могут на ура. и, кстати, сделать программу МЕНЕЕ надёжной: интересующиеся без труда найдут описания разных случаев, когда Дохуя Умный Компилятор убирал проверки, которые считал ненужными, и этим самым делал из надёжной программы сломаную.

да, я знаю, что я об этом писал уже кучу раз. ничего страшного: истина от повторения не тускнеет.
Linkmeow!

Comments:
From:(Anonymous)
Date:May 14th, 2024 - 05:17 pm
(Link)
си это кал
[User Picture]
From:[info]ketmar
Date:May 14th, 2024 - 07:45 pm
(Link)
тот неоспоримый случай, когда через анона вещает сам боженька!
From:(Anonymous)
Date:May 15th, 2024 - 07:50 am
(Link)
хмм, вроде в linux какие-то тест скрипты есть для проверки качества, может даже для компиляторов, и в cmake вроде что-то такое

ну и оптимизации же можно отключить, правда?
[User Picture]
From:[info]ketmar
Date:May 15th, 2024 - 08:40 pm
(Link)
>хмм, вроде в linux какие-то тест скрипты есть для проверки качества
качества чего? не нужны никакие «скрипты»: ВСЕ «серьёзные компиляторы» — сломаное дерьмо. без исключений.

>ну и оптимизации же можно отключить, правда?
нет, неправда. помимо того, что код в итоге будет тормозить как ёбаный пиздец — нет, нельзя отключить. как минимум гоцэцэ и шланг всё равно «аптимизировают» даже при -O0. редко, но как полагается метко.
From:(Anonymous)
Date:May 20th, 2024 - 12:34 pm
(Link)
ну может начать с каких-то простых примеров с проверками,
которые подвергались хоть раз оптимизации,
и скрипта чтобы прокомпилять и вывесить таблицу с результатами
для разных компиляторов, такой public humiliation получается
[User Picture]
From:[info]ketmar
Date:May 20th, 2024 - 01:19 pm
(Link)
а зачем? авторам говнокомпилеров оно не нужно, потому что они уверены (и публично это повторяют), что всё делают правильно. а кто с ними не согласен — тот дебил.

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

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

нудная и бесполезная работа, которая не нужна абсолютно никому.
From:(Anonymous)
Date:May 15th, 2024 - 01:33 pm
(Link)
эти уебки дооптимизировались до того, что их жаба аутперформит
проектанты хуевы
From:(Anonymous)
Date:May 16th, 2024 - 03:39 am
(Link)
вспомнил былинный тред

https://www.linux.org.ru/forum/talks/13428281
[User Picture]
From:[info]ketmar
Date:May 16th, 2024 - 08:54 pm
(Link)
да, чудесное, спасибо. голос разума в стане дебилов. никто не слышит, конечно.

если бы для меня всё ещё был достаточно актуален си — я бы таки просто написал свой компилятор. который делает не то, что в стандарте написано, а то, что ожидают нормальные люди.
From:(Anonymous)
Date:May 19th, 2024 - 07:05 am
(Link)
вот и напиши компилятор, и пользуйся, и будет он для тебя "достаточно актуален". только нихуя ты не напишешь, конечно.
[User Picture]
From:[info]ketmar
Date:May 19th, 2024 - 10:00 am
(Link)
экий чоткий анон. он, правда, не в курсе, что я и написал, и пользуюсь — потому что анона не пустили в закрыточки, где об этом много рассказывается. а почему не пустили? а вот потому и не пустили, что чоткий анон умеет только обсирать и обсираться.
[User Picture]
From:[info]ketmar
Date:May 19th, 2024 - 10:04 am
(Link)
p.s.: а может, чоткий анон и вовсе не понял, что для меня в принципе сишечка неактуальна, полностью? и вовсе не потому, что у неё нормальных компиляторов почти не осталось? надеюсь, всё же, что чоткий анон не настолько тупой.
From:(Anonymous)
Date:May 20th, 2024 - 04:49 pm
(Link)
а что плохого в сишечке?
[User Picture]
From:[info]ketmar
Date:May 20th, 2024 - 11:03 pm
(Link)
если оставить в стороне всю хуйню с почти-отсутствием нормальных компиляторов, то причина не в том, что сишечка чем-то особо плохая, а просто тем, что она мне никогда не нравилась. я предпочитаю оберон и форт.
From:(Anonymous)
Date:May 21st, 2024 - 05:03 am
(Link)
Всё. Это гнойная зараза, отбросившая ойти на пятдесят лет назад.
[User Picture]
From:[info]ketmar
Date:May 21st, 2024 - 05:36 am
(Link)
эм… смею заметить, что никто никому сишечку насильно не пихал — в неё шли добровольно, ещё и с песнями. потому что учиться сложно и скучно, а говнокодить весело.

в оригинале сишечка была создана для вполне конкретной задачи, как раз как замена ассемблеру. Килдалл для почти той же цели PL/M-80 использовал, например.

проблема ойти (как и всей остальной инженерии) не в какой-то там сишечке: проблема в перепроизводстве некачественных кадров.

поэтому написание своего компилятора (потенциально для своего языка или диалекта) под проект воспринимается или как подвиг, или как сумасшествие, например: «а кто потом это сопровождать будет?!» быстро разобраться в сделаном другим инженером — это необходимое умение инженера, а не суперспособность… но сейчас это именно суперспособность. поэтому вместо софта — непонятные геометрические фигуры из говнолиб и говнофреймворков.

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


ну, и конкретно мне сишечка, соответственно, плоха тем, что мне неудобно. я лучше возьму уже готовое, более-менее удобное и сделаное нормально (компонентный паскаль) и доработаю под себя; или просто сделаю под себя с нуля (форт). о последней попытке использовать сишечку в относительно большом проекте (sxed) я жалею до сих пор. идиотская была затея, хоть я и Шмог. пользуюсь, конечно, но с тоской.
From:(Anonymous)
Date:May 21st, 2024 - 03:54 pm
(Link)
а пытался сам для себя сформулировать конкретику, чем именно сишечка неудобна, или тебе похуй, ты так чувствуешь?
[User Picture]
From:[info]ketmar
Date:May 22nd, 2024 - 01:41 am
(Link)
конечно, я знаю, что именно мне не нравится.

заранее ответ на следующий вопрос: не хочу.
From:(Anonymous)
Date:May 21st, 2024 - 06:05 pm
(Link)
Даже в асме можно лейблы ставить после обращения к ним - ассемблер разберется. А сираному си надо всё "объявлять"! Прогресс епта.
[User Picture]
From:[info]ketmar
Date:May 22nd, 2024 - 01:38 am
(Link)
а в обероне даже break нет, прикинь. и указатель на что захочется сделать нельзя. ваще ужос.
From:(Anonymous)
Date:May 22nd, 2024 - 03:02 am
(Link)
Оберон - тоже "portable assembler"?
[User Picture]
From:[info]ketmar
Date:May 22nd, 2024 - 06:09 am
(Link)
технически — любой язык высокого уровня именно это.
[User Picture]
From:[info]ketmar
Date:May 16th, 2024 - 10:14 pm
(Link)
вообще, конечно, там умиляет толпа дегенератов, которые уверены, что человек для компилятора, а не наоборот. кое-кто из них даже осознаёт, что дурацкая итоговая модель си не совпадает с ментальной моделью большинства человеков — но… считает это багом человеков.

а самое смешное то, что авторы стандарта когда вводили UB — вовсе не предполагали, что говноавторы говнокомпиляторов воспримут это как индульгенцию на говно.

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

что дошло до жопомозгов говноавторов говнокомпиляторов: «если UB — то можно перестать генерить код как написано, всё похуй!»

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

к сожалению, большинство авторов «оптимизирующих компиляторов» — безмозглые кучи говна откуда-то из другого мира. авторы стандарта, может, и не могли это предвидеть, но я считаю, что ОБЯЗАНЫ были выпустить amendmend, который поясняет, почему кучи говна не могут делать то, что они делают. но авторы стандарта не стали — и именно за это, собственно, я их хэйчу. а не за сам факт наличия UB.
[User Picture]
From:[info]ketmar
Date:May 17th, 2024 - 02:39 am
(Link)
кстати, там всё началось как раз с того, что у меня в посте написано: гоцэцэ в какой-то момент решил, что результат не может быть больше 8K, а поэтому bitand не нужен. поскольку на отрицательных целых bitand не определён, то возможные отрицательные значения попросту не рассматривались: «этого не может быть потому что не может быть никогда». VRP, может, и определил диапазон с отрицательными, но гоцэцэ же старательно не знает, как на целевой архитектуре представлены отрицательные целые, поэтому проверил по типу: «possible_value <= 8191? ура, bitand не нужен, пляшем.»

как там правильно заметил ОП — где-то по дороге уже встретился один bitand, после чего VRP усёк значение. а анализатор потом распространил это дальше, постулировав, что «bitand с отрицательными не имеет смысла, а потому его не бывает».
From:(Anonymous)
Date:May 23rd, 2024 - 11:47 pm
(Link)
инопланетные ублюдки вообще не понимают, что им сказать пытаются

https://gcc.gnu.org/legacy-ml/gcc-help/2011-07/msg00231.html