抽象是计算思维的本质特征之一,也是计算学科中的一个非常重要的概念。抽象注重把握系统的本质内容,而忽略与系统当前目标无关的内容,是一种基本的认知过程和思维方式。
1.抽象的定义
抽象是指对实际事物进行人为处理,抽取所关心的、共同的、本质特性的属性,并对这些事物和特性属性进行描述,从而大大降低系统元素的数量。例如苹果、香蕉、生梨、葡萄、桃子等,它们共同的特性就是水果。得出水果概念的过程,就是一个抽象的过程。要抽象,就必须进行比较,没有比较就无法找到在本质上共同的部分。在抽象时,同与不同,决定于从什么角度上来抽象。抽象的角度取决于分析问题的目的。
2.计算的三个抽象层次
第一个抽象层次是“计算理论”,是信息处理机(如图灵机)的抽象。在这个层次上,信息处理机的工作特性(计算)是映射,即把一种信息映射成另一种信息。
第二个抽象层次是“信息表示与算法”,涉及输入、输出信息的选择,以及用来把一种信息变换成另一种信息的算法选择,它关注的问题是如何实现计算。计算的复杂度如何。
第三个抽象层次是“硬件”,这一层次关注的问题是在物理上如何实现这种信息的表示和算法。而一个算法可以用软件或硬件的形式来实现,如防火墙,也可以采用不同的技术途径来实现。
从理论上讲,最抽象的计算理论与最现实的机器硬件之间没有直接的关系,它们是相互独立的。而算法是一个中介,它既与计算理论关联,又与机器硬件关联。不过,从现实上看,这三个层次是相互关联的,即任何一个问题的计算,都是这三个层次相互协调的结果。(www.xing528.com)
3.程序设计中的抽象
计算机要解决客观世界的现实问题,首先必须要对客观事物进行抽象,即将现实世界中的事物、事件以及其他对象或概念用数据(符号)来表示,这样计算机才能运算处理。这里所指的数据主要包括数值、字符和字符串等多种形式。
实际上,抽象渗透在整个程序设计之中,它与程序设计语言有特别的双重关系。一方面,语言是软件人员实现抽象的工具;另一方面,语言本身就是处理机的抽象,它的目的是在这个处理机上实现的。早期的语言并未完全体现出抽象在程序设计中的重要作用,如机器语言、符号汇编语言等,直到20世纪50年代末设计出第一个高级语言,才为定义抽象机制提供了丰富内容。程序设计中的抽象主要包括两个方面:数据抽象和控制抽象。
(1)数据抽象。在早期的程序设计语言中,机器语言(包括早期的汇编语言)中数据具有最原始的形式,根本谈不上抽象。20世纪50年代末逐渐产生的FORTRAN、COBOL、ALGOL 60等高级语言,引入了数据类型,实现了数据抽象。例如,在C语言中,有如下变量定义语句:int a;这里变量a实际上就是对应某个存储单元的地址,也就是对存储单元的抽象;变量a的值实际是两个连续存储单元的内容,实际上是对这两个存储单元中的二进制代码的抽象。对a的操作要按整数运算规则进行。实际上,类型规定了人们对二进制代码的解释,也就规定了一组值的集合和可以对其施加的操作的集合。
在类型的基础上可以定义数据包或类,类的名字所代表的数据更加抽象,规定了其中的一些不同类型的数据,以及这些数据所允许的计算(即操作)。类名代表了一个复杂的数据。
数据的抽象使人们能在更高的层次上操纵数据。每个高层数据运算的实现在其内部完成。
(2)控制抽象。控制抽象通过把基本操作组合成任意复杂的模式,使计算模型化。简单地说,控制抽象隐含了程序控制机制,而不必说明它的内部细节。控制结构描述语句或一组语句(程序单位)执行的顺序。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。