打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
计算机科学哲学研究的迫切性
【任晓明 潘沁】计算机科学哲学研究进展
计算机科学是一门年轻的学科,它的诞生可以追溯到20世纪40年代。1945年第一台电子数字计算机ENIAC的出现和存储程序模型的诞生引起人们了对自动计算广泛的学术兴趣。在过去的60年里,计算机科学给人们提供了解释现象的各种方法,其中最引起注目的是计算模型和算法。计算领域的研究者曾经试图借助各种不同的学科和研究方法,尤其是系统科学和复杂性科学的方法,来解决计算机科学中的一些疑难问题。
在电子数字计算机短短的发展历史中,学科交叉使计算机科学的发展成为可能,但这个领域的迅速扩张使人们感到定义计算机科学的困难,同时也给计算机科学家提出了挑战:第一,对于什么是计算机科学,难以把握最本质的特征。人们以往对计算机科学特征的描述要么太狭隘,只能适用于计算机科学的一些子学科,要么太宽泛而没有把其他学科排除在外。甚至连计算机科学是否一种“科学”,都是大有争议的;第二,很难找到一套确定的规则来指导计算机科学研究,因为计算机科学家研究的领域包括:程序、逻辑、形式、人、复杂性、机器、可用性和系统,而这套规则应该涵盖软件工程、复杂理论、可用性、程序心理、信息系统管理、虚拟现实和建筑设计等领域。这就大大增加了问题的难度。
伴随着计算机科学的发展,计算机引出的哲学问题引起了人们的深入思考。随着时代的发展,计算机科学哲学也随之兴起。本文将简要介绍计算机科学研究的三个传统引发的哲学问题、计算机科学哲学的发展以及目前计算机科学哲学研究的一些特定问题。
一计算机科学研究传统引出的哲学问题
计算机科学所涉及的问题非常广泛,关于计算机科学的哲学问题也十分宽泛。大致说来,计算机科学研究有三个传统,即数学传统、工程学传统、经验科学传统;计算机科学的哲学问题包括这三个传统引发的哲学问题以及计算机对社会的影响的问题。
1. 数学(理性主义)传统。1936~1969年间,现代计算机科学主要研究“机械结构解释的广度和局限”。[1]早期的计算“科学家”是发展自动理论、探究可计算性、研究计算基础及其符号化的数学家。理论的计算机科学把计算机程序看做是数学客体。“计算机程序是数学表达式”。[2]“计算机程序的建立像解决微分方程一样是数学活动”。[3]早期的程序语言是用来解决数学分析和符号处理中的问题的。
2. 工程学(技术统治)传统。自从软件危机爆发后,计算机科学的研究焦点转向研究可靠、高效、可持续的软件工程。计算机工程师把软件看成与桥梁、机动车一样的人工产品。“第三代”程序语言把注意力集中在与工程相关的领域,包括模件、可靠性和再利用。但是软件工程对技术的狭窄范围的关注招致了广泛的批评。
3.经验科学传统。软件科学是把计算机科学看成关于“自然类”的学科,虽然它认可数学模型的分析方法,但它把计算机程序看成“自然现象”而不是数学客体。软件科学包含观察、分析、检测和经验证实的科学方法。软件科学的成就包括程序语言和范式、形式方法和程序验证、软件进化定律、软件复杂性等。由计算机科学引出的哲学问题大致包含以下几类:
形而上学方面:计算机的主体是什么?计算机程序是数学实体,人工产品还是“自然类”?或者说,如果计算机科学是科学,它是数学的一个分支还是工程学的一个分支?计算机科学像数学一样具有实在性/反实在性吗?Uuix汇编语言是被发现的还是被发明的?
本体论方面:什么是计算机程序?元软件、软件和硬件之间的关系是什么样的?程序承担什么样的本体论上的义务:它们承载的是真实世界中的客体,或者可能是程序中定义的类?计算机科学中的东西是客观的、普遍的还是不受时间影响的?本体论被程序语言改造了吗?
认识论方面:计算机科学中的知识与信念和假设有什么区别?数学在计算机科学中的作用是什么?数学模型将代替工程事业吗?计算机科学是一个经验理论吗?计算机科学里的实验是什么样的?与经验科学里的实验有什么不同?心理学方法将作为实验的模型吗?在计算机科学里做的实验所获得的知识具有什么样的地位:它是关于真实世界的还是关于运算法则的?计算机程序是一个科学的理论吗?
方法论方面:计算机科学使用什么方法?计算机科学如何发展?计算机科学家怎么工作、他们应该怎样工作?论证、逻辑、验证、概念、示范和一致性在计算机科学中起着什么作用?计算机科学家像数学家一样证明数学公式吗?像工程师一样建造东西吗?像自然科学家那样检验假说吗?
伦理学方面:我们能够信任计算机所做的决定吗?我们应该制造智能计算机吗?软件能被专利化吗?软件有著作权吗?
二计算机科学哲学的发展
对计算机科学哲学问题探讨随计算机科学的产生就产生了,许多学者对计算机科学的目的、定义、方法等做了探讨。1978年,英国人斯洛曼( ASloman)曾写了一部叫《哲学的计算机革命》的书,预示了以人工智能为基础的计算机革命将给哲学带来范式转变, 但当时并没有引起人们的注意。直到20世纪90年代以信息与通讯技术为主的计算机革命引起哲学的革命的时候,计算机科学哲学才引起了人们的重视。1995年,美国哲学会开始编辑《哲学与计算机通讯》(Philosophy and Computer Newsletter);1998年由美国哲学会哲学与计算专业委员会的主席拜纳姆(T WBynum )和摩尔(J HMoor)主编的《数字凤凰:计算机如何改变了哲学》出版,同年美国哲学会趁第20届世界哲学大会在波士顿召开之时,把这个研究领域首次引入世界哲学大会,于是计算机科学哲学开始蓬勃发展起来。
1999年1月美国《一元论者》(The Monist)(第82卷第1期)杂志组织了一次关于计算机科学哲学特定问题的专题讨论,关于这个专题的文章组成了一个以计算机科学哲学为名探讨计算机科学哲学有关问题的文集。内容主要包括以下几个方面: 软件的抽象与本体论、计算机科学中模型的作用、计算范式的变化、观察与经验计算、语言学解释的应用、计算机科学的定位、模拟理论和缺省推理等。
在这些问题中,什么是计算机科学哲学(PCS)的问题是首要的问题, 目前很多学者还在对这个问题进行讨论。但一般的观点认为:计算机科学哲学是哲学的一个分支,它研究计算机科学中的哲学问题,计算机科学哲学基于计算机科学类似于数学哲学基于数学,物理哲学基于物理学。蒂莫西·科尔伯恩( Timothy RColburn)在他的《哲学与计算机科学》一书中认为计算机科学哲学是对计算机科学语境中引发的知识(认识论),存在(本体论)和价值(伦理)问题的哲学研究。[4]在该书的最后部分讨论了计算机与数学、工程学、经验科学的关系;形式验证争论;计算机科学中抽象的程度和抽象的作用,计算机科学的哲学应该解决哪些问题。科尔伯恩的这本书就这些问题做了开创性的研究。“本书的目的之一是想对新生的计算机科学哲学做出较早的贡献,这并不是说以前人们没有在计算机科学与哲学学科交叉的研究上做大量的研究工作”。[5]
2004年第二届计算与哲学欧洲会议在瑞典举行,会议就计算机科学哲学的定义及其与计算哲学、信息哲学的关系、计算机方法论(模型,模仿),计算机科学伦理做了深入的探讨。2006年计算与哲学欧洲会议第四次会议论述了计算机科学哲学的发展轨迹。会议论文集见2007年《心灵与机器》第17卷。
中国社会科学院研究员刘刚较早研究了计算机科学哲学问题,但他偏好使用信息哲学这个术语。国内学者对于人工智能和人工生命哲学问题关注较多,例如,华东师大骊全民教授、北京师大李建会教授。也有学者关注计算机科学哲学的研究,例如,武汉大学桂起权教授发表了《计算机革命的哲学新意》、华东师大熊哲宏教授2004年发表了《“计算机科学哲学”研究论纲》。但是,从总体上看,国内这方面的研究还很薄弱。
三近年来计算机科学哲学关注的一些特定问题
1.数学、工程与科学
工程的核心是设计,几乎所有的工程师都使用数学模型而且验证他们的创造。计算机科学家也是这样,他们设计出新的语言和工具,验证它们并且用数学模型去探讨这些语言和工具的性质。很显然,计算机科学家所做的事情是广义上的工程。但是“工程图画”(engineering picture)实际上把握了计算机科学的各个方面的特征吗?很少有人会这样认为。
早在1976年韦格纳(P Wegner)就对计算机的研究范式做了探讨。[6]纽厄尔和西蒙(一译司马贺)把计算机科学看做经验科学。[7]克鲁斯(Knuth)论述了计算机科学与数学的关系。[8] 伊登(Eden)在2007年出版的《心灵与机器》杂志的一篇论文中详尽地刻画了计算机科学的学科性质,并详细介绍了计算机科学的三个范式:数学的(理性主义的),工程的(技术统治的),科学的。第一个范式把计算机科学归于数学的一个分支,第二个范式把计算机科学看做是科学中的一个学科,最后一个范式把它归于经验科学。[9]
尽管每个范式有不同的认识立场,但它们都共同关注一个问题:关于程序的先验知识可以获得还是后验的知识可以获得?就本体论问题而言,每个范式都提供了关于计算机程序存在性的不同说明。这个哲学问题为更深入地分析计算机这个学科的本质提供了更宽广的背景。
2.计算机科学中的抽象
科尔伯恩在1999年1月的《一元论者》中发表了一篇《软件、抽象和本体论》的文章探讨了抽象性问题。2007年,科尔伯恩和舒特( Shute )通过比较数学和计算机科学中的抽象的不同特征和作用,对于把计算机科学看做纯粹数学学科的观点提出了挑战。在他看来,各种形式的抽象,对于数学活动是至关重要的;但是数学中的抽象会抑制(suppresses)具体细节,这样一来,在可计算理论中就不再需要纠缠于自然数的具体性质了。按照数学抽象这个概念,他们把数学中的抽象特征刻画为“对信息的抑制”(supression of information)或者信息忽略(information neglect)。他们认为,计算机科学中的抽象与数学中的抽象完全不同:如果数学抽象是远离具体细节(抑制或忽略信息),那么计算机科学中抽象就是隐藏具体细节或隐藏信息(information  hiding),计算机科学家这样做的目的大概是为了用不同的程序来处理这些信息。[10]有趣的是,这种隐藏信息与毕晓普(Bishop)的建构数学(constructive mathematics)中的隐藏信息酷似。
3.证明与计算
程序验证是计算机科学的基本问题之一。[11]有关的哲学问题是:程序正确性的证明是真正的数学证明吗?也就是说,这些证明与标准的数学证明具有同等地位吗?这个哲学问题就是程序验证在认识论上的地位问题。
1979年,有人对定理证明与社会进程的关系做了探讨。[12](费策尔(J H Fetzer)也做过程序验证方面的研究。[13]阿寇达斯(K Arkoudas)和布林斯乔德(S Bringsjord)探究了计算机-生成证明(computer-generated proof)的认识论地位问题。[14]他们首先指出,在数学家看来,通常的数学证明是先验的,如果这些数学家要验证给出的证据并证明其可靠性,就要拥有关于已证命题的真的先验知识。他们还把这种做法推广到计算机辅助证明,坚持认为理想数学家能够验证有关正确性证明的可靠性。更一般地说,他们认为,只要理想数学家能够证明基本程序的正确性,通过先验计算获得的知识就可以看做计算的先验知识(computational a priori knowledge)。
4.程序语言的语义学
关于程序语言语义学的哲学问题是:形式程序语言语义学背后的概念问题是什么?特纳(Turner)探讨了不同语义学之间哲学上的差异。[15]他认为程序语言语义学为柏拉图主义与形式主义之争提供了新的思路。他还认为数学哲学中的柏拉图主义与形式主义之分与程序语言语义学操作与外延之分是不一样的,一个人既可以坚持所谓的操作解释(operational account)的哲学立场也可以赞同外延解释(denotational account)的哲学立场。
5.甘地定理和邱奇-图灵论题
关于计算概念的一些哲学问题,科普兰(Copeland)和谢格瑞尔(Shagrir)做过探讨。[16]在他们看来,多数计算机科学家理所当然地认为邱奇-图灵理论刻画了真实的物理计算。例如,目前使用的程序语言是图灵-完全的,也就是说,它们刚好包含模拟一个通用图灵机的控制构造。甘地(Gandy)在一篇著名的论文中证明了这个基本假定的合理性。他给出了四个原则来刻画离散决定论计算机的特征。他认为这些机器的特征完全符合图灵计算模型的特征。
然而,科普兰和谢格瑞尔撰文指出,甘地关于离散决定论机器的观点太狭隘,有许多这样的(理想)机器远远超出图灵计算函数的范围之外。反对甘地定理的观点认为,甘地的证明偷偷地引进了决定论的观点,有不少反例证明这种决定论观点的狭隘性,基于牛顿物理学规律的一些反例也与甘地定理不相容。
邱奇-图灵论题(the Church-Turing thesis)是计算机科学中以数学家邱奇(AChurch)和图灵(Turing)命名的论题。该论题最基本的观点表明,所有计算或算法都可以由一台图灵机来执行。以任何常规编程语言编写的计算机程序都可以翻译成一台图灵机,反之任何一台图灵机也都可以翻译成大部分编程语言程序,所以该论题和以下说法等价:常规的编程语言可以足够有效地表达任何算法。该论题被普遍假定为真,被称为邱奇论题和图灵论题。这个论题的另外一种说法就是逻辑和数学中的能行方法或机械方法可由图灵机来表示。通常我们假定这些方法必须满足以下要求:
(1)一个方法由有限多简单和精确的指令组成,这些指令可由有限多的符号来描述。
(2)该方法总会在有限的步骤内产生出一个结果。
(3)人可以仅仅用纸张和铅笔来执行。
(4)不需要人类的智慧来理解和执行这些指令。
这类方法的一个范例便是用于确定两个自然数的最大公约数的欧基里德算法。这个论题获得公认之后,用于描述能行可计算的许多其他机制也被提了出来,比如寄存器机器(register machine),波斯特(E Post)的波斯特系统,组合可定义性(combinatory definability)以及马尔可夫 (Markov) 算法等。所有这些系统都被证明在计算上和图灵机拥有基本相同的能力;类似的系统被称为图灵完全的系统。因为所有这些不同的试图描述算法的努力都导致了等价的结果,所以现在人们普遍认为邱奇-图灵论题是正确的。但是,该论题不具有数学定理那样的普适性,也无法被证明;如果能有一个被普遍接受为一个能行的算法但却无法在图灵机上实现,则该论题也是可以驳倒的。邱奇-图灵论题对于计算机科学哲学、心灵哲学具有重要意义。有很多悬而未决的哲学问题涉及邱奇-图灵论题。
6.量子计算与复杂性
我们知道,计算机是人类创造出来的最伟大的人工器物之一,它是探索复杂性的关键性工具。算法是对数据运算的描述,它是解一类问题的方法,或者是某种指令集。一个算法是一个有限规则的集合。计算复杂性是衡量算法效率的一种指标。现有的计算复杂性理论主要是针对经典计算而言的,它具有较大的局限性。而量子计算将会改变原有的经典计算复杂性理论。量子计算机具有超越经典计算机的能力。量子计算具有并行性和整体性,某些量子算法具有加速性。量子计算揭示了:数学与物理学之间的紧密关系,最重要的是,量子计算具有克服计算复杂性的能力。因此,这一方面的哲学探讨具有重要的意义。
邱奇-图灵论题与量子计算的关系在哈格(Hagar)的论文中得到了探讨。[17]哈格发现每个图灵可计算函数都是量子可计算的,还没有发现任何量子算法是在计算非图灵可计算函数。看起来,一旦引入复杂性观念,情况就变得很微妙了。
综上所述,关于计算机科学的哲学问题纷繁复杂,但从目前的研究进展来看,计算机科学不仅提出了有关语言哲学、科学哲学和数学哲学的问题,而且预示了计算机科学研究领域内的一些哲学问题。在我们看来,从复杂性科学和系统科学视角探讨计算机科学哲学,应该是计算机科学哲学发展的一个重要方向。当然,哪一些问题将最终成为计算机科学哲学的中心问题还有待进一步探索。
【注释】
[1]Von Neumann, about Turing’s Work, in B.Jack Copeland(ed.),The Essential Turing, Oxford University Press,2004, P.3.
[2]B. Jack Coperland,Personal Correspondence,4 aug.2005.
[3]Edsger W. Dijkstra,the Cruelty of Really Teaching Computer Science, unpublished manuscript (1988 transcript).
[4][5]Timothy R.Colburn,Philosophy and Computer Science, M.E.Sharpe,2000,p.130;p.4.
[6]Peter Wegner, Research Paradigms in Computer Science,Soft Engineer-ICSE 1976,San Francisco,CA,pp.322~330.
[7]Allen Newell, Herbert A. Simon,“Computer Science as Empirical Inquiry:Symbols and Search”, Communications of ACM, Vol.19,No.3,1976,pp.113~126.
[8]Donald E. Knuth, “Computer Science and its Relation to Mathmatics”, The American Mathematical Monthly,Vol.81,1974,No.4,pp.323~343.
[9]Amnon H. Eden,“The Paradigms of Computer Science”, Minds and Machines,Vol.17,No.2,2007,pp.135~167.
[10]Colburn, T. & Shute, G.,“Abstraction in Computer Science”,Minds and Machines,2007.Vol.17.
[11]Timothy R.Colburn,James H.Fetzer,Terry L. Rankin(eds.), Programe Verification: Fundamental Issues in Computer Science,Dordrecht, The Netherlands :Kluwer Academic Publishers,1993.
[12]Richard A. DeMill, Richard J.Lipton ,Alan J.Perlis, “Social Process and Proofs of Theorems and Programs”, Communications of ACM,Vol.22,No.5,1979,pp.271~280.
[13]James H.Fetzer,“Program Verification:the Very Idea”, Communications of ACM,Vol.31,No.9,Sep.1988,pp.1048~1063.
[14]Arkoudas,K.& Bringsjord,S.,“Computers, Justification, and Mathematical knowledge”,Minds and Machines,2007.
[15]Turner, R.,“Understanding Programming Languages”, Minds and Machines,  Vol.17,2007.
[16]Copeland, B. J. & Shagrir, O.,“Physical Computation: How general are Gandy's Principles for Mechanisms?” Minds and Machines,Vol.17,2007.
[17]Hagar, A.,“Quantum algorithms-philosophical Lessons”, Minds and Machines,  Vol.17,2007.
(原载《哲学动态》,2008年第4期。录入编辑:神秘岛)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
王垠:数学和编程
阿木:科学中的数学。
计算机领域有哪些必读的经典书籍?
图解计算机科学核心概念
计算机专业学习浅谈
穿靴子的猫:计算机科学趋势之我谈
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服