您现在的位置:首页 > 学术研究 > 读书笔记 > 计算机语言
计算机语言
[发布时间:2003-05-01  阅读次数: 12865]

二.结构化程序设计语言

1971年,被称为PASCAL语言之父的著名瑞士计算机科学家尼克劳斯·威茨在4月份的《Communications of ACM》上发表了“通过逐步求精方式开发程序”(“Program Development by Stepwise Refinement”)的论文,首次提出了“结构化程序设计”(Structured Programming)的概念。这个概念的重点是:将编制程序的工作分若干步进行,逐步求精。第一步编出的程序抽象程度最高,第二步编出的程序抽象程度有所降低,……,最后一步编出的程序即为可执行的程序。用这种方法编程,似乎复杂,实际上优点很多,可使程序易读、易写、易调试、易维护,也易于保证程序的正确性及验证其正确性。同时,结构化程序设计又提出了程序的三种基本结构——顺序、循环和分支。威茨提出的这种结构化程序设计方法又称为“自顶向下”或“逐步求精”法,在程序设计领域引发了一场革命,成为程序开发的一个标准方法,尤其是在后来发展起来的软件工程中获得广泛应用。

七十年代初,结构化程序设计的思想孵化出两种结构化程序设计语言,一种是PASCAL语言,另一种是C语言。这两种语言的语法结构基本上是等价的,它们都是通过函数和过程等语言特性来构成结构化程序设计的基础。但是很主要的区别在于PASCAL语言强调的是语言的可读性,因此PASCAL语言至今成为学习算法和数据结构等软件基础知识的教学语言;而C语言强调的是语言的简洁性以及高效性,因此C语言成为之后几十年中主流的软件开发语言,高效性使C语言的地位已相当于一种“高级汇编语言”。

计算机本身是不能直接识别高级语言的,必须将高级语言的程序翻译成计算机能识别的机器指令,计算机才能执行。这个翻译的工作是由“编译系统”软件来完成的。不同类型的计算机上使用的翻译软件是不同的。因此,在一台计算机上能运行某一种高级语言程序的条件是:必须在此计算机系统上配有此语言的编译系统。例如要在一台微机上运行C语言程序,必须先将为该微机设计的C编译系统装入计算机内。

结构化程序设计引入了一个很重要的概念──抽象。抽象可定义为忽略事物或系统的细节而集中注意力于其本质的方面。在结构化程序中,知道一个执行特定任务的给定过程已经足够了,该任务如何被执行并不重要。而该过程是可靠的,可以在不必知道它如何正确地完成其功能的情况下使用。即任何一个完成明确定义功能的操作都可以被使用者当作单个的实体看待,这被称作过程抽象。

然而,随着程序复杂程度的增加,对其处理的基本数据类型的依赖也增加。程序中的数据结构与在其上进行的操作同样重要。而且随着程序大小的增长,这一点变得更为明显。在一个结构化程序中的许多过程中要处理数据类型。当那些数据类型发生变化时,程序中对那些数据类型起作用的每个地方都必须加以修改。这在包含成千上万行程序、几百个函数的程序中可能是十分花费时间的,而且可能经常遇到挫折。

于是,人们想到了把数据类型和施加于该类型的操作结合到一起,从而产生了数据抽象的概念。数据抽象是对数据而言,而功能抽象是对操作而言。所谓数据抽象,就是定义了数据类型和施加于该类型对象的操作,并限定了对象的值只能通过使用这些操作修改和观察。用数据抽象,就可以在不必关心其具体实现细节的情况下使用数据结构和数据项。

而数据抽象,正是面向对象程序设计的基础。

三.面向对象的语言

面向对象的思想是一步一步发展起来的,并不像结构化思想基本出自某一个大师之手。如今的面向对象语言,从50年代的LISP语言中引入了动态连编的概念和交互式开发环境的思想,从60年代开发的Simula语言中引入了类的概念和继承性机制,以及受到了70年代末的CLU语言,Modula-2语言和Ada语言都提供数据抽象机制的影响。

许多专家认为,面向对象方法的基本要点首次在Simula语言中得到了表达和实现。Simula语言是Ole Dahl和Krysten Nygaard等人在1967年设计的,它是在Algol60语言的基础上发展起来的。最初是为了模拟离散事件而设计,后成为一个通用的程序设计语言。在Simula中引入了类、对象、继承和共行子程序等概念。但由于当时软硬件条件的限制,这一特点未能引起足够的重视。

70年代出现的CLU、并发Pascal、Ada和Modula-2等编程语言对抽象数据类型理论的发展起到了重要作用。这些语言支持数据与操作的封装。例如,Ada语言中的Package和并发Pasacal语言中的class和monitor,都是数据与操作的结合体并且支持信息隐蔽,已经是比较完善的封装概念。但这些语言都不支持继承。

第一个纯面向对象语言Smalltalk于70年代中由Xerox公司Palo Alto研究中心Alan Kay开发。除了吸收了Simula的基本面向对象概念外,Smalltalk亦受了LISP的很大影响:无类型设施,名的动态结合和运行时刻的类型检查。特别是Smalltalk为了概念上的一致,把所有成分都作为对象,并引进了元类的概念。Smalltalk几经修改,终于在1981年推出了Smalltalk-80,获得了商业上的广泛接受。Smalltalk-80实现了集成化的交互式程序设计环境,把面向对象的思想从语言级提高到程序员接口级。

首页上一页下一页尾页当前为2/5页