LINUX.ORG.RU

История изменений

Исправление MOPKOBKA, (текущая версия) :

Если человек верит, что Си близок к ассемблеру, то пишет на Си ужасные вещи.

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

Плюс есть возможность заглянуть в godbolt, узнать как работает оптимизатор вообще, будет возможность через gdb понять что происходит если высокоуровневое представление ничего не дает. Будет возможность использовать низкоуровневые профилировщики.

Если изначально относиться к Си как к Хаскелю

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

А для встраиваемых? Там может даже не быть таких хороших оптимизирующих компиляторов как gcc и clang, может быть свой мир с расширениями и кучей ub по стандарту в коде, без которой из компилятора нормально производительности не выжать. Да тут даже о С речь не идет, нужно заполнять значение регистров, писать в память по адресу, это все далеко за пределами стандарта. Нужно хотя бы примерно понимать как оно работает, что есть регистр.

Нельзя настолько отвязывать стандарт от реальности.

Исправление MOPKOBKA, :

Если человек верит, что Си близок к ассемблеру, то пишет на Си ужасные вещи.

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

Если изначально относиться к Си как к Хаскелю

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

А для встраиваемых? Там может даже не быть таких хороших оптимизирующих компиляторов как gcc и clang, может быть свой мир с расширениями и кучей ub по стандарту в коде, без которой из компилятора нормально производительности не выжать. Да тут даже о С речь не идет, нужно заполнять значение регистров, писать в память по адресу, это все далеко за пределами стандарта. Нужно хотя бы примерно понимать как оно работает, что есть регистр.

Нельзя настолько отвязывать стандарт от реальности.

Исправление MOPKOBKA, :

Если человек верит, что Си близок к ассемблеру, то пишет на Си ужасные вещи.

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

Если изначально относиться к Си как к Хаскелю

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

А для встраиваемых? Там может даже не быть таких хороших оптимизирующих компиляторов как gcc и clang, может быть свой мир с расширениями и кучей ub по стандарту в коде, без которой из компилятора нормально производительности не выжать. Да тут даже о С речь не идет, нужно заполнять значение регистров, писать в память по адресу, это все далеко за пределами стандарта. Нужно хотя бы примерно понимать как оно работает, что есть регистр.

Нельзя настолько отвязывать стандарт от реальности.

Исходная версия MOPKOBKA, :

Если человек верит, что Си близок к ассемблеру, то пишет на Си ужасные вещи.

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

Если изначально относиться к Си как к Хаскелю

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

А для встраиваемых? Там может даже не быть таких хороших оптимизирующих компиляторов как gcc и clang, может быть свой мир с расширениями и кучей ub по стандарту в коде, без которой из компилятора нормально производительности не выжать. Да тут даже о С речь не идет, нужно заполнять значение регистров, писать в память по адресу, это все далеко за пределами стандарта. Нужно хотя бы примерно понимать как оно работает, что есть регистр.

Нельзя настолько отвязывать стандарт от реальности.