程京德(Jingde Cheng)的科学网博 ...分享 http://blog.sciencenet.cn/u/JingdeCheng 相关逻辑,软件工程,知识工程,信息安全性工程;自强不息,厚德载物。

博文

计算机与计算模式 (1) 何谓计算机?

已有 6685 次阅读 2015-1-29 05:28 |个人分类:计算科学|系统分类:科普集锦

[敬请读者注意] 本人保留本文的全部著作权利。如果哪位读者使用本文所描述内容,请务必如实引用并明白注明本文出处。如果本人发现任何人擅自使用本文任何部分内容而不明白注明出处,恕本人在网上广泛公布侵权者姓名。敬请各位读者注意,谢谢!


计算机与计算模式 (1)   何谓计算机?

程京德


为了讨论计算模式,我们当然首先需要定义清楚用于实现各种计算模式的基础工具:计算机。到底符合什么必要条件的计算机械方可被称之为“计算机”?我国历史上最常用的计算工具,算盘,算不算“计算机”?人们常用的计算器为什么被称为是“计算器”而不被称为“计算机”?世界上第一台可以被称之为“计算机”的是在哪里,由谁创造的,什么样子的计算机械?本文试图根据世界文献尽可能通俗地回答这些问题。

现代中文名词“计算机”应该是来源于英语“computer”一词(而并非像许多现代汉语词汇那样来源于日语,因为在日语中“计算机”一词是用片假名来表示的)。根据牛津英语词典 [OED,2nd Edition,1989],“computer”的第一意的解释是“One who computes; a calculator, reckoner”(1646-1855);第二意的解释才是“A calculating-machine”(1897-1964)。如今,当我们说到“计算机(computer)”的时候,大概谁也不会把算盘当作“计算机”了。但是,如果就简单地把“计算机”解释为“计算机械”,那么,算盘当然是可以被称之为“计算机”的。显然,当我们从科学或技术的角度来谈及“计算机”以及从其延伸出来的概念时,对所谓“计算机”需要一个比较清晰、严格的定义。

牛津大学出版的计算辞典把“computer”定义为:“A device or system that is capable of carrying out a sequence of operations in a distinctly and explicitly defined manner. The operations are frequently numerical computations or data manipulations but also include input/output; the operations within the sequence may depend on particular data values. The definition of the sequence is called the program. A computer can have either a stored program or wired program. A stored program may exist in an alterable memory or in a nonalterable memory. Today, the term “computer” without qualification is a synonym for “stored-program digital computer.”[1]

IEEE的行业标准辞典把“computer system”定义为:“A system containing one or more computers and associated software.”[2] 但是却没有对“computer”自身的定义!

从现代通用计算机的最基本特征之一“可编程”的观点来看,人类历史上对实现可编程通用计算机械的首次尝试,应该追朔到19世纪英国数学家巴贝奇(C. Babbage)的机械式“解析机”了。但是,巴贝奇的“解析机”从未被称为过“计算机”而最多是被称为“现代计算机的雏形”。这主要并不是因为巴贝奇的“解析机”是机械式不是电子式的,而是因为其组织(逻辑)结构上的不足。20世纪40年代由美国陆军主导,在美国宾夕法尼亚大学研制的,曾经在历史上很长一段时间内被称为世界上第一台“计算机”的ENIAC(Electronic Numerical Integrator and Computer),现在也不被认为是第一台“计算机”了;同样是因为其组织(逻辑)结构上的不足。现在,世界上公认的第一台现代通用“计算机”是20世纪40年代由Maurice V. Wilkes领导的英国剑桥大学数学研究所小组设计和制造的EDSAC(Electronic Delay Stored Automatic Calculator)。那么为何把EDSAC称为第一台现代通用“计算机”呢?这就与“计算机”的定义有密切关系了。

为了能够准确地把现代通用计算机和其它各种计算机械区分开来,以计算机系统结构,亦即,现代通用计算机赖以工作的组织(逻辑)结构来定义计算机是必要的。从计算机系统结构的观点来看,能够被称之为现代通用计算机的计算机械必须同时满足下面三个必要条件[3]。  

(1) “程序控制”:让计算机的通用演算装置按照指定顺序来执行演算指令的控制程序是独立于该演算装置而从其外部提供给它的,演算用的数据也是独立于该演算装置而从其外部提供给它的,从而使得计算机自身能够独立于控制程序和数据进行演算而具备通用性。

