程序设计语言是如何诞生的? 前人是基于什么目的发明了程序设计语言? 本章我们来回顾一下程序设计语言诞生的历史。 2.1 程序设计语言诞生的历史 在第1章中我们讲到,通过比较旧事物和新事物可以加深理解。其实,了解旧事物还有另外一个好处。 很多事物都是在过去的基础上,通过不断积累创造出来的。新事物是在充分了解了旧事物的基础上发展起来的。现在那些看似理所当然的事物在过去可能不为世人所知。因此,对于初学者来说,学会从前人的视角来考虑问题,是十分有益的。 那么,我们赶紧来回顾一下历史吧。程序设计语言是如何产生的呢?创造程序设计语言的目的是什么呢?过去的语言和现今的语言有何共通点呢? 程序设计语言的产生是为了让人们的生活、工作更加便捷。为了说明这一点,我们先来看一下程序设计语言诞生的历史,以及语言设计者的设计思想。 连接电缆 大约半世纪以前,程序设计是个什么概念呢? 1946年,世界上第一台电子计算机——ENIAC(埃尼阿克,Electronic Numerical Integrator and Computer)问世。它可以改变计算方式,即可以更改程序。用现在的话来讲,它是一台可编程计算机。但是其编程方法和如今大家熟知的程序设计大相径庭。 ENIAC是一台超大型的计算机,使用了17 468个真空管,长达24米。试想一下,在某小学的游泳池内,沿25米长的泳道,摆放上布满真空管的机械装置,这是怎样的一幅场景! 当时的程序设计就是指把这台计算机不同的端口通过电缆连接起来(图2.1)。每次更改程序时都要重新调整电缆连接方式,实在费劲。有没有方便一点的方式呢? 图2.1 ENIAC的编程场景 程序内置 1949年,EDSAC(爱达赛克,Electronic Delay Storage Automatic Calculator,电子延迟存储自动计算机)问世。这是一种通过纸带打点的方式来记录和读取数据的计算机(图2.2)。程序作为数据通过纸带输入。不需要重新连接电缆,只需要让计算机不断读取纸带上的数据就可以更改程序。这样一来,程序的更改变得简单易行。 图2.2 纸带 但是人们要读懂这种程序绝非易事。因为这毕竟只是一种供机器(计算机)阅读的语言,即机器语言。在输入纸带上,每列最多有5个孔用来记录数据,其他的小孔用于纸带传送。程序只能通过这5个孔表现出来。A FORTRAN语言问世 直到1954年,与大家现在使用的语言类似的程序设计语言才被发明出来。这就是FORTRAN。B它的全称是Formula Translating System (公式翻译系统)。现在,我们常用X*Y+Z来表达“X乘以Y再加Z”。最早实现这一点的就是FORTRAN。将公式转化为机器语言是FORTRAN语言的特点之一。 在那个年代,人们普遍认为只有用机器语言才能写出高效的程序。C A 读者如有兴趣了解EDSAC程序和它的执行过程,可以到笔者设计的基于浏览器的EDSAC仿真器上检验一下。http://nhiro.org/learn_language/repos/EDSAC-on-browser/index.html B 这并不是说FORTRAN是最早的程序设计语言。哪一种语言最早出现仍然众说纷纭。在此之前就有许多种语言。大多数读者脑海中的程序设计语言应该不是LISP语言、FORTH语言,也不是汇编语言吧。 C 参见Ravi Sethi的著作Programming Languages: Concepts and Constructs。中文版为《程序设计语言: 概念和结构(原书第2版)》,由机械工业出版社于2002年出版,裘宗燕等译。 实际上,使用FORTRAN语言编译出来机器语言,与一个熟练的程序设计者直接手写机器语言相比,效率更低。但因FORTRAN语言的可读性强且代码编写量大大减少,它还是俘获了众多用户的心。 1979年,FORTRAN的设计者John Backus说道:我的大部分成果源自我的懒惰A。因为我不喜欢写程序,所以我设计出了能轻松编写程序的系统B。