C — не низкоуровневый язык: ваш компьютер — не быстрый PDP-11

C Is Not a Low-Level Language (2018)

В статье Дэвида Чизнэлла, опубликованной в Communications of the ACM, утверждается, что C, вопреки распространённому мнению, не является низкоуровневым языком. Автор связывает уязвимости Meltdown и Spectre с попытками производителей процессоров сохранить иллюзию, что C «близок к железу». Современные процессоры — это сложные суперскалярные машины с конвейерами, спекулятивным исполнением и многоуровневым кэшем, что далеко от абстрактной модели C с последовательным исполнением и плоской памятью. Чтобы C-код работал быстро, компиляторы выполняют сложные преобразования, которые нарушают простоту и предсказуемость, ожидаемые от низкоуровневого языка. В результате C требует от программиста понимания деталей реализации, а не абстрактной машины.

Процессорные архитекторы пытались построить не просто быстрые процессоры, а быстрые процессоры, которые предоставляют ту же абстрактную машину, что и PDP-11.

Ещё за этот день

2026-09-07