(2) “程序内藏”:规定演算顺序的控制程序在计算机实际进行演算之前就已经放置在计算机内部的存储器上,从而使得计算机在实际进行演算时能够以和演算速度同样的速度来取出控制程序对演算顺序实施控制。

(3) “程序可改”:规定演算顺序的控制程序的执行结果,可以修改存放在存储器中的控制程序本身,亦即,控制程序和演算所需要/产生的数据,在存储器中都是同样地可修改的,从而使得计算机在实际进行演算时能够如同处理数据一样地处理控制程序本身。

粗略地说,现代通用计算机自身的通用性,来源于程序控制;现代通用计算机的高速性,来源于程序内藏;现代通用计算机所能完成计算任务之多样性,来源于程序可改。

巴贝奇的“解析机”的确是世界上第一台可编程通用计算机(为解析机编程的是英国诗人拜伦(G.G. Byron)的女儿、法国Lovelace伯爵夫人Ada,世界上第一位程序员;由美国国防部主导设计的通用程序设计语言Ada就是为了纪念她而命名),但它既不是程序内藏的,更不是程序可改的,故而不能被视为现代通用计算机。

ENIAC的确是世界上第一台程序控制并且程序(固定)内藏(改良后的ENIAC)的计算机,但它不是程序可变的,故而不能被视为现代通用计算机。人们常用的(高级)计算器也是程序控制并且程序(固定)内藏的,但不是程序可改的,故而也不能被视为现代通用计算机。从这个意义上来说,ENIAC被称为是世界上第一台现代通用“计算器”,应该是没有问题的。

EDSAC是世界上第一台程序控制、程序内藏并且程序可改的现代通用计算机,于1949年5月6日成功地实施了程序控制的计算。现今世界上所有传统结构的(顺序)计算机,从系统结构的观点来看,与EDSAC没有什么本质上的不同。

最后,蛇足两句(但是并非不重要!)。“ENIAC是世界上第一台计算机”,“ENIAC是John von Neumann发明的”,“程序内藏方式是John von Neumann发明的”,“传统的计算机系统结构是John von Neumann发明的,所以被称为von Neumann结构”,“John von Neumann是现代计算机之父”,等等类似的说法还有一些,所有这些在中文媒体甚至中文专业书籍中时常能见到的陈述,都是早就已经被世界计算机学术界完全否定了的误传;并且,这种状况从笔者读大学的时代就是如此,三十年多来居然还没有什么改变。有兴趣的读者请参照下面的参考文献[3],[4]-[9](按时序列出)。

参考文献

[1] A Dictionary of Computing, 6th Edition, Oxford University Press, 2008.

[2] IEEE Standard Computer Dictionary: A Compilation of IEEE Standard Computer Glossaries: 610, IEEE, 1991.

[3] 星野力,“是谁,如何创造了计算机?” 共立出版社, 1995 (日文).

[4] J.P. Eckert, The ENIAC, 1944. in N. Metropolis, et al. (Ed.), “History of Computing in the Twentieth Century,” Academic Press, 1980.

[5] J.W. Mauchly, “Preparation of Problems for EDVAC-type Machines,” Electronic Control Company, Jan. 1947.

[6] M.V. Wilkes, “Computers Then and Now, 1967 Turing Award Lecture,” Journal of the ACM, Vol.15, No.1, pp.1-7, Jan. 1968.

[7] N. Metropolis and J. Worlton, “Trilogy of Errors in the History of Computing,” First USA-Japan Computer Conference Proceedings, pp.683-691, 1972.

[8] J.P. Eckert, “Thoughts on History of Computing,” Computer, Vol.9, No.12, pp.58-65, Dec. 1976.

[9] N. Metropolis, et al. (Ed.), “History of Computing in the Twentieth Century,” Academic Press, 1980.



http://blog.sciencenet.cn/blog-2371919-863655.html

上一篇:何谓相关逻辑?
下一篇:“人工智能威胁人类论” (1) 谁,到底说了些什么?

12 李亚平 张鹏 姜咏江 孙爱军 黄永义 韦玉程 李颖业 徐晓 刘钢 icgwang yangb919 yunml

发表评论 评论 (10 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2020-12-2 09:04

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部