C не низкоуровневый язык
Наткнулся на интересную статью C Is Not a Low-level Language. Автор Давид Чиснол(David Chisnall) утверждает, что язык C больше не является низкоуровневым языком. Давно прошли те времена, когда инструкции C простым способом отображались на низкоуровневые команды PDP-11. Сейчас большие и сложные компиляторы хитрым образом преобразуют код на C в машинные инструкции. Все это нужно, чтобы:
- Параллельно выполнять последовательный код
- Эффективно использовать кэши процессора
- Увеличивать скорость за счет векторизации вычислений
Автор утверждает, что абстрактная машина, которая лежит в основе языка C устарела. Можно создавать более быстрый код и более быстрые процессоры, если не пытаться писать его на C и не заставлять процессоры имитировать PDP-11.
И хотя я не могу себе представить, как улучшить модель, я смутно догадываюсь, что использование языков более приспособленных к современному железу может дать огромное преимущество.
Упомянутые автором аппаратные реализации сборщика мусора, увеличение количества одновременно выполняемых потоков и обмен неизменяемыми данными, кажутся перспективными.