「C语言不是低级(硬件级)语言」
首先,处理器架构师为了支持C语言的抽象机制投入了巨大成本。为了让C程序员继续相信他们在写“底层代码”,处理器不得不实现复杂的推测执行、分支预测等机制,这直接导致了Meltdown和Spectre漏洞的出现。
其次,C代码的高性能是建立在极其复杂的编译器优化之上的。编译器需要通过各种复杂的变换(如向量化、循环展开等)才能生成高效代码,这与“简单直接映射到硬件”的低级语言特征背道而驰。
最后,C语言的语义已变得晦涩难懂。即使经验丰富的程序员也很难准确理解指针追溯、未定义行为等特性,这些特性与硬件实现的差异常常导致安全漏洞。
文章设想了一个不以支持C语言为目标的处理器架构:支持大量线程、宽向量单元和简单内存模型。这暗示了未来编程语言与硬件协同发展的方向。
随着硬件架构的演进,继续把C语言视为底层语言不仅限制了性能提升,更带来了安全隐患。是时候重新思考编程语言与硬件的关系了。
【C Is Not a Low-level Language:揭示了C语言并非低级语言的真相,指出现代计算机并非快速的PDP-11,强调了C语言在现代计算机架构下的一些问题和误解,对编程语言和计算机架构的理解有重要价值】'C Is Not a Low-level Language: Your computer is not a fast PDP-11.' 完整URL: