在大多数早期算法书籍中,都<-
提到分配和=
比较。但是现在唯一不=
用于分配的:=
语言是Pascal()和玩具语言(如COOL)。是什么导致现代编程语言转变=
为含义分配,而不是数学上的相等性含义?
←
在算法工作中仍然很常见;它是编写算法时分配的三种常见符号之一(其他是:=
和=
)。仅仅因为程序员全部使用=
并不意味着数学家都放弃了←
。
===
很好。
在大多数早期算法书籍中,都<-
提到分配和=
比较。但是现在唯一不=
用于分配的:=
语言是Pascal()和玩具语言(如COOL)。是什么导致现代编程语言转变=
为含义分配,而不是数学上的相等性含义?
←
在算法工作中仍然很常见;它是编写算法时分配的三种常见符号之一(其他是:=
和=
)。仅仅因为程序员全部使用=
并不意味着数学家都放弃了←
。
===
很好。
Answers:
根据Wikipedia的说法,使用均值分配可以追溯到亨氏·鲁迪斯豪瑟(Heinz Rutishauser)于1949年至1951年设计的语言Superplan,该语言在Fortran中特别流行:
一个坏主意的臭名昭著的例子是选择等号表示分配。它可以追溯到1957年的Fortran,并被众多语言设计师盲目地复制。为什么这是个坏主意?因为它颠覆了一个世纪的传统,让“ =”表示对平等的比较,所以谓词是对还是错。但是,Fortran的意思是分配,即平等的执行。在这种情况下,操作数不相等:左操作数(变量)应等于右操作数(表达式)。x = y并不等同于y = x。
—尼克劳斯·沃思(Niklaus Wirth),好主意,透过窥镜
Konrad Zuse还使用了Plankalkul的等号,这启发了Rutishauser的Superplan,尽管从来没有为此设计过编译器。他为什么选择等号?我猜你不得不问他。
=
既用作谓词又用于定义变量,例如在“让x = 4”中。如果y = 4,则√(x-y)为零。之所以可行,是因为应该以声明方式而不是命令方式理解数学符号。函数式编程语言(例如ML系列)默认为非可变变量,因此可以继续=
以其双重角色使用而不会出现任何问题。或更准确地说,=
既是运算符又是let
语法的一部分。
=
因此只是一个谓词,与在其他任何地方使用的相同。请注意,根据上下文,“ Let x = 4”也可能意味着“ Let x∈ℝand x = 4”。
但是当我在学校数学时,“让x = 123”
是常见的措辞。Basic的早期版本在等号之前坚持使用“ let”关键字。因此,基本上可以理解为“让”完成了。
关键驱动程序通常不被考虑,但是在您实际输入时非常重要。
有两种可行的输入设备,
电传打字机通常用于学术和军事商店,在更多的商业商店中使用打卡机。因此,像Pascal这样的学术语言支持小写字母标识符和“:=”这样的“明智”符号来分配。针对更多商业读者的语言假定打孔卡将是输入的主要形式,因此,仅大写的语言(如FORTRAN和COBOL)对“:;> <”字符的支持有限,而这些字符在标准按键上不可用。
顺便说一句,在早期的FORTRAN中,对于使用“ =”进行赋值并没有歧义,因为使用“ .LT。”,“。LE。”,“。EQ。”,“。GE”进行了比较。和“ .GT”。句法。
let x = 123
更相似assert(x == 123)
。
===
...