计算机语言的发展历程

原创 2005年04月27日 20:12:00

 

语言是人们描述现实世界,表达自己思想观念的工具。而计算机语言是人与计算机交流的工具。一方面人类使用各种计算机语言将所关心的现实世界映射到计算机世界;另一方面,人类又可以通过计算机语言创造现实世界中并不存在的虚拟世界。

计算机的数学理论基础是图灵于1937年提出的图灵机模型,而现代电子计算机的体系结构及实际计算模型则是来自冯.诺依曼1946年提出的“程序放入内存,顺序执行”的思想,因此,现在的计算机通常被称为冯.诺依曼计算机。计算机语言的发展历程也从此正式开始,计算机语言的使用人员也开始被称为程序员。

1.计算机语言的历史回顾

早期程序员们使用机器语言来进行编程运算,直接对以数字表示的机器代码进行操作。后来为了便于阅读,就将机器代码以英文字符串来表示,于是出现了汇编语言。

1956年首先在IBM公司的计算机上实现的由美国的计算机科学家巴科斯设计FORTRAN语言,标志着高级语言的到来。FORTRAN语言以它的简洁、高效性,成为此后几十年科学和工程计算的主流语言, 除了FORTRAN以外,还有ALGOL60等科学和工程计算语言。随着计算机应用的深入,产生了使用计算机来进行商业管理的需求,于是COBOL这类商业和行政管理语言出现了,并一直流行至今。

早期的这些计算机语言都是面向计算机专业人员,为了普及计算机语言,使计算机更为大众化,出现了入门级的BASIC语言,至今BASIC语言仍然是绝大多数软件开发人员接触到的第一们计算机语言,同时也最流行的计算机语言。
七十年代初,结构化程序设计的思想孵化出两种结构化程序设计语言,一种是PASCAL语言,另一种是C语言。这两种语言的语法结构基本上是等价的,它们都是通过函数和过程等语言特性来构成结构化程序设计的基础。但是很主要的区别在于PASCAL语言强调的是语言的可读性,因此PASCAL语言至今成为学习算法和数据结构等软件基础知识的教学语言;而C语言强调的是语言的简洁性以及高效性,因此C语言成为之后几十年中主流的软件开发语言,高效性使C语言的地位已相当于一种“高级汇编语言”。

虽然面向对象的思想可以追溯到六十年代,但是面向对象思想被普遍接受还是得益于面向对象语言的功劳。在众多的面向对象语言当中,最为突出的就是C++语言。C++语言是在八十年代初由AT&T贝尔实验室Bjarne Stroustrup在C语言的基础上设计并实现的。C++语言继承了C语言的所有优点,如简洁性和高效性,同时引入了面向对象的思想,如类、封装、继承、多态等。C++语言的这些特性使得C程序员在学习面向对象思想的同时不必放弃已有的知识和经验,原有的软件积累同样可以利用,同时面向对象的设计开发方法使得软件的分析、设计、构造更为完美,因此,C++借助C语言的庞大程序员队伍,成为主流的面向对象语言,并促使面向对象的思想被普遍接受。C++是一种混合型的面向对象语言。象任何人类的自然语言一样,C++语言提供一种表达思想和概念的方法,当问题变得大而复杂时,使用C++语言来解决问题将会比使用其它语言更加容易、更加灵活。在最早的面向对象语言中,除了C++以外,还有一种纯面向对象语言也颇为流行,就是Smalltalk语言,产生并流行于七十末,八十年代初。
计算机语言的发展历史也是人们不断追求更高的模块化、抽象和封装的历史。最初的抽象是以计算机为中心的:首先是将以0和1表示的二进制值抽象为字节、整型、长整型、浮点型等各种预定义的数据类型,然后,为了表达更复杂的数据,出现了以结构表示的自定义数据类型。除了数据的抽象以外,计算机指令也有一个抽象过程:从表达式和语句,到函数和过程。结构化程序设计是以计算机为中心的抽象方式的体现,它所提倡的数据和代码分开的思想和计算机硬件的处理机制是相符的。六十年代末开始出现的软件危机迫使人们去寻找解决办法。解决软件危机的努力主要朝两个方向发展,一是针对软件开发过程的工程管理,提出软件开发的生命周期模型,包括:瀑布式模型、快速原型法、螺旋模型、喷泉模型等等;另外一个解决方法是从对软件开发过程中分析、设计的方法的研究入手,提出了结构化程序设计方法,一时间,“算法+数据结构=程序”几乎成为软件开发的唯一准则。结构化程序设计方法从计算机发展角度来看是自然而然的,但是,今天从抽象的角度来看,这种方法几乎可以说是一个时代错误。软件开发的主要目的就是描述和反映现实世界,现实世界就是由大大小小的对象构成:大到宇宙,小到原子,对象层层包裹;物质世界如此,人类社会的组成也是这样,从作为个体的人,到集体,到整个社会,都可以用对象加以描述。因此,抽象的过程应该是以现实世界的对象为中心的,于是面向对象的抽象方法就走到前台来,为软件开发从分析建模到设计实现提供统一的工具。面向对象技术以及建立在它的基础之上的组件技术为彻底解决软件危机铺平了道路。
大量应用的需求,使得软件开发效率提到日程上来。原有的高级语言,如BASIC、PASCAL等结合可视化的界面编程技术、面向对象思想、数据库技术,产生了所谓的第四代语言,如Visual Basic,Delphi等。Visual Basic的语言基础是BASIC语言,Delphi的语言基础是PASCAL,这两种语言都是软件开发人员所熟知的语言。Visual Basic和Delphi是目前应用软件的主流开发工具。

