论文部分内容阅读
[摘要]软件是与硬件相对应的概念,随着计算机技术及其应用领域的逐步扩大,软件技术的发展与研发日益受到广泛的重视,对计算机软件开发语言的发展进行初步的梳理,并对历史上的三个主要发展阶段进行介绍,希望能够对搞好计算机软件开发有所帮助。
[关键词]软件开发 面向过程语言 面向对象语言 面向方面语言
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)1010074-01
软件开发语言是软件研发的重要支撑。历史的来看,软件开发语言经历了从低级到高级,从不成熟、不完善到逐步成熟和完善的发展过程。随着软件开发语言的进一步发展,其本身也经历了从面向过程的语言、面向对象语言到面向方面语言的三个发展阶段,每一时期的软件语言都有着其自身的特征,成为软件语言发展的重要历史阶段。
一、面向过程的语言
随着软件技术的发展,20世纪70年代出现了高级语言,如PASCAL和C语言,这些高级语言有着共同的特征,即程序是由数据结构和算法构成的,我们把这类开发语言称为面向过程语言,面向过程语言的出现与以前的机器语言和汇编语言相比是个巨大的进步。它不再要求程序编写者熟悉所用的计算机硬件特性,使他们专注于实际应用问题的解决。软件从此摆脱了硬件的束缚,作为一个独立的产业而出现和发展。面向过程的结构化程序设计语言强调功能的抽象和程序的模块化,它将解决问题的过程看作是一个处理的过程。具体来说其具有以下四大特征:
1.在结构化程序设计中,模块是对功能的抽象,每个模块都是一个处理单位,它可以输入和输出。
2.在结构化程序设计中,过程是一个独立的实体,显示其为它的使用者所见,而且,对于相同的输入参数,每一次的过程调用,其输出的结果是相同的。
3.在结构化程序设计方法中,其核心是逐步细化。这种自上向下的方法是通过不断在程序的控制结构中增加细节来开发程序,它生产的模块往往为了满足特定的需要,其可重用性较差。
二、面向对象的语言
(一)面向对象是一种认识学
人类的认识方法主要有以下两种形式:一种,从一般到特殊的演绎方法。以学校为例,最初人们看到的是“学校”这样一个词,在对其进行分类的过程中可以不断理解这个词的含义,进而知道学校有大学、中学、小学之分类的过程中等等。另一种是从特殊到一般的归纳法。我们看到一只黑猫,它是一个对象,明天又看到一只白猫,它也是一个对象,这两个对象除了颜色不一样外,其他有关猫的特征完全一样,而黑猫与白猫都是这个“猫”类的实例,因此,面向对象很适合这种认知方式的组合。面向对象提供了从一般到特殊的演绎手段,又提供了从特殊到一般的归纳形式,这种分类、归纳的方法在面向对象程序设计技术中是很重要。
(二)面向对象语言的核心概念
在问题空间中,我们将客观的实体称为对象,不同的对象之间的相互作用和相互通信构成了完整的客观世界,如何将问题空间的这一思维模型直接映射到程序空间?纵观诸多面向对象的程序设计语言,其核心的概念是对象继承性和多态性。数据封装就是将一个数据和与这个数据有关的操作集合封装在一起,形成了一个能动的实体,称之为对象。用户不必知道对象行为的实现细节,只需根据对象提供的外部性接口访问对象,例如,我们可能使用一个数据来存储在屏幕上画一个字符所需要的字型信息,如何显示、缩放、增强亮度和设置字符颜色?在传统的语言中,解决方法是,将数据结构和相关的函数放入一个可编译的源文件中,把数据和函数作为模块看待,这当然是朝着正确的方向迈出了一步。但是这还不够,在数据和函数之间没有明确的关系。假如决定用链表取代数组,而另一位做同一工作的程序员则可能认为,他有更好的方法来访问这些字形型数据,于是他编写了一些自己直接操纵这些数组的函数。可问题是,那里再也没有数组了,当程序联调的时候,将产生错误。实际上,和操纵它的函数之间存在着明确的关系。继承性是面向对象语言的另一个重要概念。继承性是面向对象语言的一个重要特性,是一个对象获得另一个对象特征的过程,继承性支持分类的概念,绝大多数的知识都可以通过层次分类进行管理。在客观世界中,存在着整体和世界的关系、一般和特殊的关系,继承是将一般和特殊的关系模型化了。在面向对象语言中,类的功能支持这种层次机制除了根结点外,每个类都从它的基类那里继承所有的数据和操作,并扩充自己的特殊数据和操作。基类抽象出共同特征,子类表达其差别,有了类的层次结构和继承性,不同对象的共同性质只需要定义一次,用户就可以充分利用已有的类,这符合软件重用的目的。面向对象的另一个概念是多态性。所谓的多态性,既是一个名字,多种语义;或者说相同的界面,多种实现。用户在使用函数编程时,他关心的是该函数的功能及其使用的界面,并不需要了解函数是哪一种方法实现的。就是说,在设计这一级上,软件设计人员只关心施加在对象上的动作是什么,而不牵涉如何实现这个动作以及实现这个动作有多少种方法等细节?
三、面向方面的语言
面向方面语言就是针对面向对象语言的顾客而产生的这些问题。正如面向对象的语言以对象为角度进行编程、面向方面的语言以“方面”为角度进行编程。首先将用户关心的方面进行分解、对分解的各个方面进行相应的实现。例如对于所示的系、编程的立足点不再以对象为立足点、而是以业务逻辑持久存储;安全性;日志四个方面为出发点进行编程。这四个方面在编程时是相互独立的,在运行时是相互关联和相互作用的。面向方面的编程又是怎样体现这种关联性呢?面向方面的语言在方面定义上引入了告知切入点、联结点等机制实现方面之间的联系。根据程序中定义的这种关系由方面编织者(编译器或运行代码环境)实现方面的重新组合。构成一个含有各方面的相互作用的完整程序,当用户提出某个方面变化时。例如对系统的安全性提出了更高的变化要求时,我们只在安全性方面进行改动,不会影响到业务规则持久存储和日志这三个方面:也就是说,变化范围只有系统的,最后方面编织者再将各方面重新编织成一个程序体。
面向过程语言、面向对象语言和面向方面语言是软件开发语言的三个重要发展阶段,希望通过此三个阶段的介绍,有利于提高我们对相关问题的认识。
参考文献:
[1]朱福喜、张黔,《并发面向对象语言COOLⅢ的语义模型》,载《小型微型计算机系统》2001年12月.
[2]李文芳,《面向对象的特征在Java中的体现》,载《山西经济管理干部学院学报》2005年9月.
[3]郭明华,《面向对象语言与面向过程语言的特征及关系》,载《甘肃冶金》2005年9月.
[4]袁绍欣,《浅谈软件开发语言及其设计方法的演变和最新动态》,载《大众科技》2005年第9期.
[关键词]软件开发 面向过程语言 面向对象语言 面向方面语言
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)1010074-01
软件开发语言是软件研发的重要支撑。历史的来看,软件开发语言经历了从低级到高级,从不成熟、不完善到逐步成熟和完善的发展过程。随着软件开发语言的进一步发展,其本身也经历了从面向过程的语言、面向对象语言到面向方面语言的三个发展阶段,每一时期的软件语言都有着其自身的特征,成为软件语言发展的重要历史阶段。
一、面向过程的语言
随着软件技术的发展,20世纪70年代出现了高级语言,如PASCAL和C语言,这些高级语言有着共同的特征,即程序是由数据结构和算法构成的,我们把这类开发语言称为面向过程语言,面向过程语言的出现与以前的机器语言和汇编语言相比是个巨大的进步。它不再要求程序编写者熟悉所用的计算机硬件特性,使他们专注于实际应用问题的解决。软件从此摆脱了硬件的束缚,作为一个独立的产业而出现和发展。面向过程的结构化程序设计语言强调功能的抽象和程序的模块化,它将解决问题的过程看作是一个处理的过程。具体来说其具有以下四大特征:
1.在结构化程序设计中,模块是对功能的抽象,每个模块都是一个处理单位,它可以输入和输出。
2.在结构化程序设计中,过程是一个独立的实体,显示其为它的使用者所见,而且,对于相同的输入参数,每一次的过程调用,其输出的结果是相同的。
3.在结构化程序设计方法中,其核心是逐步细化。这种自上向下的方法是通过不断在程序的控制结构中增加细节来开发程序,它生产的模块往往为了满足特定的需要,其可重用性较差。
二、面向对象的语言
(一)面向对象是一种认识学
人类的认识方法主要有以下两种形式:一种,从一般到特殊的演绎方法。以学校为例,最初人们看到的是“学校”这样一个词,在对其进行分类的过程中可以不断理解这个词的含义,进而知道学校有大学、中学、小学之分类的过程中等等。另一种是从特殊到一般的归纳法。我们看到一只黑猫,它是一个对象,明天又看到一只白猫,它也是一个对象,这两个对象除了颜色不一样外,其他有关猫的特征完全一样,而黑猫与白猫都是这个“猫”类的实例,因此,面向对象很适合这种认知方式的组合。面向对象提供了从一般到特殊的演绎手段,又提供了从特殊到一般的归纳形式,这种分类、归纳的方法在面向对象程序设计技术中是很重要。
(二)面向对象语言的核心概念
在问题空间中,我们将客观的实体称为对象,不同的对象之间的相互作用和相互通信构成了完整的客观世界,如何将问题空间的这一思维模型直接映射到程序空间?纵观诸多面向对象的程序设计语言,其核心的概念是对象继承性和多态性。数据封装就是将一个数据和与这个数据有关的操作集合封装在一起,形成了一个能动的实体,称之为对象。用户不必知道对象行为的实现细节,只需根据对象提供的外部性接口访问对象,例如,我们可能使用一个数据来存储在屏幕上画一个字符所需要的字型信息,如何显示、缩放、增强亮度和设置字符颜色?在传统的语言中,解决方法是,将数据结构和相关的函数放入一个可编译的源文件中,把数据和函数作为模块看待,这当然是朝着正确的方向迈出了一步。但是这还不够,在数据和函数之间没有明确的关系。假如决定用链表取代数组,而另一位做同一工作的程序员则可能认为,他有更好的方法来访问这些字形型数据,于是他编写了一些自己直接操纵这些数组的函数。可问题是,那里再也没有数组了,当程序联调的时候,将产生错误。实际上,和操纵它的函数之间存在着明确的关系。继承性是面向对象语言的另一个重要概念。继承性是面向对象语言的一个重要特性,是一个对象获得另一个对象特征的过程,继承性支持分类的概念,绝大多数的知识都可以通过层次分类进行管理。在客观世界中,存在着整体和世界的关系、一般和特殊的关系,继承是将一般和特殊的关系模型化了。在面向对象语言中,类的功能支持这种层次机制除了根结点外,每个类都从它的基类那里继承所有的数据和操作,并扩充自己的特殊数据和操作。基类抽象出共同特征,子类表达其差别,有了类的层次结构和继承性,不同对象的共同性质只需要定义一次,用户就可以充分利用已有的类,这符合软件重用的目的。面向对象的另一个概念是多态性。所谓的多态性,既是一个名字,多种语义;或者说相同的界面,多种实现。用户在使用函数编程时,他关心的是该函数的功能及其使用的界面,并不需要了解函数是哪一种方法实现的。就是说,在设计这一级上,软件设计人员只关心施加在对象上的动作是什么,而不牵涉如何实现这个动作以及实现这个动作有多少种方法等细节?
三、面向方面的语言
面向方面语言就是针对面向对象语言的顾客而产生的这些问题。正如面向对象的语言以对象为角度进行编程、面向方面的语言以“方面”为角度进行编程。首先将用户关心的方面进行分解、对分解的各个方面进行相应的实现。例如对于所示的系、编程的立足点不再以对象为立足点、而是以业务逻辑持久存储;安全性;日志四个方面为出发点进行编程。这四个方面在编程时是相互独立的,在运行时是相互关联和相互作用的。面向方面的编程又是怎样体现这种关联性呢?面向方面的语言在方面定义上引入了告知切入点、联结点等机制实现方面之间的联系。根据程序中定义的这种关系由方面编织者(编译器或运行代码环境)实现方面的重新组合。构成一个含有各方面的相互作用的完整程序,当用户提出某个方面变化时。例如对系统的安全性提出了更高的变化要求时,我们只在安全性方面进行改动,不会影响到业务规则持久存储和日志这三个方面:也就是说,变化范围只有系统的,最后方面编织者再将各方面重新编织成一个程序体。
面向过程语言、面向对象语言和面向方面语言是软件开发语言的三个重要发展阶段,希望通过此三个阶段的介绍,有利于提高我们对相关问题的认识。
参考文献:
[1]朱福喜、张黔,《并发面向对象语言COOLⅢ的语义模型》,载《小型微型计算机系统》2001年12月.
[2]李文芳,《面向对象的特征在Java中的体现》,载《山西经济管理干部学院学报》2005年9月.
[3]郭明华,《面向对象语言与面向过程语言的特征及关系》,载《甘肃冶金》2005年9月.
[4]袁绍欣,《浅谈软件开发语言及其设计方法的演变和最新动态》,载《大众科技》2005年第9期.