为什么等号被用作赋值操作符

查看原文

在数学中 a=a+1 是不成立的,但在编程中这个表达式表示a赋值为a+1。这篇文章探讨了为什么现代大部分编程语言使用了 = 作为赋值操作符。tldr,历史原因。。。

  • c 语言这么用的
  • 以前有语言用 a := a + 1 表示赋值(ALGOL-60)
  • 在 ALGOL-60 到 CPL 到 APL 到 S 到 R 这条链的末端,R 语言选用了 <- 作为推荐的赋值操作符。
  • BCPL 这门语言运行与 PDP-7, 引入了 ++, --,使用 = 作为初始,:= 作为赋值。
  • 在 ALGOL-60 到 CPL 到 BCPL 到 B 再到 C 这条链的末端,C 语言选用了 = 作为赋值操作符。Tompson 想把初始和赋值合并,因为 = 更短,所以就用了它。不过这导致了相等判断有歧义,所以引入了 ==。

Since assignment is about twice as frequent as equality testing in typical programs, it’s appropriate that the operator be half as long. - Tompson

  • 因为 C 的影响力,现代大部分编程语言使用了 =