计算机学科的发展
计算机学科的发展2009-10-15 13:471计算机科学知识的演变在计算科学的发展早期,大约在20世纪30年代至50年代末,对计算科学研究的主流方向主要集中在计算模型、计算机设计、高级语言和科学计算方面。由于其应用主
要是大量的科学计算,与数学关系密切,加之在设计计算机的过程中,对逻辑
和布尔代数的基本要求,导致大量从事数学研究的人员转入计算科学领域。他
们不仅在数量上占有绝对优势,而且在工作中也处于主动地位。就当时的情况
来看,具有坚实的数学基础,懂得一些电子学、逻辑和布尔代数,很容易掌握
计算机的原理和设计的方法。如果还掌握了一些程序设计的技术,那他完全可
以进入学科前沿。在学科发展的早期,数学、电子学、高级语言和程序是支撑
计算科学发展的主要专业基础知识。学科经过几十年的发展变化,知识组织结
构日渐庞大,各主流发展方向所需要的共同的基础已经发生了很大的改变,从
早期的电子技术、布尔代数、计算机组成原理、程序设计基础逐步演变为高等
逻辑、计算模型与计算理论、新一代计算机体系结构、并行与分布式算法设计
基础、形式语义学这五大专业基础。目前,国内外研究生核心课程的最高起点是:高等逻辑、高等计算机体系结构、并行(或分布式)算法设计基础、形式语
义学。学科知识组织结构及其演变对本科教学内容和要求产生的影响将是深远的。20世纪60~70年代是计算科学蓬勃发展的时期,面对学科发展中遇到的许
多重大问题,如怎样实现高级语言的编译系统,如何设计各种新语言,如何提
高计算机运算速度和存储容量,如何设计操作系统,如何设计和实现数据库管
理系统,如何保证软件的质量等问题,发展了一大批理论、方法和技术。如形
式语言与自动机,形式语义学,软件开发方法学,算法理论联系实际,高级语
言理论,并发程序设计,大、中、小型计算机与微型计算机技术,程序理论,Petri网,CSP,CCS等。这一时期的发展有三个显著的特点:第一是学科研究
和开发渗透到社会生活的各个方面,广泛的应用需求推动了学科持续高速发展。第二是经过大量的实践,人们开始认识到软件和硬件之间有一个相互依托、互
为借鉴以推动计算机设计和软件发展的问题。第三是计算机理论和工程技术方
法两者缺一不可,且常常是紧密地结合在一起的。许多复杂而困难的硬件与软
件设计,离不开计算机理论的支持,而大系统的实现也应广泛采用工程方法。
对大系统实现中困难性的认识促进了软件理论、开发环境和工具的研究。大约
在此后20年里,计算机原理、编译技术、操作系统、高级语言与程序设计、数据库原理、数据结构算法设计以及逻辑成为学科的主要专业知识基础。从20世纪80年代起,针对集成电路芯片可预见的设计极限和一些深入研究中所遇到的困难,如软件工程、计算模型、计算语言、大规模复杂问题的计算与处理、大
规模数据存储与检索、人工智能、计算可视化等方面出现的问题,人们开始认
识到学科正在走向深化。除了寄希望于物理学中光电子技术研究取得突破、成
倍提高机器运算速度外,面对现实,基于当前的条件,人们更加重视理论联系表示变化快的成语
实际和技术的研究。这方面的努力推动了计算机体系结构、并行与分布式算法、形式语义学、计算机基本应用技术、各种非经典逻辑及计算模型的发展,从而
推出了并行计算机、计算机网络和各种工作站,并带动了软件开发水平和程序
设计方法技术的提高。尤其值得一提的是,在图形学和图像处理这两个相对独
立的方向上,不仅科研而且实际应用均取得了长足的进步。这两个方向的迅速
发展不仅使计算机的各种应用变得更易于为社会接受,而且随着计算机硬件和
区晓鸥数据库技术的进步,使计算机应用触及到了一些以前被认为是较为困难的领域,并引发了计算几何、多媒体技术、虚拟现实等计算可视化方向的发展。基于并
行软件开发方法学、计算语言学、人工智能、超大规模计算机网络的控制与信
息安全,以及硬件芯片设计中遇到的困难和极限,人们开始对一些基本问题进
行反思。基础理论联系实际研究重新引起人们更多的重视。围绕着学科遇到的
问题,新一代计算机体系结构、高性能计算与通信系统模型、形式语义学、并
行算法设计与分析,以及各种非经典逻辑系统成为专家关注的重点。然而,由
于长期以来理论的研究滞后于技术的发展,技术和工程应用发展速度开始受到
制约。在研究的方法上甚至还出现了广泛借鉴其他学科的现象,特别是在研究
与人及其行为有关联的学科方向上,如从脑神经系统的生理结构和思维功能得
到启示产生了神经与神经元计算,试图从别的学科的进展来确定下一步工作的
思路。许多情况下确定一个取值的范围比直接确定一个值的方法更重要;发现
一个不能自动进行的问题甚至比发现解决一个问题的方法更重要。原因是证实
各种不能自动进行的问题常常从不同的侧面、以不同的形式揭示了计算的极限,它有可能帮助我们更深刻地认识计算的本质,推动其研究,特别是计算模型研
究的发展;在软件的开发中,算法的设计应该与体系结构相分离,而程序的设
计应该与具体机器无关。软件研究着重软件开发方法论,在软件开发各个阶段
和不同用途、不同性质的软件开发需要各种计算模型的数学理论联系实际的支持,这正是近年来各种计算如分布式代数系统、类型理论、区段演算等出现的二胎产假
背景;人工智能并不遥远,但也不像原先想象的那么简单,问题是我们对智能
的认识还十分肤浅,对什么是人工智能的理论联系实际基础仍在探索之中。在
计算科学的研究与发展中,虽然具体地形成了一大批更为细小的方向,有些理
论联系实际性较强,有些技术性较强,有些则与其他学科产生了密切的联系。
但就其核心,在学术上有较深刻的内涵;其概念、方法和技术对整个计算科学
影响较大的主流方向而言,则认为,在未来的20年里或更长一段的时间里国内外重要的计算科学学术研究机构将会逐步把研究重点集中在以下几个新的综合
方向上:(1)新一代计算机体系结构。该方向包括神经元计算、计算机设计与制造、网络与通信技术、大容量存储设备的研究、容错模型等内容;(2)并行与分布式软件开发方法学研究。该方向包括数理逻辑、计算理论、形式语义学、高
级语言与程序设计理论、系统软件设计、软件工程、容错理论等内容;(3)人工智能理论及其应用。该方向包括数理逻辑、高等逻辑、算法理论、知识工程、
神经元计算、人工智能高级语言与人工智能程序设计等内容;(4)计算机应用的关键技术。主要将围绕计算可视化与虚拟现实、计算几何、科学计算这几个重
点方向开展工作,并带动数据库技术、计算机图形学、自然语言处理与机器翻译、模式识别与图解处理等方向的发展。对这四个综合方向研究的重点内容作
分析,结合国内外顶尖学术刊物发表的与上述方向研究内容有关的学术论文,
不难得出,它们共同的基础和趋势集中在数理逻辑、形式语义学、新一代计算
机体系结构、算法设计与分析和诸模型与计算理论这五个专业基础之上。具体
地说,软件工程的主要基础是程序设计语言理论、形式语义学、高等逻辑和程
序设计方法学与程序理论;人工智能的主要基础是数理逻辑与高等逻辑、算法张靓颖妈妈
设计与分析;计算语言学的主要基础是数理逻辑与形式语义学。其他方向在学
术上有深度的内容从方法论的角度考察,基本上可以在这些内容的基础上发展。研究工作重点的转移实际上揭示了学科的发展和重大的突破离不开学科核心知
识组织结构中各分支学科的发展和支持,它们是现代计算科学人员所必需的专
业基础知识。从知识组织的层次结构和方法论的角度观察,并对计算科学国际
领头和重点刊物的分析可知,当前学科的重点研究几乎都与计算理论密切相关。从目前的学科的整体发展情况来看,计算模型与体系结构、软件开发方法学与
计算机应用技术是学科未来发展的主要方向,而计算理论、体系结构、高等逻
辑与形式语义学是支撑学科未来主要方向发展的四大核心专业知识基础。
2计算机学科知识的特点计算机科学是以数学和电子科学为基础、理论与
实践相结合的上的一门新兴学科。计算机成熟技术(如多媒体技术、电子商务等)在各行业的成功应用,体现了其先进的技术性;而围绕一些重大的背景问题的
理论研究,则有力地推动了计机算科学向深度和广度发展。事实上,在计算机
科学领域,理论是根基,技术是表现,两者互为依托。更多的难问题如NP完全性问题、新一代计算机体系结构、并行计算与处理、人工智能等,都属于理论
问题,与某些数学理论或工具存在着密切的联系,它们的解决将对计算科学机
的发展产生极其深远的影响。因此,计算机理论研究的重要性更不容忽视。数
学是计算科学机的主要基础,以离散数学为代表的应用数学是描述学科理论、
方法和技术的主要工具,而微电子技术和程序技术则是反映学科产品的主要技
术形式。在计算机科学中,无论是理论研究还是技术研究的成果,最终目标要
判断上下联的口诀体现在计算机软件产品的程序指令系统应能机械地、严格地按照程序指令执行,决不能无故出错。计算机系统的这一客观属性和特点决定了计算机的设计、制造,以及各种软件系统开发的每一步都应该是严密的、精确无误的。从事计算
机科学的人都知道,计算机科学中不仅有许多理论是用数学描述的,而且许多
技术也是用数学描述的。大多数计算机科学理论不仅仅是对研究对象变化规律
的陈述,而且由于能行性这一本质的核心问题和特点的作用,理论描述中常通
过方法折射出技术的思想和步骤,而从理论通过方法跨越到技术则完全取决于
理论的深刻认识和理解。一个人如果看懂了以形式化方法描述的技术文献,自
然明白技术上应该怎样去做,否则往往误以为是一种理论,离实现尚远。由于
离散数学的构造性特征与反映计算科学本质的能行性之间形成了天然一致,从
而使离散数学的构造性特征决定了计算机科学的许多理论同时具有理论、技术、工程等多重属性,决定了其许多理论、技术和工程的内容是相互渗透在一起的,是不可分的。与大多数工程科学的工作方式不同,在几乎所有高起点的、有学
术深度的计算机科学的研究与开发中,企图参照经验科学的工作方式、通过反
复实验获得数据、经分析后指导下一步的工作从而推进科研与开发工作的方式
是行不通的,原因是有学术深度的问题其复杂性早已大大超出了专家们的直觉
和经验所能及的范围。并非所有的计算机科学理论研究都具有应用价值。实际上,在计算机科学发展
的几十年里,有不少计算机科学理论后来并没有得到继
续发展。例如,程序理论的研究中,早期曾出现过框图理论和程序的不动点理论,尽管也取得了一些有趣的结果,但是后来发现使用价值比较小。又如,在
计算模型的研究中,也曾经产生了不少各种各样的计算模型,但由于后来陆续
被证明它们的计算能力没有超过图灵机的能力,又因不具备突出的使用方便的
描述能力而不常应用。应用计算机技术来解决问题,可以采用硬件的方法,也
可以采用软件的方法,甚至还可以采用电子线路和机械的方法,只是机械的方
法因成本太高、精度难于保证而早已弃之不用。但无论采用哪种方法,都必须
有提供处理该问题的计算过程描述,即详细地给出计算的每一步应该怎么做。
这在计算机科学中称之为算法。于是,算法成为计算机科学的一个重要内容,
也有人称算法为计算机科学的首要问题或者核心问题。在计算科学的研究中,
发现或创立一个新算法是对计算科学的一个实质性的贡献。经验表明,算法研
究的基础是数学和与计算机科学有关的专业背景知识。计算机科学与技术学科
并不完全排斥工程的方法。相反,学科在发展中广泛采用了其他学科行之有效
的工程方法。如在软件开发中首先采用开发工具和环境,进而开发软件的方法;在计算机的设计中,目前广泛使用标准组件的方法;在软件的设计和质量检查
中广泛使用软件测试方法和技术、标准化技术等。事实上,从软硬件开发的经
济效益和专业技术人才的局限性两方面考虑,完全采用形式化的方法来解决学
科中的所有问题是不现实的,也是不必要的。长期以来,数学,特别是以离散
数学为代表的应用数学同计算机科学与技术学科之间建立的密切联系不仅使学
科具备了坚实的理论基础和科学基础,而且使学科从一开始就以一种与其他学
科发展方式很不相同的方式发展。这就是将抽象描述求解问题与具体实现解决
问题相分离的方式,即在计算机科学与技术学科的发展中,对大量有深度的问
题的处理采用了将理论上解决问题的抽象描述计算方法、算法和技术的内容与
具体解决问题的细节、具体实现计算的技术内容相分离。这样做的好处是由于
可计算问题能行性的特点和数学方法的构造性特点,也由于学科理论的发展常
落后于技术发展的特点,人们可以更深入地探讨一些已经出现的技术问题的内
在规律。一般情况下,采用抽象描述方法从理论上解决的问题,实现中也是可
以解决的,因为抽象描述求解方法是基于某种能行计算模型发展的。能否根据
抽象描述解决具体实际问题,关键在于能否正确地理解抽象描述的内容以及解
决问题的效率用户能否接受,这在各个分支学科的发展中不胜枚举。抽象描述
数学教学案例与具体实现相分离是学科发展过程中一个十分重要的内在特点,它不仅决定了
一大批计算机科学与技术工作者的工作方式,而且使学科的研究与开发在很短
的几十年里就已进入比较深层的阶段。读者特别应该注意这样一个事实:学科
正是在将抽象描述与具体实现相分离的过程中,由于深入描述与研究的需要,
计算模型的基础地位突出地表现出来,并经过对各种计算模型的深入研究和应
发布评论