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

  • Параллельно выполнять последовательный код
  • Эффективно использовать кэши процессора
  • Увеличивать скорость за счет векторизации вычислений

Автор утверждает, что абстрактная машина, которая лежит в основе языка C устарела. Можно создавать более быстрый код и более быстрые процессоры, если не пытаться писать его на C и не заставлять процессоры имитировать PDP-11.

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

Упомянутые автором аппаратные реализации сборщика мусора, увеличение количества одновременно выполняемых потоков и обмен неизменяемыми данными, кажутся перспективными.