200. 计算机真正的发明人(1)

从2016年6月11日开始算,已经快3年了,我做了200期电台。我自我感觉还是挺良好的,自我感动一下。200期,算是一个新的开始,我想还是做我自己知道的最多的东西,我是在20年前上的大学,在大学里我到处找关于计算机的资料,对计算机最了解的其实是2000年以前的故事。我知道我讲这些题材永远也不会火,毕竟太古老了,可惜的是,赚钱的,能卖货的行业我实在是没能力去做。就算我知道卖口红卖面膜这些肯定能赚钱,但是我自己的油腻中年男形象,只会编程的专业技能并不能让我当一个卖口红卖面膜的网红。所以,我目前的想法是用个几十期的内容,讲一下我曾经研究过的1940年代,也就是二战刚开始一直到第一次互联网泡沫的2000年左右。跨度在60年左右,希望我能够每周更新一期。

闲话少说,这一期从1937年开始讲起。

当我们拿到国内任何一本计算机编程的书,如果要介绍计算机的历史,总会提到一个机器叫ENIAC,这台机器太有名了,以至于几乎所有的教课书上都会把这台机器称之为第一台计算机,这台计算机的两个主要的设计者John Mauchly和J Presper Ecket称为计算机专利的拥有者,说是他们发明了计算机。但是实际上并不是这样,在1973年,一场打了数年的官司终于落下帷幕,法院判决第一台计算机的真正发明人是另外两位美国人,一个是John Vincent Atanasoff,另一个是Clifford Berry。他们两个人发明的计算机被称之为Atanasoff-Berry Computer,也可以简称为ABC电脑。

这一期就是他们的故事。

在1937年,美国刚刚经历了严重的经济危机,1929年华尔街股市崩盘,这次被称为20世纪最大规模的金融危机肆虐了美国多年。这种恐惧随着照片和报纸的普及对美国人造成了深深的恐惧,高达20%的失业人口四处流浪,这种动荡让美国无暇顾及外部的世界。当时在遥远的亚洲,日本侵略中国,美国记者王小亭拍的一张《中国娃娃》,记录了日本轰炸上海火车站对中国人造成了伤害,这张照片在1937年被刊登在美国《生活》杂志10月4日的封面上,但是美国无动于衷,甚至日本在侵华过程中,击沉了一艘美国海军的巡逻艇,美国政客仍然忍气吞声。

在这种困苦并且压抑的气氛中,想要创新是何等的困难。一个34岁的Iowa State大学物理系的副教授也正在为此所困,这个与同事关系冷淡,与当时如日中天的IBM公司的制表机销售代表又经常吵架的男人,又恰好有一个不被当时美国人所理解,甚至有些不合群的嗜好,他喜欢喝酒。在1920年到1933年,美国全国上下推行了严格到近乎荒谬的“禁酒令”,虽然在1937年“禁酒令”已经撤销,但是保守的Iowa州仍然没有多少卖酒的店。这个人的名字叫Atanasoff,也就是本文的主角之一。毕竟是大学教授,当美国普通工人只有年收入600美元的时候,他的年收入有1000多美元,并且他有自己的座驾,一辆新款的福特车,每当他又和同事有冲突,或者他再次请求IBM的制表机推销员改进一下他们的计算设备,以便让他可以完成他教授的量子物理所需要的30个变量30个方程的计算,而被再次拒绝的时候,他就会开着他的福特车,到离他的学校200公里外伊利诺斯州的喝酒。

在1937年年底的一个夜晚,他希望IBM能改进一下他们的制表机,以便能完成他的计算,这一次,和往常一样,IBM的工作人员又再一次拒绝了他。他愤怒的不再租用IBM那台由齿轮,杠杆和转盘组成的机器,他决心一定要自己做一台真正满足他要求的机器出来。也和往常一样,他又开车200公里去隔壁的伊利诺斯州借酒消愁。在开车去的路上,他突然想到了答案,也许他可以做出一个真正的计算机,而不是像IBM那样,用齿轮和杠杆计算。这其中的奥秘就是用二进制。

Atanasoff的母亲是一位数学老师,他早慧的儿子在十岁前就学会了如何使用计算尺,这位母亲就开始教孩子学习当时的二进制数学和数理逻辑。多年以后,Atanasoff的儿子小Atanasoff以及Iowa State大学为Atanasoff设立了纪念馆,还出版了介绍Atanasoff的书,里面收藏非常丰富。虽然现在已经没法考证为什么Atanasoff想到了使用二进制来制造计算机,但是他确实是世界上少数几个想到使用电阻,放大器,电容来制造计算机,而不是使用齿轮,杠杆来制造。

几乎世界上所有国家都是使用十进制,所以当年所有的计算设备都是使用十进制。实际上,这可能是因为人有十个手指的原因,对数字系统而言,可以使用任何进制,比如苏联在制作计算机的时候,曾经使用过3进制。Atanasoff想到的是使用二进制,在这种计数系统中,数字的每一个位置不是1就是0,当这些数字做加法运算的时候,只会产生三种情况,一种是1,一种是0,还有一种是一个进位再加一个0。当Atanasoff想到这个方法以后,接下来的日子里,他把这个方法完善了。他自己设计了一个包含266位二进制的机器,这个266位是当时IBM的制表机所能计算的最高的精度。因为他制造这台机器的一个重要原因是他要让羞辱他的IBM公司看看。

当他在决定了二进制以后,摆在他面前的是如何存储这些二进制数字。记录二进制只需要用有电和没电两种状态来表示,因此很自然的,他想到了使用电子管,而且是大量的电子管。问题只有一个,当时电子管10美元一个,他设计的计算系统至少需要266个电子管,光买电子管就要用到2660美元,这是他不吃不喝,也需要2年半才能攒起来的钱。于是,他只能想另外的一些方法。

电子管可能用存储电荷或者放大电流的方法来表示二进制的某种状态,如果只用来表示二进制有点浪费资源了,他只需要用是否存储了电荷来表示二进制的状态,于是,他想到了用更便宜的电容。相比于电子管,电容有太多的缺点,比如更容易损坏,非常容易丢失状态,但是有两个优点,最大的优点是当时的电容只要2美分就能买一个,另一个优点是Atanasoff对电容极其熟悉,他拥有几项与电容相关的专利,他的博士论文就是设计一种纸制的电容。他设计了一套用自行车链条带动的滚筒,滚筒每秒钟旋转一圈,每旋转一次,就会对滚筒上的电容进行一次充电放电的操作。充电后代表数字1,放电后代表数字0 。这也是现代计算机内存的基本原理。

在确定了二进制计算系统和如何存储这些数字以后。在他的计算机拼图里,还有最后一块拼图没有完成,那就是如何设计这些计算电路。这个计算电路才是真正有革命性创新的地方。

当时已经有计算设备,但是都是用齿轮这些模拟设备制作的。比如在计算3 * 7 = 21的时候,是模拟计算的3次7相加,这其中要用不同的齿轮来记录旋转的次数。如果在计算的过程中,也需要用到齿轮的话,这并不算特别的创新。Atanasoff就思考有没有一种可能,让计算的过程不需要用到齿轮和杠杆这些机械设备,而是完全在电路上进行?在1938年,他设计了很多电路,其中最著名的三个电路“与”“或”“非”电路已经成了所有计算机系必须要学习的计算基础。1938年,他独自一人设计了人类史上第一个加法器电路,很快又实现了减法,乘法和除法的电路,这是人类第一次不再使用齿轮和杠杆来计算数学。他把他的这项发明命名为“加减机制”,并且向他所在Iowa State大学申请了一个项目,虽然学校并不知道他在做什么,但是还是在1939年给了他650美元,让他试一下。

