翻译(1): 为什么大多数编程语言里,= 号被用来做赋值操作符? 您所在的位置:网站首页 入境旅游人数英文 翻译(1): 为什么大多数编程语言里,= 号被用来做赋值操作符?

翻译(1): 为什么大多数编程语言里,= 号被用来做赋值操作符?

2024-04-15 05:35| 来源: 网络整理| 查看: 265

原文:equals-as-assignment: https://www.hillelwayne.com/post/equals-as-assignment/

在这篇文章里,作者对这个问题做了一下考古。这些语言里面,初始化、赋值、相等三种操作符的变迁。这个内容很有意思,文章中提到的编程语言以及编程语言的发明者线索众多,我很感兴趣。以下做一个概要翻译笔记,同时把涉及到的这些编程语言和编程语言发明者的维基百科中英文链接索引出来。作为一个有趣的索引,方便日后查询。

60年代最早的四大语言里,这三种动作的符号分别如下:

FORTRAN II: = = .EQ. COBOL: INITIALIZE MOVE EQUAL ALGOL-60: N/A := = LISP: let set equal

ALGOL-60由于语言里并不原生支持IO,导致其虽然在编程语言的历史上影响很大,但可能也是最不实用的语言,并且,它并没有特别的符号表示初始化动作,而是通过类型+变量名(interger x)的方式定义变量,然后再赋值。

但是由于ALGOL-60语言很强大(注:从今天的角度来看可能很难体会到底强大在哪里,光理解古老的语法都看上去很麻烦),于是1963年Christopher Strachey(University of Cambridge,早期语言不是从实验室就是学校出来的感觉)在ALGOL上加了一堆特性后,捣鼓出了CPL语言,把初始化变量的方法改成了integer x = 5这种方式。

CPL里有三种初始化:= 表示初始化为一个值,≃ 表示初始化为一个引用,如果x≃y,那么y的改动,x也跟着被改动。但是x≃y+1会导致程序崩溃(囧) ,另外还有一个「总是替换」的初始化≡,每次解释的时候,都会符号替换,不过不知道如果x≡x,会发生什么奇怪的事情(囧)。CPL里面初始化和相等都是用=号,但是在初始化之前有类型修饰,所以并不会产生二义性。

一年之后,Kenneth E. Iverson 发明了APL语言,这个语言使用←来表示赋值。显然,键盘上并没有对应的按钮(囧)。 APL的后继编程语言J,J语言使用了=:来表示赋值。APL语言深度影响了S语言(一个统计方面的语言),S语言又深度影响了现代统计语言R,R语言里使用了



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有