История изменений
Исправление MOPKOBKA, (текущая версия) :
Если человек верит, что Си близок к ассемблеру, то пишет на Си ужасные вещи.
Это слабо связано с темой нашего разговора, я говорю о том что бы подчерпнуть принципы низкоуровневого исполнения, и со знаниями перейти к С, изучив стандарт, и применив только то что применяется. А применяется очень многое.
Плюс есть возможность заглянуть в godbolt, узнать как работает оптимизатор вообще, будет возможность через gdb понять что происходит если высокоуровневое представление ничего не дает. Будет возможность использовать низкоуровневые профилировщики.
Если изначально относиться к Си как к Хаскелю
Получается будет проигнорировано все, локальность кеша, производительность unsigned арифметики, векторизация. Для многих проектов это уже не подходит, даже вполне себе десктопных.
А для встраиваемых? Там может даже не быть таких хороших оптимизирующих компиляторов как gcc и clang, может быть свой мир с расширениями и кучей ub по стандарту в коде, без которой из компилятора нормально производительности не выжать. Да тут даже о С речь не идет, нужно заполнять значение регистров, писать в память по адресу, это все далеко за пределами стандарта. Нужно хотя бы примерно понимать как оно работает, что есть регистр.
Нельзя настолько отвязывать стандарт от реальности.
Исправление MOPKOBKA, :
Если человек верит, что Си близок к ассемблеру, то пишет на Си ужасные вещи.
Это слабо связано с темой нашего разговора, я говорю о том что бы подчерпнуть принципы низкоуровневого исполнения, и со знаниями перейти к С, изучив стандарт, и применив только то что применяется. А применяется очень многое.
Если изначально относиться к Си как к Хаскелю
Получается будет проигнорировано все, локальность кеша, производительность unsigned арифметики, векторизация. Для многих проектов это уже не подходит, даже вполне себе десктопных.
А для встраиваемых? Там может даже не быть таких хороших оптимизирующих компиляторов как gcc и clang, может быть свой мир с расширениями и кучей ub по стандарту в коде, без которой из компилятора нормально производительности не выжать. Да тут даже о С речь не идет, нужно заполнять значение регистров, писать в память по адресу, это все далеко за пределами стандарта. Нужно хотя бы примерно понимать как оно работает, что есть регистр.
Нельзя настолько отвязывать стандарт от реальности.
Исправление MOPKOBKA, :
Если человек верит, что Си близок к ассемблеру, то пишет на Си ужасные вещи.
Это слабо связано с темой нашего разговора, я говорю о том что бы подчерпнуть принципы низкоуровневого исполнения, и со знаниями перейти к С, изучив стандарт, и применив только то что применяется.
Если изначально относиться к Си как к Хаскелю
Получается будет проигнорировано все, локальность кеша, производительность unsigned арифметики, векторизация. Для многих проектов это уже не подходит, даже вполне себе десктопных.
А для встраиваемых? Там может даже не быть таких хороших оптимизирующих компиляторов как gcc и clang, может быть свой мир с расширениями и кучей ub по стандарту в коде, без которой из компилятора нормально производительности не выжать. Да тут даже о С речь не идет, нужно заполнять значение регистров, писать в память по адресу, это все далеко за пределами стандарта. Нужно хотя бы примерно понимать как оно работает, что есть регистр.
Нельзя настолько отвязывать стандарт от реальности.
Исходная версия MOPKOBKA, :
Если человек верит, что Си близок к ассемблеру, то пишет на Си ужасные вещи.
Это слабо связано с темой нашего разговора, я говорю о том что бы подчерпнуть принципы низкоуровневого исполнения, и со знаниями перейти к С.
Если изначально относиться к Си как к Хаскелю
Получается будет проигнорировано все, локальность кеша, производительность unsigned арифметики, векторизация. Для многих проектов это уже не подходит, даже вполне себе десктопных.
А для встраиваемых? Там может даже не быть таких хороших оптимизирующих компиляторов как gcc и clang, может быть свой мир с расширениями и кучей ub по стандарту в коде, без которой из компилятора нормально производительности не выжать. Да тут даже о С речь не идет, нужно заполнять значение регистров, писать в память по адресу, это все далеко за пределами стандарта. Нужно хотя бы примерно понимать как оно работает, что есть регистр.
Нельзя настолько отвязывать стандарт от реальности.