Zig 编程语言正转向一种简化的运算符优先级模型。在 C 或 C++ 等许多传统语言中,复杂的表达式受深层的优先级“塔”控制,这可能导致开发者在不大量使用括号的情况下难以预测语句将如何被求值。Zig 向“部分”优先级的转变旨在平坦化这一塔结构,减少不同的优先级层数,从而使数学和逻辑表达式的逻辑更加透明且更易于实现。

这一变化通过减少对嵌套括号的需求直接影响代码的可读性。Hacker News 上的评论者指出,虽然许多语言为了易于实现而保留复杂的优先级,但 Zig 的方法寻求一种更具意图的平衡。例如,某些语言通过默认到特定的绑定来处理模糊情况——例如一元负号是否比幂运算符绑定更紧。在某些环境中,像 `-a ** b` 这样的表达式可能会根据特定的优先级规则被不同地解释,但 Zig 的方向表明,它倾向于将此类模糊情况视为语法错误,以确保开发者的意图永远不会被留给猜测。

这一设计处于编程语言哲学的光谱上。虽然 Zig 正在简化其优先级,但其他语言如 Go 使用相对较小的五个层级。在另一个极端,像 Lisp 这样的语言通过要求每个操作都使用显式形式或括号来完全消除优先级,而 APL 则从右到左处理表达式。Zig 的“部分”优先级代表了一种折中:它避免了 Lisp 那种极端的显式性,同时拒绝了 C 风格优先级的晦涩复杂性。然而,这一转变也引入了特定的权衡;例如,虽然 Zig 接受某些组合如 `a + b & c`,但像 WGSL(WebGPU 着色语言)这样更严格的语言会将其视为错误,这突显出即使是“简化”后的优先级,仍然是不同语言规范之间的主观设计选择。