在1939年的650美元还是很多的,放在今天相当于美国汽车工人一年的工资,还是很多的。有了这650元钱,他雇了一个研究生和他一起做这个项目,他的研究生名字叫Clifford Berry,也就是Atanasoff-Berry Computer中Berry这个词的来源。我再来稍微介绍一下这个Clifford Berry,他也很历害。[我电台做了200期,其中讲了很多的人,好像每个人都很历害,搞的我有点不好意思了,说实在的,能无中生有做出计算机来的人,都不是普通人。这个人也不例外,他也很历害。很抱歉,至今我还没有发现哪个人资质平平,什么都不出色,像我一样,结果还做出了一些改变世界的软件和硬件的人。]这个Clifford Berry在上大学之前,课程全优,在初中时候,就已经做了一些无线电,成了远近文明的无线电大牛,在高中还没毕业的时候,就被一家电气公司招聘去当了技术员,还给他提供大学学费,他上的大学也是Iowa State大学,期间他选了Atanasoff的量子物理,Atanasoff认为Berry是他教过的最好的学生,于是Atanasoff就找到他,问他愿不愿意读他的博士,给钱。Berry同意了。

Berry从小就能手工制作收音机,他很快就学会了Atanasoff的计算思想,马上对他老师的设计进行了改进。他老师本来打算用自行车的齿轮加上链条来带动装满电容的滚筒,但是用手工的方式很难控制每秒钟刷新一次电容。他后来改进成了用电动机来精确控制转动的速度。他的老师本来想用266个电容,他自己改成了每排30个,总共50排,这样可以表示1500个二进制,大大超过了IBM当时机器的精度。他还设计了输出设备,这个Berry把IBM的穿孔卡片打印机做了修改,可以用高压电在纸带上烧洞,而不是用机械的穿孔方法,这样大大加快了输出速度。

他们在1940年底做出了这台机器,当时的教授们特别开心,比IBM的机器要好用,所以他们排队来使用。Atanasoff和Berry就决定,要用这个机器赚一笔钱再说。他们就开始着手开公司,注册专利。他们做了一系列的评估,希望Iowa State大学可以拿一笔钱出来让他们开公司,在保守的估算了一下以后,他们想从学校拿5000美元的钱来推动这件事,这5000美元相当于10个工人一年的工资。然后不出意外的,Iowa State觉得你们造的机器好是好,但是让我们拿出这么多钱来,那是不可能的。学校里给出的解决方案是,可以给Berry这个学生发更多的薪水,但是没钱再给你雇更多人了。

于是这个项目被半取消了。在1940年12月,Atanasoff去费城参加了一个会议,会议的主题是如何使用机器做天气预报,在会议上,他结识了同样去参加会议的另一个教授,这个教授是流体力学的专家,他们的结识,却让计算机的发展走向了另一条发展道路,也导致了日后一场旷日持久的官司。

当时这个会议的名字叫美国科学进步协会(American Association for the Advancement of Science, 可以综写为AAAS)。我上面讲了,当时美国的政治环境非常的压抑,连日本在中国炸了一艘美国巡逻艇都不反击,所以,虽然很多计算机书上都说计算机的发展来源于军事,我认为是值得讨论的,起码在这次会议上没有任何军事的迹象。这个会议主要的议题有两个,一是如何使用机器做天气预报,当年还不能准确的做天气预报。另一个议题是如何使用计算机研究太阳的活动。起码我看起来好像是和军事以及战争没有太多直接的关系。毕竟没有计算炮弹的弹导。

当时参加会议的大都是物理学家和数学家,像本文的主角之一Atanasoff就是物理学家,他去参加这次会议还有个目的是看看当时还有什么样的机器,有没有一台可以和你造的机器相媲美的机器。用现在流行的一句话来说就是越看越放心,在会议上他看到了一台宾夕法尼亚大学的微分分析机,这台机器已经上最先进的机器了,但是不管运算精度还是运算速度,都比他做的机器差的多,因为这台微分分析机还是机械计算的,只是齿轮和杠杆更精密了,比起用电路计算来,肯定是质的差距,电路是光速计算,齿轮转的再快,也不可能有光的速度。再说精度,比起他的1500位二进制的精度,齿轮所能表达的精度要差几个数量级。

Atanasoff是一个思想家,他富有远见,有创新力,但是他在处理人际关系的时候总是出问题,比如他和同事关系冷淡,和IBM的工作人员经常争吵,这显示了他性格的弱点。在电脑这件事情上,他也像个思想家一样,在会后,他把他设计的思想都告诉了另外一个教授。

这个故事下期再说。

刘延栋 wechat
欢迎扫一下关注我的公众号:软件那些事儿
欢迎收听我的电台,你的支持将鼓励我继续前进