人工智能一直是人们长期以来的梦想,从图灵开始,半个多世纪以来,计算机科学家们对人工智能进行不懈的探索,这期间,有两种主要的人工智能研究的语言工具,一种是LISP表处理语言,另一种是PROGLOG语言。常有人称二者为第五代语言,但是这两种语言并没有为人工智能的研究带来实质上的进展,因此,不应该称其为第五代语言,我们只能期待着真正的第五代语言的出现。

Internet诞生在六十年代末,此后的二十几年,一直是在缓慢地发展,直到九十年代,HTML语言以及HTML图文浏览器Mosaic的出现,使得Internet在此后十年间得到前所未有的发展。从HTML,到DHTML,再到XML,Web存储格式语言为信息的发布、信息的交流起了极大的作用。这些Web存储格式语言与以往的计算机语言有很大的不同,它们是通过标签来标识内容和数据,从严格意义来说不应该称为计算机语言。

在Web技术的发展过程中,真正可以称为计算机语言,并得到极大的普及的是Java语言。Java是面向对象的网络语言,它的独特的网络特性包括:平台独立性、动态代码下载、为多媒体功能而设计的多线程、为通过Internet快速传送而设计的紧凑的代码格式。Java的工作方式与现有的桌面软件应用程序的工作方式不同。Java程序不需要存储在你的PC机上,而是存储在中央网络服务器。当你通过浏览器访问到一个带有Java小程序的Web页面时,Java小程序就会自动被下载运行。因为Java程序通常都很小的小程序,因此下载运行就会比大程序快得多。此外,版本控制在Java小程序这样的中央存储模式下更为容易。可以从任何一台具有Java虚拟机的机器上访问任何服务器上的Java程序。

九十年代,软件复用的需求和呼声促使组件技术从面向对象技术肥沃的土壤中迅速发芽、成长,并开始结出累累硕果。软件组件定义为自包含的、可编程的、可重用的、与语言无关的代码片段,这样的软件组件可以很容易地插入到应用程序中。软件组件暴露方法和属性,触发事件,并且通过名称或ID号全局表示自己。已经成为流行的标准的组件模型包括COM/DCOM组件模型和CORBA组件模型。组件技术是计算机软件发展的最新结果,也是半个多世纪以来所寻求的有效的软件构造方法。
在计算机语言的发展过程中,先后出现的语言至少有几千种,但是真正能普及应用的计算机语言却是屈指可数的。一种计算机语言要能流行普及,除了要有独有的特色以外,还要切合当时的应用需求。

计算机语言不应该只是思维放大工具,事实上,计算机语言已经成为我们思维的一部分。计算机语言是朝着自然语言的方向发展,它的最终目标应该是成为人类与计算机之间的很自然的交流工具,人可以通过这样的语言将自己所具有的知识,或者自己的思想、情感、愿望等表达给计算机,这样的语言可以称为知识语言或者是智能语言。到了这样的境界,“计算机”的名称应该改成别的什么,因为它与人类智能的界限已经不那么明显了。这就是人工智能,我们人类所梦寐以求的最高境界。

2.从数值运算,符号运算,到组件运算

简单回顾一下运算的历史:最早的运算属于数值运算,它针对阿拉伯数字进行加、减、乘、除等等数学计算;将数值运算抽象出来,数学家们发明了符号运算,这种运算的特征在于它并不指明实际的运算对象,而是以抽象的符号作为运算对象,通过对符号的演绎,数学家们构建了规模巨大的数学公式库,而物理学家们则利用符号运算作为工具来研究物质世界的作用机制。这两种运算的运算对象分别是数字和字符串,以组件的眼光来看,它们属于极特殊的两种组件。

