抽象思维在计算机中的应用与体现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
抽象思维在计算机中的应用与体现
在计算机的学习与研究过程中,大家往往是“学其形式,掠其思维”。从抽象思维的角度,运用《数据结构》中的经典例子,来阐述在计算机的学习与研究过程中,应运用抽象思维的方法,达到“学其思维,掠其形式”的目的。同时力图论述,在计算机的应用中,应运用科学的思维方法和注重计算机科学理论的研究。
抽象思维是人们在认识活动中运用概念、判断、推理等思维形式,对客观现实进行间接的、概括的反映的过程。属于理性认识阶段。抽象思维凭借科学的抽象概念对事物的本质和客观世界发展的深远过程进行反映,使人们通过认识活动获得远远超出靠感觉器官直接感知的知识。科学的抽象是在概念中反映自然界或社会物质过程的内在本质的思想,它是在对事物的本质属性进行分析、综合、比较的基础上,抽取出事物的本质属性,撇开其非本质属性,使认识从感性的具体进入抽象的规定,形成概念。空洞的、臆造的、不可捉摸的抽象是不科学的抽象。科学的、合乎逻辑的抽象思维是在社会实践的基础上形成的。
抽象是对抗程序设计复杂性的一种武器,其目的是要简化程序设计的过程,在计算机学科中,抽象思维则在程序设计中有重要应用与体现。
当代程序设计语言中基本的两类抽象为:过程抽象和数据抽象。
过程抽象的概念是程序设计语言的设计中最老的概念之一,所有的子程序都是过程抽象。因为它们提供了一种方式,让一个程序说明要完成的某些过程,而不是要提供如何来完成的细节,以使程序设计的过程逐步趋于简单化。例如:当一个程序需要将某种类型的数值数据对象数组排序时,它通常使用一个子程序来进行这种排序过程,在程序中需要进行排序的位置。一条这样的语句:sort-int(list;list-lon)被放置于程序内,这个调用是实际排序过程的一种抽象,这种调用独立于被调用程序中的算法实现。
在子程序sort-int的情形,其重要属性是:将要排序的数组名字,它的元素的类型,数组的长度以及对于sort-int的调用,将导致数组被排序的这个事实。Sort-int所实现的算法是一个用户并不重要的属性。
过程抽象对于程序设计过程十分关键,这种将子程序中的算法的许多的细节抽象出来的能力,使得人们有可能来构造、阅读和理解大程序,现在被认为的大程序必须至少其有好几十万代码。
所有的子程序,包括并发子程序和异常处理程序都是过程抽象。
数据抽象必然跟随着过程抽象的发展而发展,因为每一种数据抽象中的一个不可分割的中心部分都是操作,而操作被定义成过程抽象。
数据抽象的动机之一与过程抽象的类似,它是对抗复杂性的一种武器,是使得大型以及复杂的程序比较容易管理的一种方法。
在程序设计当中,所有内置数据类型都是抽象数据类型,例如:
考虑一个浮点的数据类型。
在高级语言中,封装是抽象数据类型的先驱及支持机制。一个封装可以分割编译或者是独立编译,对一组相关的计算机提供了一个抽象系统和一个逻辑组织。
另外,在高级语言中的浮点类型也采用了数据抽象中的一个关键概念:信息隐藏,浮点存储单元中数据值的实际格式,是对用户隐藏的,除了那些可以用内置操作来构造的操作之外,不允许用户在这种类型的数据上创建新的操作,用户不能直接操纵浮点对象的实际表示的部分。
数据抽象在以下几种语言中的示例
1.SIMULA 67中的类。它定义了一种类型的描述,实例是应用户程序
的要求被动点地创建于堆上的,并且只能由指针变量来引用,类的对象是堆动态的。SIMULA 67对于数据抽象的贡献是类构造的封装功能。因此,SIMULA 67提供了封装数据对象及其操作的第一个构造—类
2.Ada中的抽象数据类型
Ada提供能用来模拟抽象数据类型的封装设施包括隐藏的内部表示的能力,其将封装称为包,包又分为说明包与体包。说明包提供封装接口,体包提供在说明中被命名的实体的实现。对于信息隐藏,用户可以选择产生一个对客户完全可见的实体,也可以仅仅提供接口信息。因此,Ada提供了可以用来模拟抽象数据类型的封装。
3.C++中的抽象数据类型
C++的类是一种数据类型的描述,在类中被定义的数据被称为数据成员,而在一个类中被定义的函数被称为成员函数,可见C++是由类来提供数据抽象。
4.Java中的抽象数据类型
Java对抽象数据类型的支持与C++类似,但也有重要的不同,Java中所有用户定义数据类型都是类,并且所有对象都从堆上分配并通过引用变量来访问,Java中的了程序只能够在类中被定义。此外对于有参数的抽象数据类型,Ada与C++都允许它们的抽象数据类型具有参数,Ada是通过它的包,而C++是通过它的模板类。
用户自定义的抽象数据类型应该提供与浮点类型所提供的相同特征:(1)一种类型定义。它允许程序单元声明这种类型的变量但隐藏这些变量的表示(2)一组操作来操纵这种类型的对象。
数据抽象的目标是允许程序来定义具有内置类型的特征及行为的数据类型,抽象数据类型的两个主要特征是:将数据对象和与它们相关联的操作包装在一起以及信息隐藏,一种语言可以直接支持抽象数据类型或者使用更为一般的封装来模拟抽象数据类型。
抽象数据类型的概念以及它们在程序设计中的应用是作为工程学科的程序设计发展的里程碑,尽管这种概念相对简单,但是直到语言被设计来支持它时,它的使用才是方便,安全的。
虽然抽象思维在计算机中应用有诸多方面,但任何事物的发展与形成都是有其相对规律的,就像抽象思维和平衡量化都是相互共存的。下面就对平衡量化的相关知识做以对抽象的理解。
平衡就是保证开发过程中考虑各方面,如性能进度与成本,测试与成本,可行性与技术先进性。
在软件测试中需要进行测试管理,目的在于通过对产品的整个测试流程进行控制和管理,从而提高软件测试的管理水平,确保开发产品和质量,进一步提高产品的竞争力,也就是说要平衡各方面的关系。
量化就是把经过抽样得到的瞬时值,将其幅度离散,即用一组规定的电平,把瞬时抽样值用最接近的电平值来表示。
在预测编码中,较典型的方法是:自适应差分脉冲编码调制和差分脉冲编码调制。
在PCMC脉冲编码调制系统中,原始的模拟信号,首先经过时间采样,然后将每一样值进行量化,作为数字信号传输,为了压缩传输的数码,可以不对每一样值进行量化,而是预测下一个样值,并量化实际值与预测值之间的差,这是差分脉冲编码调制。
自适应差分脉冲调制进一步改善量化性能或压缩数据率的方法,是来用自适应量化或自适应预测,任何一种采用自适应方法都称为自适应差分脉冲调制。
抽象思维方法本身随着人类文明的进化也在不断演化。从大类看,抽象思维方法分为抽象思维的形而上学方法和抽象思维的辩证方法。抽象思维的这两种具体形式不象有些人认为的那样,是对立的和没有共同基础贩。实际上,抽象思维的辩证方法是建立在抽象思维的形而上学方法之上的,在运用分析、综合、归纳、演绎方法来形成概念并确定概念与概念之间演绎的关系、概念外延的数量属性关系这些