这篇文章探讨了作者创建新的系统编程语言编译器的动机,源于对C语言的挫败感。核心论点在于区分“表达式”(用于计算)和“语句”(用于副作用),认为C语言经常模糊这两者之间的界限,从而阻碍了可读性和安全性。 具体而言,作者批评了C语言的赋值以及前/后增/减表达式。这些将计算和副作用结合在一起,可能导致未定义行为(例如在`++x * powi(x, 2)`中),并使代码更难理解。来自经典C代码的例子(如`itoa()`和`memcpy()`)表明,虽然这些特性有时很简洁,但可能会掩盖意图。 作者承认简洁的C代码具有一种风格上的优雅,但最终认为将计算和副作用分离带来的清晰度超过了简洁性。他们建议将增/减操作限制为语句,消除潜在的危害,同时保持便利性。文章强调,C语言的灵活性虽然强大,但可能会引入微妙的错误和认知负担,从而证明了追求一种更精心设计的语言的合理性。