Ну, я не знаю, причем тут я, но в целом я согласен. Но нужно понимать, что ассемблер утыкается в набор машинных инструкций, а не в комфортность и красоту их написания, для примерно этого во многих ассемблерах есть макросы, да и никто не мешает сделать из любого приятного глазу синтаксиса сделать компилятор в ассемблер.
Раз уж начали про UB, попробуйте угадать, что выдаст эта программа: Код (C++): #include <cstdio> int func(int* ptr) { const int value = *ptr; if (ptr == nullptr) { printf("ptr == 0\n"); return value; } printf("ptr != 0\n"); return value; } int main() { func(nullptr); return 0; } Возможные варианты: Упадёт Напишет ptr == 0 Напишет ptr != 0 Спойлер: Ответ (не подсматривать!) Независимо от того, что вы предположили, вы угадали: в зависимости от компилятора, оптимизаций и настроек компиляции возможны все три варианта. https://godbolt.org/z/ccPE9Grda Этот UB вносит компилятор и от языка не зависит (например, воспроизводится и в расте, в зависимости от уровня оптимизаций).
Что тут гадать? Если она не упадет, то этот компиль удаляется и юзается тот, который будет генерить то, что от него требуется, а не отсебятину. Обколются своими клангами, а потом возмущаются, когда у них бесконечные циклы из кода пропадают.
Тогда придётся выбросить и msvc, и gcc, и clang, потому что во всех трёх возможны варианты, когда не падает.
Ну, придется, так придется. Делов то. Есть компили, которые делали до эпохи малолетних говнокодеров на петоне по туторам на ютубе. В них невозможны варианты, когда не упадет.
Ну допустим, но в них все твои циклы будут на 2 процента медленнее, тк в них будет хуже оптимизация. А ты же знаешь, что 2 процента - это уже негодно для рилтайма.
Мои не будут. У меня же там нет пирамиды "зеро-кост" абстракций. Практически каждая строка транслируется в одну-две машинные инструкции, особо оптимизировать и нечего.
К сожалению, будут, тем самым ты уподобишься ржавым пориджам, еще одного спеца потеряли, эх... А самое обидное в том, что те компиляторы, которые возводят UB в абсолют, на самом то деле правы с точки зрения стандарта языка. С твоей точки зрения стандарт и сам язык не верный, а не новомодные компиляторы. Ты по сути предал то, во что верил, это печально...
они сишный код на препроцессоре ржаки выдают за ржачный... нарушают, редиски, ПАРАДИГМУ просто не надо выдумывать сферического коня в вакууме и всё будет получше. на обычных компах в большинстве случаев самыми быстрыми оказываются однопоточки. а если делаешь многопоточку, делай ключ для задания кол-ва потоков и таким дикобразом получаешь предельную адаптивность.. асинки - совсем из разряда клинического идиотизма: ожидание и исполнение чётко прописывается на потоках (желательно именованных)
давай уж тадЫ поконкретней: время исполнения цикла растёт по экспоненте с глубиной его вложенности. Иль Ты на эту тему поспорить хочешь?
Но вот в Хаскелле, например, нет циклов, так что вроде бы нечему быть на 2 процента медленнее, но есть рекурсия, которая часто разворачивается компилятором в цикл, остается только развернуть рекурсию в рекурсии, чтобы получить экспоненту, или два процента в зависимости от глубин вложенности. --- Сообщение объединено, 13 фев 2024 --- Вы говорите, мол Ржавый то, Ржавый сё, а бабуля Ада готова ему фору дать в некоторых моментах (как минимум в формальной верификации кода):
Клятые рептилоиды из своих белых домов вещают, что будущее должно быть "безопасным по памяти", но мы то знаем, что это всё заговор ржавых и петухоновских пориджей, которые хотят убить православные языки программирования: https://www.whitehouse.gov/oncd/briefing-room/2024/02/26/press-release-technical-report/