计算机简史(4)悲情英雄巴贝奇
到了十八世纪末,工业革命之火从英国开始蔓延到欧洲大陆,特别是法国。各种行业机构和政府部门都要应对大量的计算工作,他们迫切需要有一种能快速查找计算结果的表格,于是对数表,平方根表,立方根表,三角函数表等等各种数学计算表格应运而生。
1784年,法国政府决定制订新表以更换旧有的对数和三角函数表。要知道工程计算中涉及到的数据量和精确度是各不相同的,能够制出一个完美的速查表格是多么的重要。项目由六位杰出的数学家负责设计算法,他们的七八位下属再带领手下近百名员工进行具体计算。两年后这个团队给出了十七卷手写的表格,可是竟然没有发表,原因是担心记录中存在致命的手写错误,就这样耗时两年的心血付诸东流。当时的数学家们对这种表格制造过程也是头疼不已,怎么才能保证计算结果万无一失呢,显然人的力量在繁复枯燥的计算工作里的表现是靠不住的。
人们不禁有一个疑问,为什么工程计算中要使用各种数学表,而不是直接计算结果?谈到这个问题就要说说对数这个神奇的数学工具了。
让我们回到十七世纪初的欧洲吧,当时数学计算的工作非常多,而且数字越来越大,比如当时的天文学正在蓬勃发展,天文学家们不得不埋头于大量天文数字的计算之中。在帕斯卡的加法机还没有发明出来之前,数字计算只能通过纸笔或算盘完成,即使在帕斯卡的加法机之后,那些复杂的乘除运算,开方或幂运算也是无法付之于机器的,何况数字巨大,位数众多,精度要求很高。
1614年,苏格兰数学家约翰·纳皮尔(John Napier)发明了对数。可以说他的这项发明把科学家工程师们拖出了计算的苦海,当时著名天文学家拉普拉斯不无感叹地说:“对数,可以缩短计算时间,在实效上等于把天文学家的寿命延长了许多倍。”
为什么对数能缩短计算时间?
利用对数的性质可以把乘法转换为加法计算,把除法转换为减法计算,开方运算可以简化为除法运算。我们举几个例子体会对数运算的神奇效率。
例如乘法运算 65849 X 458 = 30158842
转换为对数计算:
65849 X 458
= log(65849)+ log(458 )
= 4.818549184 + 2.660865478
= 7.479414662
然后把这个结果进行以10为底的幂运算
得出的结果近似于近似等于30158842。
这个计算过程给人的感觉还是很麻烦,直接使用纸笔计算也能很快得出结果,为什么要转为对数计算呢?这是因为我们举的例子中的两个乘数不是很大,当数字位数增加到天文数字,计算难度可想而知。
对数运算最根本作用是把巨大的数字拉回到较小的数字区间内,因为这个缩放比例是指数级别的,所以不管是多大的数字都可以用较小的对数来表示,那么计算也就会简单很多。但前提是,我们必须快速知道任何一个数字的对数值,这就要求有一个方便的对数表可供随时查询,否则在计算过程中要实时计算对数那就得不偿失了。
因为对数所用到的数字区间相对巨量数字来说比较狭窄,这就使制表成为可能。于是数学家们把对数制成表变成书籍以便计算时对照查询,但是效率还是不够高。不难想象在计算过程中要不停地翻阅一本厚厚的对数表也是一件相当麻烦的事。
在约翰·纳皮尔对数概念发表后不久。牛津的埃德蒙·甘特(Edmund Gunter)发明了一种使用单个对数刻度的计算工具,当和另外的测量工具配合使用时,可以用来做乘除法,这就是计算尺。
1630年,剑桥的威廉·欧垂发明了圆算尺,1632年,他组合两把甘特式计算尺,用手合起来成为可以视为现代的计算尺的设备。
直到上个世纪六七十年代计算尺还是工程专业人员的必备工具
不管计算尺如何完善,还是不能应付工业革命时期的需求,各种数据表的书籍浩如烟海,而且错误在所难免。而且计算尺有一个致命的缺陷就是精度问题,标准计算尺只能达到三位数的精度,所以很多在精度方面要求严谨的数据运算不得不借助各种数学表。
这时英国人查尔斯·巴贝奇出现了。巴贝奇是活跃于十九世纪的数学家,一出生就是个富二代,父亲是个银行家,是名副其实的富爸爸,作为富二代的巴贝奇并没有纨绔子弟不学无术的作风,相反他是个天才的数学家。
查尔斯·巴贝奇于1791年12月26日出生于伦敦,他是家里的长子,父亲本杰明·巴贝奇开始是一位金匠,后来在商业领域风生水起,成了一位富有的商人兼银行家。查尔斯的祖父也叫本杰明·巴贝奇,是德文郡托特尼斯的市长,家庭环境可谓优渥。
巴贝奇的父亲直到1790年在自己38岁的时候才离开德文郡前往伦敦,随后加入位于廷茅斯的一间叫做比东地产的银行。查尔斯的母亲伊丽莎白也来自于德文郡的一个显赫家族。这对夫妻在巴贝奇之后又生了两个男孩和一个女孩,不幸的是两个男孩早夭。生于1798年的妹妹名字叫玛丽·安,巴贝奇与这位妹妹一生都很亲近。
年幼的巴贝奇是作为一个英国圣公会教徒被带大的,而且是在家里接受了早期教育。巴贝奇的童年时代是在慢性病中度过的,大人们认为乡间的生活会对他的疾病有帮助,所以父母在他八岁的时候把他送到了一所乡间学校。1803年,在巴贝奇13岁的时候一家人搬回德文郡,并把他送到离伦敦不远的一个名叫埃菲尔德的的小乡村里的寄宿学校,巴贝奇在这里一呆就是三年。学校里一名叫斯蒂芬·弗里曼的教师是位天文学爱好者,是他唤醒了小巴贝奇对科学和数学的兴趣。
离开埃菲尔德后巴贝奇进入一间靠近剑桥的规模很小的学校,他在这里学习了几年,可能他的父母在考虑让他为进入剑桥大学做些准备,但学习生活并不愉快,在他十六七岁的时候返回德文郡与父母住在一起,开始跟着一位家庭教师学习拉丁文和希腊语,同时花费大量时间和精力自学数学,他对代数学投入了极大的热情,找到所有能找到的书籍来自己研究。
1808年,巴贝奇一家搬入位于廷茅斯东部老罗登的一所房子,与此同时父亲本杰明成为靠近迈克尔教堂街的区长。1810年19岁的查尔斯进入剑桥大学三一学院学习。崭新的大学生活对查尔斯来说一切都是新奇的,从环境,书籍到社交生活都充满新鲜感。在这里他遇到了此后维持一生的朋友,他的一天是从应接不暇的聚会开始的,各种好吃好喝的,周日做完礼拜和朋友们一起吃早餐,下棋和玩扑克,也会去康河游玩。
在求学期间他就有了一个想法,并且把这个想法写道了回忆录里:“一天晚上,我坐在位于剑桥的分析学会的屋子里,我的头抵在桌子上进入一种半睡半醒的状态,桌子上摊着一本打开的对数表。这时另一个家伙走进来看见我正在犯迷糊,随口说到:“喂,巴贝奇,你在做什么白日梦?”,我答道:“我在想这些表格应该可以用机器算出来”。
毕业之后的巴贝奇并没有立即投入到他的计算器的研究中,而是和一个同为富二代的小姐结婚生子,过了几年逍遥日子。
当巴贝奇意识到各种计算表的问题后,决定发明一个机器,目的是计算一切函数,扫除所有表格中的人为差错。这个机器只需要两个功能,一是能计算,二是能制表。巴贝奇认为在整个制表过程中无论数学家如何优化计算过程,只要底层工作还无法摆脱人力,就永远解决不了这个问题。
法国人杰卡德的提花编织机给了巴贝奇灵感,既然机器可以按照编制好的花样图案运行编织出人们想要的布匹,各种函数计算过程当然也可以按照编制的程序在机器上运行。
巴贝奇开始行动把自己的想法付诸实践,从图纸设计到用车床制造零件全部由他一人完成。1822年,一台可以工作的模型机问世,这就是差分机0号,通过转动手柄,联动齿轮运转,能够进行一些简单的运算,虽然这个模型机只是他庞大计划的一部分,但足以证实他的想法是对的。同年,巴贝奇在皇家学会发表了一篇论文《论机械在天文及数学用表计算中的应用》,差分机的概念从此诞生。
巴贝奇知道要想完成整个差分机的制造,靠他一人之力肯定是不可能的,尽管他可以从父亲那继承一笔可观的遗产,但费用还是相差很大,他决定找人获得外部资金支持,于是写信给时任皇家天文学会会长,向其解释差分机工作原理并恳请资助,英国政府也觉得有利可图,两年后巴贝奇得到政府的资助,第一笔资金是1500英镑,他开始制造全尺寸的差分机。
其实差分机的思想并不是巴贝奇第一个提出的,早在1784年德国工程师米勒就有了这个设想,但是很可惜没能得到政府的支持,这一历史重任最终留给了巴贝奇。
差分机一号制造过程还是花费了10年之久,限于当时制造工艺的水准,建造速度很难提升,为了制造某个模块,巴贝奇不得不再建造一套制作这个模块的机器,和他合作的Clement是一个一流的机械工程师,也因为英国政府对这个项目持续长达10年的拨款赚了大钱,而且他的厂房也因为巴贝奇的各项发明武装起来而成为当时英国境内最先进的机械制造之地。巴贝奇对工艺的要求有时达到了变态的程度,也导致二人在后期合作过程中越来越来困难,甚至巴贝奇被他要挟如果不能定期注入资金,很多设计图纸和精密零件就不会交付。
尽管巴贝奇想尽办法优化设计,当这架以蒸汽为动力的差分机一号亮相时,重达两吨的庞然大物还是让世人为之震惊,于此同时英国政府也要做阶段性的项目审核,发现整个计划花掉了17500英镑,相当于当时22台蒸汽机或两艘战舰的价格,尽管这架机器只实现了设计图纸的七分之一,但运算精度达到了六位小数,能演算出几种函数表格,非常适合于编制航海和天文方面的数学用表。但无论如何差分机一号离和政府约定的目标相去甚远,时间和财力也花费甚巨,停止继续资助也是情有可原。重点是这个高达10英尺的家伙其实只是设计图纸的七分之一。
面对英国政府的撤资,巴贝奇反而愈挫愈勇,在十年之久的建造过程中他积累了丰富的经验,有了更大的野心,相信自己能够建造出算力更强大的机器。
巴贝奇的差分机二号已经在脑海中酝酿良久,于1846年开始提升设计,把计算精度提升至31位,能进行7次差分计算,即能解七次多项式,但没了政府的资助,设计方案只能停留在图纸上,最终差分机二号没能进入制造阶段。
其实巴贝奇已经不满足于差分机的制造,在进行差分机一号项目的时候他就开始谋划更加复杂的分析机,这是一项更加雄心勃勃的计划,1834年他在给时任首相的一份陈述报告中提到了分析机,在他的设想中这是一台更加通用和强大的机器。他建议英国政府放弃差分机的项目,开始分析机的建造。
分析机和差分机简直是两个完全不同的机器,其设计思想有云泥之别。差分机的功能只是通过差分运算解决多项式问题,然后打印出表格,辅助各种数学用表的制作,减少人工错误。分析机的设计一下子把机器计算从地面直接推到云端,其设计目标是解决所有计算问题。
分析机的设计工作经历近三年的时间才完成,巴贝奇于1837年发表了论文,详细讨论了这台机器的运行原理。他的分析机包含四个部分:输入,输出,内存,中央处理器。
直到今天,电子计算机的组成部分基本上也是这些,没有发生大的改变,可以说巴贝奇在近两百年前就奠定了计算机的工作模式,只不过他的实现是依赖齿轮,传动轴和链条,动力采用蒸汽机,在今天看来也是极其魔幻的朋克作品。
我们来看看分析机的四个部分是怎么工作的:
- 输入:打孔卡,与可编程提花编织机如出一辙。
- 输出:打印机,把计算结果打印到纸面上。
- 内存:利用一根根刻着数字的轴存储运算过程的中间结果。
- 中央处理器:运作机制很像现代计算机的处理器,能够寄存要立即处理的数字,并操作这些数字完成基本的运算,还能把外部输入的指令翻译成内部的机器操作,按精确的时序执行操作。
在分析机的设计开发过程中,巴贝奇遇到了一位天才助手,这是一位优雅的贵妇,出身名门,她的父亲就是大名鼎鼎的诗人拜伦,丈夫是罗弗莱斯伯爵,她的名字叫埃达(Ada)。
埃达的童年并不幸福,其父拜伦只想要个儿子,所以当妻子生下埃达时,拜伦失望至极,一个月后把这对母女赶出了家门。我们很难想象大诗人拜伦能干出这种事。
回到娘家的母女本应依照英国法律享有拜伦的监护权,但拜伦不想要,只委托姐姐在有需要时帮忙联络。埃达的母亲一辈子都在指责拜伦的抛弃妻子行为,也因为拜伦的大名,埃达从小就很出名,在她八岁时,拜伦死去,他也从未见过父亲,甚至直到20岁母亲都不给她看拜伦的画像。这对母女的关系也始终处在一种貌合神离的状态中。
埃达从小对数理逻辑感兴趣,十二岁时开始分析各种材料,计算鸟类的身体和翅膀的比例,因为他的第一个梦想就是飞翔,或许和她小时身体不好,曾因麻疹瘫痪一年的惨痛经历有关。
当巴贝奇遇到埃达时,埃达还待字闺中,不过已经是王室的常客,冰雪聪明秀丽可人的埃达成了人们迷恋的对象。让巴贝奇最感兴趣的还是埃达的数学天赋,埃达对巴贝奇分析机的设计如痴如醉,花了九个月的时间翻译整理了意大利数学家路易吉·米那比亚对巴贝奇分析机的研究论文,并写下大量的注记。
她在注记中详细阐述了如何利用分析机计算伯努力数的方法,她的算法被称为世界上第一个计算机程序,所以,埃达也被程序员认为是行业鼻祖。最难能可贵的是她写过一篇完整的文章来说明分析机除了计算以外,在其他方面的可能性,这种深邃的洞察力和前瞻思维完全可以直指现代通用计算机的本质。
1953年,也是埃达逝世一百周年,她的分析笔记被重新公布,被认为对现代计算机与软件工程造成了重大影响。
离开了政府的资金支持,巴贝奇的分析机始终停留在图纸上,他花费了此后几十年的努力也只是建造了它的一小部分。埃达一方面沉迷于分析机的神奇设计,一方面被巴贝奇的雄心壮志所感动,二人在此后长达九年的时间里紧密合作,甚至为了筹措资金他们不得不下海搞创收,埃达一度变卖自己的首饰珠宝为巴贝奇筹措资金。但是他们二人对分析机的设计太过前瞻,他们的设想超越所处时代一个世纪,那是一项不可能完成的任务。
贫困交加中,埃达的健康状况迅速恶化,1852年,年仅36岁的埃达怀着对分析机的美好梦想和不可言说的悲怆离开了这个世界,一代软件奇才,香消玉殒。
埃达离去后,巴贝奇又孤独地坚持了19年,晚年的巴贝奇已经不能精准地发音,甚至不能准确表达自己的思想,但铺在分析机上的工作从未停止。
巴贝奇的伟大是远远超越时代的,以十九世纪初的工业能力要完成像分析机这样复杂精妙的机器是何等困难。他就像一个从20世纪穿越回去的先知,把100多年后的思想透露给世人,尽管他没能看见差分机或是分析机在自己的手中被完全制造出来,但他给当时的世界留下了几十种设计方案,两千多张设计图纸,五万多张零件图。他的思想和智慧被同时代的天才们广泛接纳和继承,很多人在他的研究基础上自造出了差分机,并被用于重要的计算领域。
由于现存下来的分析机图纸并不完整,如今也没有人能把它建造出来。
就在巴贝奇研制差分机二号和分析机的同时代,很多人受他的启发开始研发差分机。
同时代的瑞典人佩尔·乔治·舒茨(Per Georg Scheutz)在借鉴巴贝奇的设计之后,于1843年建成了一台支持5位数、3次差分的差分机,随后又分别在1853和1859年建成了两台支持15位数、4次差分的机器,先后由美国纽约的一家天文台和英国政府购买使用。
舒茨之后,还有来自瑞典、英国、美国、德国、新西兰等多国的发明家和公司在1859~1931年间都成功建造了差分机。
视频中的差分机是根据巴贝奇的设计图纸由前微软CTO内森·梅尔沃德负责建造了第2台差分机2号,在美国加州的计算机历史博物馆展出(现存于梅尔沃德创办的高智发明公司),由工作人员现场讲解和演示,参观者得以更直观地感受其工作机理。
当机器运行起来的时候,精密的齿轮开始转动,数轴上的数字开始滚动进位,你很难想象这是近两百年前的设计。
1871年,悲情英雄查尔斯.巴贝奇逝世,这一年是大清同治10年,德国完成统一,巴黎公社成立。
附巴贝奇著作列表:
《机器在数学表计算中的应用》(1822)
《论用符号表示机器动作的方法》(1826)
《各种人寿保险机构的比较观点》(1826)
《关于调节机器应用一般原则的论文 》(1829)
《关于科学在英国的衰落及其某些原因的思考》(1830)
《论机器和制造业的节约》(1832)、
《有关征税原则的思考,关于财产税及其减免》(1848)
《一个哲学家生涯的片段》(1864)