
1.1 计算机语言的发展历程
计算机的数学理论基础是图灵于1937年提出的图灵机模型,而现代电子计算机的体系结构及实际计算模型则是来自冯·诺依曼1946年提出的“程序放入内存,顺序执行”的思想,因此,现在的计算机通常被称为冯·诺依曼计算机。计算机语言的发展历程也从此正式开始,计算机语言的使用人员也开始被称为程序员。
1.1.1 计算机语言的演化
早期程序员们使用机器语言来进行编程运算,直接对以数字表示的机器代码进行操作。后来为了便于阅读,就将机器代码以英文字符串来表示,于是出现了汇编语言。1956年首先在IBM公司的计算机上实现的由美国的计算机科学家巴科斯设计的FORTRAN语言,标志着高级语言的到来。FORTRAN语言以其简洁性、高效性,成为此后几十年科学和工程计算的主流语言,除FORTRAN语言以外,还有ALGOL60等科学和工程计算语言。随着计算机应用的深入,产生了使用计算机来进行商业管理的需求,于是COBOL这类商业和行政管理语言出现了,并一直流行至今。计算机语言的演化过程如图1.1所示。

图1.1 计算机语言的演化
早期的计算机语言都是面向计算机专业人员,为了普及计算机语言,使计算机更为大众化,出现了入门级的BASIC语言,至今BASIC语言仍然是绝大多数软件开发人员接触到的第一门计算机语言,同时也是最流行的计算机语言之一。
20 世纪70 年代初,结构化程序设计的思想孵化出两种结构化程序设计语言,一种是PASCAL语言,另一种是C语言。这两种语言的语法结构基本上是等价的,它们都是通过函数和过程等语言特性来构成结构化程序设计的基础。但是其主要的区别在于PASCAL语言强调的是语言的可读性,因此PASCAL语言至今成为学习算法和数据结构等软件基础知识的教学语言;而C语言强调的是语言的简洁性及高效性,因此C语言成为之后几十年中主流的软件开发语言,高效性使C语言的地位已相当于一种“高级汇编语言”。
虽然面向对象的思想可以追溯到20世纪60年代,但是面向对象的思想被普遍接受还是得益于面向对象语言的功劳。在众多的面向对象语言当中,最为突出的就是C++语言。C++语言是在80年代初由AT&T贝尔实验室Bjarne Stroustrup在C语言的基础上设计并实现的。C++语言继承了C语言的所有优点,如简洁性和高效性,同时引入了面向对象的思想,如类、封装、继承、多态等。C++语言的这些特性使得C程序员在学习面向对象思想的同时不必放弃已有的知识和经验,原有的软件积累同样可以利用,同时面向对象的设计开发方法使得软件的分析、设计、构造更加完美,因此,C++语言借助C语言的庞大程序员队伍,成为主流的面向对象语言,并促使面向对象的思想被普遍接受。C++语言是一种混合型的面向对象语言。像任何人类的自然语言一样,C++语言提供一种表达思想和概念的方法,当问题变得大而复杂时,使用C++语言来解决问题将会比使用其他语言层次清晰,因而更加容易、更加灵活。
1.1.2 计算机语言的发展史
计算机语言的发展历史是人们不断追求更高的模块化、抽象和封装的历史。最初的抽象是以计算机为中心的:首先是将以0和1表示的二进制值抽象为字节、整型、长整型、浮点型等各种预定义的数据类型,然后,为了表达更复杂的数据,出现了以结构表示的自定义数据类型。除了数据的抽象以外,计算机指令也有一个抽象过程:从表达式和语句到函数和过程。
结构化程序设计是以计算机为中心的抽象方式的体现,它所提倡的数据和代码分开的思想和计算机硬件的处理机制是相符的。20 世纪60 年代末开始出现的软件危机迫使人们去寻找解决办法,解决软件危机的努力主要朝两个方向发展,一是针对软件开发过程的工程管理,提出软件开发的生命周期模型,包括瀑布式模型、快速原型法、螺旋模型、喷泉模型等;一是从对软件开发过程中分析、设计的方法的研究入手,提出了结构化程序设计方法,一时间,“算法+数据结构=程序”几乎成为软件开发的唯一准则。结构化程序设计方法从计算机发展角度来看是自然而然的,但是,抽象的过程应该是以现实世界的对象为中心的,于是面向对象的方法就走到前台来,为软件开发从分析建模到设计实现提供了统一的工具。
面向对象技术及建立在它的基础之上的组件技术为彻底解决软件危机铺平了道路。原有的高级语言,如BASIC、PASCAL等结合可视化的界面编程技术、面向对象思想、数据库技术,产生了所谓的第四代语言,如Visual Basic、Delphi等。Visual Basic的语言基础是BASIC语言,Delphi的语言基础是PASCAL语言,这两种语言都是软件开发人员所熟知的语言。Visual Basic和Delphi是目前应用软件的主流开发工具。
人工智能一直是人们长期以来的梦想,从图灵开始,半个多世纪以来,计算机科学家们对人工智能进行不懈的探索,这期间,有两种主要的人工智能研究的语言工具,一种是LISP表处理语言,一种是PROGLOG语言。常有人称二者为第五代语言,还不如称其为“有逻辑推理功能的语言”更确切。
Internet诞生在60 年代末,此后的二十几年一直是在缓慢地发展,直到90年代,HTML语言及HTML图文浏览器Mosaic的出现,使得Internet在此后十年间得到前所未有的发展。从HTML,到DHTML,再到XML,Web存储格式语言为信息的发布、信息的交流起到了极大的作用。这些Web存储格式语言与以往的计算机语言有很大的不同,它们是一种标记语言,被用来创建文档结构。
在Web技术的发展过程中,真正可以称为计算机语言并得到极大的普及的是Java语言,它由各个平台解释器来负责解释执行。Java是面向对象的网络语言,其独特的网络特性包括:平台独立性、动态代码下载、为多媒体功能而设计的多线程、为通过Internet快速传送而设计的紧凑的代码格式。如图1.2所示体现了当前计算机语言的发展史。
在计算机语言的发展过程中,先后出现的语言至少有上百上千种,但是真正能普及应用的计算机语言却是屈指可数的。一种计算机语言要能流行、普及,除了要有独有的特色以外,还要切合当时的应用需求。计算机语言不应该只是思维放大工具,事实上,计算机语言已经成为我们思维的一部分。计算机语言是朝着自然语言的方向发展的,它的最终目标应该是成为人类与计算机之间的很自然的交流工具,人可以通过这样的语言将自己所具有的知识,或者自己的思想、情感、愿望等表达给计算机,这样的语言可以称为知识语言或智能语言。

图1.2 计算机语言的发展史