计算机学科一个新知识框架(摘自ACM,转贴,理顺知识体系)

 

计算机学科一个新知识框架

1.       引言

美国计算机协会(ACM)已成立42 年了,但一场老问题的争论仍在继续。计算机科学是科学还是工程学科或者只是一门技术、一个计算商品的研制者和销售者?学科的智力本质是什么?它将持续兴旺下去或者在我们的下一代衰落下去?计算机科学和工程目前的核心课程是否反映了这一领域?怎样把理论和实验室的工作集成在计算课程中?各核心课程培养计算方面的能力吗?

    我们建议一种面向技术的学科描述,其基础是数学和工程。例如,我们把算法当作最基本的研究对象,而程序设计和硬件设计则当作正要的研究活动。认为"计算机科学等于程序设计"的观点在我们的许多课程里是很占上风的。导引性的课程是程序设计,程序设计技术安排在各核心课程中,而科学则在选修课中。这外观点阻止了重新组织各课程的进展,使心怀大志的最好的学生远离我们而去。它拒绝了一条统一的途径,以便把实验的和理论的计算机科学集成为课程的有机组成部分。

    今天,本领域已经足够成熟,使我们能用新的水到渠成的方式来描述它的知识本质。这在计算机科学与工程博士单位评审部的领导者们1984 7 月在犹他州召开的会议上进行了讨论。这一讨论及其他类似的讨论推动ACM IEEE 计算机学会组成攻关组去开创新途径。1985 年春,ACM 总裁Adele Goldberg ACM 教育委员会主席 Robert Aiken IEEE计算机学会热心合作之下,任命了这个计算机科学核心攻关组。同时,计算机学会在ACM 的热心合作下,组成了计算机实验工作攻关组。

    我们希望,本报告所反映的核心攻关组的工作能产生比预定更多的效益。有了对本学科的核心的共同的认识,就能理顺利协调这两个学会发展行各分支学科和课题的进程。本报告可以作为进一步讨论计算机科学与工程作为一个专业的基础,刺激中学计算课程的提高,导致更大范围地承认计算科学是?个学科。

我们的目的是创造一个关于本领域的新的思想方法。希经把一般性的议论融入学科的性质,寻求一个框架,但不是一个清单、一个导引,而不是一道命令。我们希望你采纳这一框架,并使之适合你自身的情况。我们高兴地介绍本学科的新的知识框架和各课程的新基础。

2.       攻关组的任务

攻关组接受了三项任务:

(1)      给出计算机科学的描述,该描述要强调基本问题及已有的重要成就。这个定义必须确认,本领域在不断变化,现在说的不过是持续进步过程中抢拍的一个镜头。

(2)      提出计算机科学的教学规范。该规范要符合传统的科学标准,强调本学科能力的培养,并且把理论、实验相设计紧密地结合在一起。

(3)      基于课程模型和学科描述,详尽地给出计算机科学导引性课程系列的一个例子。

 我们当即把我们的任务扩展到包括计算机科学与汁算机工程,因为这两个领域的核心材料没有基本区别。区别仅表现在处理这些核心材料的方式不同:计算机科学注重分析和抽象;计算机工程注重抽象和设计。这里,计算学科(discipline of computing)一词用来包括计算机科学和工程。

 有两件重要的事情没有包括在攻关组的任务之内。第一,本报告的课程推荐只列出了导引性的课程序列,末涉及整个核心课程的设计这样重大问题。而实际上如果对核心的其余部分没有新的设计,所建议的导引性课程也就没多大意义了。第二,导引性课程的目的是用严格而富有挑战性的方式把学生引到整个学科领域中去。我们所列的不过是这种途径的?个例子,或者说是我们关于计算的定义的一个"存在性证明"。我们希望各系应用本框架去确定他们自己的导引性课程,以满足自己的需要。

3.       学科形态(Paradigms)

籍以从事本领域工作的三种主要形态,或称文化方式,提供了我们定义计算学科的条件。

    第一个形态是理论(theory),基于数学,按统一的合理的理论发展过程.包含以下四个步骤:

(1)      特征化研究对象(定义)

(2)      假设它们之间可能的天系(定理)

(3)      确定这些关系是否正确(证明)

(4)      解释结果。

    数学家们认为,当发现错误和矛盾时,上述过程应该反复进行。

    第二种形态是抽象(abstraction),或称模型化,基于实验科学方法。按客观现象的研究过程,包含以下四步:

(1)      形成假设;

(2)      构造模型并做出预言;

(3)      设计实验并收集数据;

(4)      分析结果。

    科学家们希望,当模型的预言与实验结果不符时,这些步骤应该反复进行。虽然这一形态也可以称为"模型化""实验",但我们仍采用"抽象"一词,因为它在学科里面比较通用。

    第三种形态是设计(design),基于工程,按为解决某一个问题而构作系统或装置的过程,包含以下四步:

(1)      叙述要求;

(2)      给定技术条件;

(3)      设计并实现该系统:

(4)      测试该系统。

