免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 发帖

[科学] 世界上最早的编程语言是什么?

作者:匿名用户
链接:http://www.zhihu.com/question/26349738/answer/32538478
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

世界上最早的编程语言是1954年开始开发的FORTRAN语言。

然而,仔细想想看,到底什么才叫编程语言?如果将对机器的控制也堪称是编写“程序”的话。那么编程的起源便可以追溯到杰卡德编织机上面所使用的打孔纸带。

1801年,正值工业革命期间,杰卡德织机的发明使得提花编写的图案可以通过“程序”来自动完成。从前在各个家庭中也出现了自动纺织机,用户家庭作坊式的自动纺织生产,而杰卡德织机则相当于是这些家庭纺织机的放大版。我想那些自动纺织机应该也可以通过类似打孔纸带的东西来输入图案。

这种用打孔纸袋来控制机器的想法,对各个领域都产生了影响。例如在应该从事通用计算机研发的查尔斯·巴贝奇,就在自制的“分析机”上用打孔纸带来输入控制程序。遗憾的是,由于资金和其他一些问题,巴贝奇的生前未能将他的分析及制造出来。

不过,分析机的设计已经完成,用于分析及的程序也作为文档保留了下来。协助开发这些程序的,是英国诗人拜伦之女艾达·洛夫莱斯,据说他和巴贝奇是师兄姐妹系。如果不算分析及的设计者巴贝奇,那么世界上第一位程序员实际上是一位女性。为了纪念她,还有一种编程序言以她的名字Ada命名。还有Grace Hopper,第一个「bug」(真的是飞进机器的虫子)也可以说是她发现的的,虽然「bug」的这个词义早已有之;她创造了现代第一个编译器A-0 系统,以及商用电脑编程语言“COBOL”,被誉为COBOL之母。

说点题外话,在现在的编程界中,女性人数很少这一点是有目共睹的,尤其是在开源相关的活动上,男女比例达到100比1也不稀奇。其实,在计算机早期时代,有记录证明人们大都认为程序员是女性从事的工作,也许是人们将程序员和当时电话交换机的接线员(从业者中也是女性居多)看成同一类型的工作吧。

在被称为世界上第一台计算机的ENIAC(1946年)中,程序不是用打孔纸带,而是通过接电线的方式来输入的,我总觉得这是一种倒退。

不过,无论是接电线,还是打孔纸带,都不大可能实现复杂的程序,真正的程序恐怕还要等到存储程序式计算机出现之后。一般认为,世界上第一台存储程序式电子计算机,是1949年出现的EDSAC。

到了这个时候,所谓的“机器语言”计算正式问世了。当时的计算机程序都是用机器语言来编写的。那个时候不要说是编译器,连汇编器都还没发明出来呢,因此使用机器语言也是理所当然的事。

说到底,机器语言就是一串数字,将计算的步骤从指令表中查出对应的机器语言编码,再人工写成数列,这个工作可不容易。或者说,以前的人虽然没有意识到,但从我们现代人的角度来看,这种辛苦简直是难以置信。比如说,把引导程序的机器语言数列整个背下来,每次启动的时候手工输入进去;将机器语言指令表全部背下来,不用在纸上大草稿就能直接输入机器语言指令并正确运行。

然而有一天,有一个人忽然想到,查表这种工作本来应该是计算机最擅长的,那么让计算机自己来做不就好了吗?于是,人们用更加容易记忆的指令(助记符)来代替数值,并开发了一种能够自动生成机器语言的程序,这就是汇编器。

汇编器是用来解释“汇编语言”的程序,汇编语言中所使用的助记符,和计算机指令器一一对应的关系。早期的计算机主要还是用于数值计算,因此数学才是主宰。在数学的世界中,数百年来传承下来的“语言”就是算式,因此用接近算式的形式来编写计算机指令就显得相当方便。随后FORTRAN于1954年问世了。FORTRAN这个名字的意思是:运算成本高,因此编写和维护程序都被看成是非人的工作,而编程语言正是其开始摆脱非人性的象征。

其实,由助记符自动生成机器语言的汇编器,以及由人类比较易懂的算式型语句生成机器语言的编译器,当时都被认为是革新性的技术,被称为“自动编程”。此外,编译器开发技术的研究甚至被视为人工智能研究的一部分。
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

返回列表