一、世界上第一台计算机
世界上第一台可编程计算机,不是你们想的那样,对对,不是ENIAC!
它是阿塔纳索夫和克利福德·贝瑞的阿塔纳索夫-贝瑞计算机(Atanasoff–Berry Computer,通常简称ABC计算机),他们的计算机工作直到1960年才被发现和广为人知,并且陷入了谁才是第一台计算机的冲突中。那时候,ENIAC普遍被认为是第一台现代意义上的计算机,但是在1973年,美国联邦地方法院注销了ENIAC的专利,并得出结论:ENIAC的发明者从阿塔纳索夫那里继承了电子数字计算机的主要构件思想。因此,ABC被认定为世界上第一台计算机。
这台计算机在1937年设计,不可编程,仅仅设计用于求解线性方程组,并在1942年成功进行了测试。然而,这台计算机用纸卡片读写器实现的中间结果存储机制是不可靠的。而且,在发明者约翰·文森特·阿塔纳索夫因为二战任务而离开爱荷华州立大学之后,这台计算机的工作就没有继续进行下去。ABC计算机开创了现代计算机的重要元素,包括二进制算术和电子开关。但是因为缺乏通用性、可变性与存储程序的机制,将其与现代计算机区分开来。这台计算机在1990年被认定为IEEE里程碑之一。
这台计算机虽然是非图灵完备的,但是其实现了三个关键思想,这些思想在现代计算机中仍然是一个组成部分:
使用二进制数表示所有的数值和数据
使用电子器件进行所有计算操作,而不是滚轮、棘轮或者机械开关
计算和存储在系统中分离成两部分
另外,这套系统开创了对蓄热式电容内存的使用,今天它仍在DRAM中广泛使用。
二、第一台通用电子计算机 ENIAC
ENIAC(/ ɛ Ñ我æ ķ /;电子数字积分计算机)是第一可编程,电子产品,通用数字计算机。它是图灵完备的,并且能够通过重新编程来解决“大量的数值问题”。没错,他和ABC计算机的关键区分是通用、图灵完备。
什么叫图灵完备?
在可计算性理论,如果一系列操作数据的规则(如指令集、编程语言、细胞自动机)可以用来模拟任何图灵机,那么它是图灵完备的。这意味着这个系统也可以识别其他数据处理规则集,图灵完备性被用作表达这种数据处理规则集的一种属性。如今,几乎所有编程语言都是具有图灵完备性的。这个词以引入图灵机概念的数学家艾伦·图灵命名。
还有一个相关概念是图灵等价 – 如果P可以模拟Q并且Q可以模拟P,则两台计算机P和Q称为等效计算机。邱奇-图灵论题认为任可以通过算法计算其值的函数都可以由图灵机计算,因此,如果任何真实世界的计算机都可以模拟图灵机,则其对图灵机是图灵等价的。通用图灵机可用于模拟任何图灵机,且可以扩展现实世界计算机的计算方面。
如果某物是图灵完备的,则它可以用于模拟某些图灵完备的系统。例如,一个指令式编程具有条件表达式(例如,“ if”和“ goto”语句,或者“branch if zero”的指令;请参见单一指令计算机)并且具有更改任意指令的能力,则他为图灵完备的。当然,任何物理系统都不可能拥有无限的内存。但如果忽略了有限内存的限制,则大多数编程语言都将是图灵完备的。
二战时美国陆军的弹道研究实验室(即后来的一部分陆军研究实验室)为了计算火炮弹道射击表,雇佣了很多女性员工(男人都去打仗了)来进行数据记录和计算,但是他们渐渐发现按照人工计算速度,可能等到项目负责人有孙子都还没能计算完成,因此他们迫切的需要一款计算机能够代替人工,提高计算速度。
ENIAC由美国宾夕法尼亚大学的John Mauchly和J. Presper Eckert设计。协助开发的设计工程师团队包括Robert F. Shaw(功能表),Jeffrey Chuan Chu(除法器/平方根), Thomas Kite Sharpless(高级程序员),Frank Mural(高级程序员),Arthur Burks(乘法器),Harry Huskey(读取器/打印机)和Jack Davis(累加器)。ENIAC女程序员承担了重要的开发工作:Jean Jennings,Marlyn Wescoff,Ruth Lichterman,Betty Snyder,Frances Bilas和Kay McNulty。记住这些名字,女程序员也是非常重要的。
研制工作十分幸运的是,当时任弹道研究所顾问、正在参加美国第一颗原子弹研制工作的数学家冯·诺依曼)带着原子弹研制)过程中遇到的大量计算问题,在研制过程中期加入了研制小组。原本的ENIAC存在两个问题没有存储器且它用布线接板进行控制,甚至要搭接几天,计算速度也就被这一工作抵消了。1945年,冯·诺依曼和他的研制小组在共同讨论的基础上,发表了一个全新的“存储程序通用电子计算机方案”——EDVAC(Electronic Discrete Variable Automatic Computer)。在此过程中他对ENIAC计算机的许多关键性问题的解决作出了重要贡献,从而保证了计算机的顺利问世。
ENIAC重30吨,使用了约18800个真空电子管(每5秒就要坏掉一个),功率达174千瓦,占地约140平方米,使用十进制运算,每秒能运算5000次加法,但是它不像现在这样的电脑有输入控制设备,只能通过人工来扳动庞大面板上的各种开关来进行数据信息输入,虽然现在看来它真的很落后,但是在当时它代表着人类计算技术的最高成就,它奠定了电子计算机的发展基础,开辟了信息时代。
ENIAC和ABC计算机的纠纷
约翰·皮斯普·埃克特(John Adam Presper "Pres" Eckert)和约翰·莫齐利(John Mauchly)发明ENIAC,是第一个电子计算设备专利的获得者。约翰·莫齐利曾经在1941年测试过ABC计算机,并且莫齐利以前的学生艾萨克·奥尔巴赫指控说,这影响了莫齐利之后关于ENIAC的工作,虽然莫齐利拒绝承认。1967年,霍尼韦尔起诉斯佩里·兰特,试图推翻他们对于ENIAC的专利,声称ABC计算机是在先技术。1973年10月19日,美国明尼苏达地区地方法院宣布裁决,在霍尼韦尔对斯佩里·兰特的诉讼中发现,ENIAC专利是由约翰·阿塔纳索夫的发明所派生的。这个判决没有人提出上诉。
坎贝尔·凯利和Aspray总结说:
莫齐利对阿塔纳索夫的思想吸取到什么程度仍然是未知的,而且证据非常冗杂且相互矛盾。ABC计算机的技术相当温和,并且没有全部实现。至少我们能推断出,莫齐利看到了ABC计算机的潜在意义,导致他提出了一个类似的电子解决方案。
1973年10月19日,案件在法律上得到了解决,美国地方法院法官厄尔·拉尔森认为ENIAC的专利无效,判决说ENIAC从阿塔纳索夫-贝瑞计算机上继承了很多基础思想。法官拉尔森明确表示:“埃克特和莫齐利并非他们自己首先发明了自动电子数字计算机,而是继承了约翰·文森特·阿塔纳索夫的发明。”
三、约翰·冯·诺伊曼和EDVAC
冯·诺伊曼出生在布达佩斯富裕的犹太家庭,是诺依曼·米克萨(Neumann Miksa)和坎恩·玛吉特(Kann Margit)的3个孩子中最大的一个。他小时候外号“扬奇”("Jancsi",即"János"的昵称),当时已经显出惊人的记忆力。他6岁时已能用古希腊语同父亲闲谈,还可以心算8位数除法,8岁时自学微积分学。年少时的他不但对数学很有兴趣,亦喜欢阅读历史和社会方面的书籍,读过的书籍和论文能很快一句不漏地将内容复述出来,而且多年以后仍是如此。
1913年,他的父亲马克斯·诺伊曼被授予世袭贵族头衔,这样在德国他的后代可以以“冯·诺伊曼”为姓,冯·诺伊曼晋身贵族。约翰加上头衔后的全名成为"Margittai Neumann János"。后来约翰把名字改成德语名"Johann von Neumann"。其名"John"(约翰)意为“主是仁慈的”,姓氏中的"von"是德语介词,而"Neumann"意为"neu"(new)+"Mann"(man),即“新人”。
在第二次世界大战期间,冯·诺伊曼(von Neumann)与理论物理学家爱德华·泰勒(Edward Teller),数学家斯坦尼斯拉夫·乌兰姆(Stanislaw Ulam)等人一起研究了曼哈顿计划。由于在曼哈顿工程中需要大量的运算,从而使用了当时最先进的两台计算机Mark I和ENIAC。
在使用Mark I和ENIAC的过程中,他意识到了存储程序的重要性,从而提出了存储程序逻辑结构,该结构指导了将存储设备与中央处理器分开的概念。
1945年6月,他与戈德斯坦、勃克斯等人,联名发表了一篇长达101页纸的报告,即计算机史上著名的“101页报告”,是现代计算机科学发展里程碑式的文献。明确规定用二进制替代十进制运算,并将计算机分成5大组件,这一卓越的思想为电子计算机的逻辑结构设计奠定了基础,已成为计算机设计的基本原则。
1945年,冯·诺依曼和他的研制小组在共同讨论的基础上,发表了一个全新的“存储程序通用电子计算机方案”——EDVAC(Electronic Discrete Variable Automatic Computer)在此过程中他对计算机的许多关键性问题的解决作出了重要贡献,从而保证了计算机的顺利问世。1951年,EDVAC计算机宣告完成。
EDVAC计算机在体系结构上主要特点有:
以运算单元为中心
采用存储程序原理
存储器是按地址访问、线性编址的空间
控制流由指令流产生
指令由操作码和地址码组成
数据以二进制编码