《伟大的计算原理》一计算的范型

简介:

本节书摘来华章计算机《伟大的计算原理》一书中的第1章 ,[美]彼得 J. 丹宁(Peter J. Denning)
克雷格 H. 马特尔(Craig H. Martell)著 罗英伟 高良才 张 伟 熊瑞勤 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

计算的范型

1962年之后的30年中,传统自然科学的研究者经常对“计算机科学”这个名字进行质疑。在计算机科学这个新兴领域中,他们可以很轻易地看到工程范型(系统设计与实现)和数学范型(定理证明),但是却很难看到太多的科学范型。此外,与Simon的辩解相反,这些研究者认为科学是一种关于自然世界的方法,而计算机则更像是一种人工制品。

image


图1.4 两位先驱者John Backus(1924—2007,左图)和Grace Hopper(1902—1992,右图)设计出了高级程序设计语言:通过编译器,高级程序设计语言可以被自动转换为机器代码。1957年,Backus领导的团队开发出了FORTRAN语言:一种面向数值计算的高级程序设计语言。1959年,Hopper领导的团队开发出了COBOL语言:一种面向商业计算的高级程序设计语言。这两种语言至今仍然被使用。这些发明使得类似ENIAC的接线式程序设计彻底失去了生存空间,并且极大地降低了计算领域的入门门槛。自此以后,人们已经发明了数千种的程序设计语言(来源:Wikipedia Creative Commons)
这个领域的创立来自这三种不同的范型(工程范型、数学范型和科学范型)1。一些人认为计算是应用数学的一个分支,另一些人则认为计算是电子工程的一个分支,其他人则认为计算是面向计算的科学的一个分支。在第一个40年中,这个领域主要关注于工程:如何构造可靠的计算机及其网络以及如何开发复杂的计算机软件,吸引了几乎每一个人的注意力。到20世纪80年代,这些工程问题基本上已经得到了有效的解决;同时,在计算机网络、超级计算机、个人计算机的帮助下,计算开始向各个领域快速渗透。在20世纪80年代,计算机的能力已经变得异常强大,而那些具有远见卓识的科学家开始意识到计算机可以用来解决科学和工程中的重大挑战问题,并由此产生了“计算科学”的研究运动。许多国家的科学家共同参与到这一运动中,并最终使得美国国会在1991年通过了名为“高性能计算和通信”(High-Performance Computing and Communications,HPCC)的行动计划,该计划旨在探索采用计算方法解决科学和工程中的重大挑战。

image


图1.5 Allen Newell(1927—1992,左图)、Alan Perlis(1922—1990,中图)、Herb Simon(1916—2001,右图)认为计算是一种关于计算机周边各种现象的科学。1967年,他们认为,计算机科学是研究计算相关事物的一种必备科学,涉及计算机器、软件、智能、信息、系统设计、图形、解决实际问题的算法等众多方面。Simon则进一步认为,人工科学(即研究人造制品周边现象的科学)如同传统科学一样,也是一种科学(来源:Wikipedia Creative Commons)
目前,人们看起来已经形成了这样一种共识:计算是一种典型的科学和工程;而且,无论是科学还是工程自身,都不能有效刻画计算。那么,如何刻画计算,计算的范型是
什么?
从一开始,这个领域的领导者就一直被范型问题所困扰。从发展历程来看,目前已经出现了试图统一各种不同视角的三次浪潮。第一次浪潮,由Newell、Perlis、Simon三人(1967)领导,认为计算不同于所有其他科学领域,原因在于计算的研究对象是信息处理过程。Simon将计算称为人工科学(1969),其背后所基于的一个共识性观念是,计算不是一种自然过程。这一波浪潮的流行语是:“计算研究计算机周边的各种现象。”
第二次浪潮关注于程序设计,即如何进行算法设计,从而产生有用的信息处理过程。在20世纪70年代早期,两位计算领域的先驱者Edsger Dijkstra和Donald Knuth就强烈主张将算法分析作为计算的统一范型。这一波浪潮的流行语是:“计算机科学就是程序设计。”这种观点近来已经逐渐落没,因为这个领域的发展已经远远超过程序设计的范畴,同时也因为公众对于“程序员”这一概念的理解变得过于狭隘(仅仅是一个编写程序源代码的人)。

image


图1.6 Donald Knuth(1938—今,左图)和Edsger Dijkstra(1930—2002,右图)认为程序设计是计算的核心。1970年左右,他们认为算法的设计与分析过程应该是计算机科学的核心关注点。对他们而言,一个程序设计专家就是一个计算机科学家。不幸的是,这种重要的观点在20世纪90年代后期不复存在,因为程序设计人员被官方定义为低层次的源代码编写者(来源:Wikipedia Creative Commons)

image


图1.7 计算机系统领域的先驱Bruce Arden(1927—今,左图),在COSERS项目中形成了“计算不仅仅是程序设计”的观点。在20世纪70年代末,他领导的团队将计算领域定义为一个对“什么可以被自动化”进行研究的领域。在当时,这种观点非常迎合公众对于机器人(如右图中出现在电影《星球大战》中的两个机器人)的好感。但这种观点并没有生存太长时间,因为在短短几年之后人们对科学的理解发生了重大的变化(来源:Wikipedia Creative Commons)
第三次浪潮则源于由Bruce Arden(1983)所领导的项目:Computer Science and Engineering Research Study(COSERS)。这是一个由美国国家科学基金在20世纪70年代资助的项目。该项目将计算定义为:对工程、科学和各种业务领域中的信息处理过程的自动化。这一波浪潮的流行语是:“计算就是信息处理过程的自动化。”虽然该项目的结题报告对很多深奥难懂的研究问题进行了浅显易懂的解释,但其核心观点并没有在大众中得到广泛传播。

