对数学家来说, $$x = x + 1$$这一行是一个无解的方程:两边同减 $x$,剩下 $0 = 1$。对程序员来说,这是最常见的一行之一,意思是“取出 $x$ 的值,加一,把结果存回 $x$”。同一个符号,在两个群体里做着相反的工作:在那边它断言一个等式;在这边它命令一次赋值。 Fortran 选择了等号 始作俑者是 Fortran,第一种被广泛使用的高级编程语言,由约翰·巴克斯领导的团队在 IBM 创造,1957 年发布。程序打在穿孔卡片上,一张卡片一条语句,而穿孔机的键盘上符号很少。为了说“把值 $27$ 存进 $N$”,Fortran 写作 N=27,就像工程师的公式一样。 打着 Fortran 语句的穿孔卡片。第二张卡片上的 N=27 并不是断言 N 等于 27,而是命令把 27 存进 N。Tangopaso · 维基共享资源 · 公共领域 这个选择出于实际考虑,并且延续了下来。但它让那些把编程看作数学的人感到不安。由一个国际委员会在 1958 至 1960 年间创造的 Algol 语言,用另一个符号 := 表示赋值,而把 = 留给比较。瑞士人尼克劳斯·维尔特在 Pascal(1970)中保留了 :=,高德纳在《计算机程序设计艺术》中用箭头写赋值:$x \leftarrow x + 1$。艾弗森的 APL 也用箭头,统计语言 R 则把它继承为 <-。