工程师希望,当测试表明当的系统不满足技术条件时,上述步骤须反复进行。

     理论是数学科学的根本:应用数学家们都认为,科学的进展都是基于纯数学的。抽象(模型化)是自然科学的根本:科学家们相信,科学进展的过程基本上都是形成假设,然后用模型化过程去求证。类似地,设计是工程的根本:工程师们认为,工程进展基本上都是提出问题,然后通过设计去构造系统,以解决问题。关于数学、科学、工程三者哪一个更加重要的许多争论实质上都基于一个假定:三个过程(理论、抽象或设计)的某一个是最基本的。

    然而,仔细考察计算学科可以发现,关于计算的这三个过程是如此紧密的交织在一起,以致无法分清哪一个更加基本。有许多例子分别表明,抽象和设计阶段出现了理论;理论和设计阶段需要模型型化,而理论和抽象阶段,始终离不开设计。

     虽然这三种形态是紧密相关的,但毕竟是三种不同的形态,因为它们代表能力不同的领域。理论关心的是揭示和证明对象之间相互关系的能力。抽象关心的是应用这些关系去做出对现实世界的预言的能力。而设计则关心这些关系的某些特定的实现,并应用它们去完成有用的任务。应用数学家、计算科学家和设计工程师一般具有互不相同的专长。

    并且,计算领域的人们要研究计算工具,以支持人们需要的信息变换过程。例如,从设计方面说,复杂的VLSI 设计和模拟系统处我们能进行微型电路的有效和正确的设计,程序设计环境使我们能有效地进行软件设计。从模型化来说.超级计算机能评估数学模型,并做出对现实世界的预言,网络有助于传播科学实验的成果。从理论来说,计算机可以做定理证明,检查技术条件的相容性,检查反例,演示测试情况。

计算处于应用数学、科学和工程三者的主要过程的交叉路口。这三个过程在本学科是同等重要和基本的,它是理论、抽象和设计三者唯一的交汇点。维护它们的力量是把实验和设计作为信息变换器的共同兴趣、在这些过程各阶段的计算支持的共同兴趣、和在有效性方面的共同兴趣。

4.       程序设计的作用

计算领域的许多活功并不是程序设计??例如,硬件设计、体系结构、操作系统结构、数据库的应用和模型验证??因此,认为"计算机科学等于程序设计"是错误的。那么,程序设计在本学科中的作用是什么?在课程中地位如何?

显然,程序设计是本学科标准的实践活动的一部分,每一个计算工作者都必须有程序设计的能力。但这并不意味着,本学科就建筑在程序设计的基础上,也不意味着导引性课程必须是程序设计方面的课程。同样明显的是,涉及任何领域的特色都要通过语言,而计算学科的特色则大都寓于程序设计符号中。程序设计语言是涉足本领域特色的工具。因此.我们建议,程序设计作为核心课程的一部分,并把程序设计语言作为涉足计算学科重要特色的有用媒介。

5.       计算的描述

计算科学作为一个学科的描述包含四部分:(1)要求;(2)简短定义;(3)划分为分支领域;(4)分支领域的内容。我们的描述分四遍扫描,每一遍都大大详尽?步。

我们这里所说的仅仅是一个变化着的动态领域的抢拍镜头。它是一个"活的定义",它可以随时修改,以反映本领域的成熟性和变化。我们希望,各分支领域的内容可以经常修改,各分支领域的分法可以偶尔有修改,而简短的定义则很少修改。

5.1 要求

形成一个定义有许多方式。我们提出五个要求:

(1)      定义应该能为本领域以外的人所理解。

(2)      定义应该是本领域以内人们的着力点。

(3)      定义必须是明确的。

(4)      它必须阐明本学科的数学、逻辑和工程的历史渊源。

(5)      它必须指明本学科的基本问题和已有的重要成果。

     在形成描述的过程中.我们考虑了原有的几个定义,并且得出结论,满足这些要求的描述必须按复杂程度分层次。这里,简单地综述一下其他的定义。1967 年.NewellPerlis Simon[ 5] 主张,计算机科学是研究计算机及围绕它的主要现象的科学,而且说,反对这个定义就无异于表明其他科学都不是科学。但不管怎么争辩,许多人认为,这是一个循环定义,而且对外行人过于简略。不过,它仍是一个好的出发点,因为我们的定义可以看作是列出了围绕汁算机的主要现象。

     计算科学资格审查部(Computing Sciences Accreditation BoardCSAB)精心修改了上述想法,用了一个如下定义:"计算机科学是关于计算机和计算的知识的总体。它有理论、实验和设计三部分,并且包括(1)理解计算装置、程序和系统的理论;(2)为概念的发展和测试所进行的实验;(3)设计方法论,算法和实现工具;以及(4)验证这些实现满足要求的分析方法。"

    第三个定义说,"计算机科学是研究知识表达及其实现的科学"。这个定义过于抽象,很少人能够对知识表达有相同的理解。具有同样一个问题的另一个定义是,"计算机科学是关于抽象和复杂性控制的研究"。是一个对物理、数学或哲学也适用的定义。

    Abelson Sussman 说过,"计算机革命是思维方法和思维表达方法的革命"。这种变化的本质是所谓过程性认识论的出现??它是从命令性的观点来研究知识的结构,而不是象经典数学那样用陈述性的观点来研究。数学提出一个精确处理"是什么"的问题的框架,而计算则提出精确处理"怎样做"的问题的框架[ 1]

5.2 简短的定义

    计算学科是对描述和变换信息的算法过程的系统研究,包括它的理论、分析、设计、有效性、实现和应用。全部计算科学的基本问题是"什么能(有效地)自动进行?

5.3 划分为分支领域

    我们花了相当的力气,把整个学科分为若干分支领域。一开始,我们想尽量少分一些分支领域.例如模型化和实现,或者算法和机器。然而,我们提出的各种分支都太抽象,界限也很模糊,恐怕大部分人都无法顺利地确认它们。

    然后,我们认识到,学科的基础包含在三个基本过程中??理论、抽象和设计。各分支领域也是用这些基本过程来完成它们自身的目的的。因此,各分支领域及其与这三个基本过程的关系的描述将是有用的。必须满足下列四个条件,才能算得上一个分支领域。

(1)      科目内容基础的协调一致;

(2)      实质性的理论部分;

(3)     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值