image


图1.8 Tim Berners-Lee(1955—今)展示了一种不同于普遍将计算理解为“由一组机器构成的网络”的视角。1989年,他发明了万维网(World Wide Web):在万维网上,存储于机器中的信息之间相互链接,并且可以随着鼠标的点击从信息链的一端移动到另一端。他认为这种由信息链接形成的网络中蕴含了大量的新型计算行为,使得人们能够为信息赋予更多的含义(来源:Wikipedia Creative Commons)
这三次浪潮所具有的一个共同特点是将计算机作为核心关注点。始于20世纪80年代的计算科学运动则不再具有这样的特点:其认为,计算不仅仅是科学研究的工具,而更是一种进行科学思考和科学发现的崭新方法。计算科学的拥护者将计算视为帮助他们理解信息处理过程和算法控制能力的得力伙伴。
这种新视角的一个重要结果是:科学家开始意识到在自然界中也存在信息处理过程,并且也可以采用由基于计算机的人工信息处理所发展出来的方法对其进行研究。生物学是其中的一个典型代表:作为对认知科学家Douglas Hofstadter(1985)观点的一种呼应,诺贝尔奖获得者David Baltimore(2001)认为,生物学已经变为一种信息科学。David Bacon(2010)认为物理学也正在发生类似的变化:作为量子计算的支撑理论,量子力学也是一种信息科学。Erol Gelenbe(2011)列举出了一长串的科学领域,其主要研究对象都涉及自然界的信息处理。计算机科学的方法同样适用于自然界的信息处理。这一结论进一步巩固和强化了Herb Simon(1969)“计算机科学的确是科学”的观点。
最近,Paul Rosenbloom(2012)注意到了另外两点原因,使得“所有的计算都是人工过程”的观点变得愈发陈旧。第一,许多科学家开始认同,人也是全球生态系统的一部分,因此,人工制品也如同河狸筑造的水坝或蚂蚁构造的巢穴一样自然。第二,人类能够在任意粒度层次上修改自然过程的能力,极大地模糊了自然和人工的边界,例如干细胞克隆器官、有机生长的纳米机器以及转基因农作物等。

image


图1.9 两位诺贝尔奖获得者,物理学家Ken Wilson(1936—2013,左图)和生物学家David Baltimore(1938—今,右图)站在了计算科学的前沿:他们认为计算是一种进行科学思考和科学发现的崭新方法。20世纪80年代中期,Wilson指出科学中的一些重大挑战问题可以通过计算得到解决,并认为应当使用具有高度并行性的超级计算机来进行这些计算。20世纪90年代,Baltimore指出,生物学已经变成对细胞和所有生命过程中所蕴涵的信息处理过程进行研究的一门学科。计算机科学家一开始并不愿意参与其中,但却对计算科学表达了坚定的拥护,从而导致了计算领域中的一场科学复兴运动(来源:Wikipedia Creative Commons)

相关文章
|
3月前
|
算法 搜索推荐 图计算
图计算中的社区发现算法是什么?请解释其作用和常用算法。
图计算中的社区发现算法是什么?请解释其作用和常用算法。
25 0
|
6月前
|
监控 Java Serverless
函数计算的基本概念
函数计算的基本概念
47 0
|
2月前
|
弹性计算 人工智能 Serverless
函数计算基本概念
函数计算基本概念
30 8
|
3月前
|
算法 搜索推荐 数据挖掘
图计算中的图算法有哪些常见的类型?请举例说明每种类型的算法。
图计算中的图算法有哪些常见的类型?请举例说明每种类型的算法。
36 0
|
人工智能 运维 架构师
如何用 7 分钟玩转函数计算?
如何用 7 分钟玩转函数计算?
如何用 7 分钟玩转函数计算?
|
人工智能 运维 架构师
如何用 7 分钟玩转函数计算?
阿里云是国内最早提供 Serverless 计算服务的云厂商。2017 年推出的函数计算 FC 是一款 FaaS 产品,这是一种以事件驱动为核心的全托管计算服务,用户只需编写代码并上传,函数计算就会自动准备好计算资源,以弹性、可靠的方式运行代码,并提供完整的可观测能力,大幅简化开发运维过程。
如何用 7 分钟玩转函数计算?
逻辑代数基础
逻辑代数基础
224 1
逻辑代数基础
|
存储 人工智能 监控
函数计算使用场景
函数计算使用场景
229 0
|
存储 人工智能 监控
“晕乎乎的概念”:阿里云函数计算的“应用”又是个啥
为什么阿里云函数计算发布了这么多功能,只有少数的功能会伴随着体验活动一起来做运营?那么这个“应用”到底是何方神圣?他和现在“服务”,“函数”有啥关系?
“晕乎乎的概念”:阿里云函数计算的“应用”又是个啥
|
vr&ar
【计算理论】计算理论总结 ( 上下文无关文法 | 乔姆斯基范式 | 乔姆斯基范式转化步骤 | 示例 ) ★★
【计算理论】计算理论总结 ( 上下文无关文法 | 乔姆斯基范式 | 乔姆斯基范式转化步骤 | 示例 ) ★★
513 0

热门文章

最新文章