运算是计算机语言的主要功能,早期的计算机语言如FORTRAN就主要是用于科学与工程计算,属于数值运算的范畴。对数学家以及工程人员来说,象公式推导这样的符号运算是极为有用,也是迫切需要的,于是相应的语言工具就出现了,这其中Mathematica语言工具是一种广泛流行的数学工具,它除了具有强大的数值运算功能外,最重要的核心就是它能进行公式推导。在Mathematica内部,有一种模式匹配方法作为其数学运算和公式推导的基础。

既然数值运算和符号运算的运算对象:数字和字符串属于特殊的两种组件类型,那么,除了数值运算与符号运算以外,还应该有组件的运算方式。目前只有KCOM Space这一软件开发平台实现了组件运算。作为一种纯粹的组件平台,KCOM Space的核心优势之一表现在它首先提出并实现了一种全新的运算方式 --- 组件运算。

在纯粹的组件空间里,对象不再只有数字和字符串,而包含有种类和形态丰富多样的组件。这就需要有一种对组件的运算方式,为此,KCOM Space提出并实现了组件运算:组件作为运算对象参与运算,比如定义组件变量、组件常量、组件数组,组件作为值赋给组件变量,组件作为参数用在方法调用中。

组件运算是数值运算和符号运算的发展和扩充,它包含前两种运算方式。组件运算的最明显的特征就是它的直观明了,降低了学习运用的难度,因此组件运算语言也将成为大众化的语言。通过组件运算语言,每一个人都可以将它自己领域的知识表示出来,这样表达出来的组件系统就是知识化的系统,积少成多就可以构成知识组件库。

组件运算的最直接的效果是带来了代码的可视化。面向对象编程语言如C++,在代码中使用组件都是通过一连串的代码来完成的:首先声明一个组件类的实例,然后每一个要设置的属性都需要有一个赋值代码行。相比之下,组件运算使得组件可以直接插入到代码之中,通过组件的属性对话框就可以以可视的方式设置所有待设的属性。这就是代码的可视化。第四代语言的最重要的特征就是界面可视化,也就是能以所见即所得的方式编排用户界面。组件运算引入的代码可视化,使可视化的程度又前进了一步,实现了完全可视化。如果说界面可视化为应用开发效率的提高带来一次飞跃,那么代码可视化再次为应用开发效率的提高带来又一次的飞跃。

组件运算是一个全新的运算领域,但却又是必然的运算发展趋势。结合检索和模式匹配以及控制机制,组件运算将构成未来知识系统的基础。

计算机语言的发展历程和发展趋势

计算机的数学理论基础是图灵于1937年提出的图灵机模型,而现代电子计算机的体系结构及实际计算模型则是来自冯.诺依曼1946年提出的“程序放入内存,顺序执行”的思想,因此,现在的计算机通常被称为冯.诺依...

计算机的发展历程

电子计算机又称电脑,是一种能够自动、高速、精确地完成各种信息存储、数据处理、数值计算、过程控制和数据传输的电子设备。1946年2月,世界上第一台电子计算机(如图1-1所示)在美国宾夕法尼亚大学问世,取...

【计算机网络知识扫盲】之一:网络的发展历程

互联网产生于1969年初,它的前身是阿帕网(ARPA网),是美国国防部高级研究计划管理局为准军事目的而建立的,开始时只连接了4台主机,这便是只有四个网点的“网络之父”;到了1972年公开展示时,由于学...

高级编程语言的发展历程

高级编程语言的发展历程(一) 2010-07-20 高级编程语言的创始纪上写道:“初,世间无语言,仅电路与连线。及大牛出,天地开,始有FORTRAN,LISP。ALGOL 随之,乃有万种语。...
  • junecau
  • junecau
  • 2011年08月08日 22:49
  • 1817

高级编程语言的发展历程(四)

原文出处:http://blog.youxu.info/ LISP 语言的历史和一些番外的八卦和有趣的逸事,其实值得花一本书讲。我打算用三篇文章扼要的介绍一下 LISP 的早期历...

高级编程语言的发展历程(一)

原文出处:http://blog.youxu.info/ 高级编程语言的创始纪上写道:“初,世间无语言,仅电路与连线。及大牛出,天地开,始有FORTRAN,LISP。ALGOL 随之...

Java 语言的发展历程

Java 是目前最流行的语言之一,Java 的应用相当广泛,Java是最流行的基于虚拟机的编程语言……这么火的Java,经历的怎么样的发展历程才走到今天的呢?Java 0Java的原型是1991年的O...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:计算机语言的发展历程
举报原因:
原因补充:

(最多只允许输入30个字)