巴贝奇:现代计算机真正的鼻祖

☞ 欢迎来到神奇的01世界 ☜

从最基本的加法器到真正的四则计算器,一代代世界顶级的发明家不断精进着机器的设计和工艺。从17世纪到20世纪,随着时代的演进,机器驱动也完成了从手摇到电动的革新。即使在电子计算器出现后的几十年里,部分已经停产的机械计算器仍在世界各地的办公桌上服役。

可当我们回顾历史却发现,这个辉煌的、跨越了三百多年时光、汇聚了众多天才智慧的机械计算时代,却仅仅在和加、减、乘、除——简单到不能再简单的基本运算打交道。难道机器只能用来做运算吗?为了解决一个数学问题,人们往往需要将多步运算串联起来,每一次串联不过是将上一步的运算结果直接或经过简单处理后交给下一步而已,而既然运算可以由机器完成,为什么步骤就不可以呢?

数学问题的解决过程

第一个用实际行动验证这一想法的,是来自英国的旷世奇才——查尔斯·巴贝奇(Charles Babbage)。这个今天并不为人所熟知的名字,其实有着艾伦·图灵(Alan Turing)和冯·诺依曼(John von Neumann)那样的重量。

巴贝奇早年经历

查尔斯·巴贝奇(Charles Babbage),1791-1871,英国博学家、数学家、哲学家、发明家、机械工程师。(图片来自维基百科)

巴贝奇出生于英国伦敦的一个富裕家庭,其父亲是舰队街上的一名银行合伙人。上天在赐予优厚的生活条件的同时,也剥夺了他童年的健康。儿时的巴贝奇体弱多病,甚至一度游走在生死边缘,为此他不得不时常转学或休学,在埃克塞特、托特尼斯、恩菲尔德等多地辗转求学,并经历了多任家庭教师。虚弱的体质和坎坷的经历却并没有消磨巴贝奇的学习意志,反而激发出他对数学的天赋与热爱。他勤奋刻苦,善于钻研,最终在一位来自牛津的家庭教师的指引下,考进了剑桥大学。

1810年10月,19岁的巴贝奇来到剑桥大学三一学院。一开始,他对这座顶级学府充满了期待,结果很快发现,大学里常规的教学内容,自己早已在平时的自学中掌握了。倍感失望的巴贝奇只得继续自我精进,并很快在学术界崭露头角。他结识了一群天才朋友,和大天文学家威廉·赫歇尔(Wilhelm Herschel)的儿子约翰·赫歇尔(John Herschel)成为至交。

赫歇尔父子——左:弗里德里希·威廉·赫歇尔(Frederick William Herschel),1738-1822,英国天文学家、作曲家,天王星及其两颗卫星的发现者,恒星天文学创始人。右:约翰·弗里德里希·威廉·赫歇尔爵士(Sir John Frederick William Herschel),1792-1871,英国博学家、数学家、天文学家、化学家、发明家、摄影师,蓝图的发明者。(图片来自维基百科)

1812年,巴贝奇与包括约翰·赫歇尔在内的几位同学一同创办了名为分析学会(Analytical Society)的数学社团,致力于推广莱布尼茨的微积分符号系统。同年,巴贝奇转至同属剑桥的彼得豪斯学院,到1814年毕业为止,一直被公认为学院中数学领域的顶级人物。

毕业后的巴贝奇更是成就非凡,翻开他的履历,里面满满当当写着两个字:高级。

1815年,巴贝奇年仅24岁就在英国皇家学会开设天文学讲座,并于次年成为学会会员;1816年,他与分析学会的同好们一起整理、翻译、出版了法国数学家西尔维斯特·拉克鲁瓦(Sylvestre Lacroix)的学术讲座合集,成为当时最出色的微积分教科书;1819年,在著名天文学家皮埃尔-西蒙·拉普拉斯(Pierre-Simon Laplace)的推荐下,被爱丁堡大学聘为教授;1820年,英国皇家天文学会成立,巴贝奇为创始人之一,由威廉·赫歇尔担任会长。

皇家天文学会的成立之初旨在规范天文学领域的计算,并提高数据的复用价值。巴贝奇对计算和数据有着浓厚的兴趣,他将随后的事业重心放到了这份兴趣之上,也许他自己也不会想到,这一选择,让他的人生开始从优秀走向伟大。

1824年,皇家天文学会将最高奖项——金质奖章授予巴贝奇,以表彰他在这一领域做出的第一份贡献——一种高度自动化的计算机器——差分机(difference engine)。

差分机

差分思想

差分机这个名字,源自其所使用的算法,是帕斯卡在1654年提出的差分思想:n次多项式的n次数值差分为同一常数。这句话概括性高,不太好理解,让我们用几个例子来详细说明。

选用经典数字1024,构造一次函数F(x):

同时定义差分∆F(x):

在x取0~6时,F(x)及∆F(x)的值如下表所示:

x 0 1 2 3 4 5 6
F(x) 24 34 44 54 64 74 84
∆F(x) 10 10 10 10 10 10

不难发现,对于一次多项式,每个相邻的x所对应的F(x)之差都是一个常数,这个常数正是x的系数。那么二次多项式呢?

构造二次函数F(x):

同时定义一次差分与二次差分:

在x取0~6时,F(x)及其一次、二次差分的值如下表所示:

x 0 1 2 3 4 5 6
F(x) 4 16 48 100 172 264 376
∆F1(x) 12 32 52 72 92 112
∆F2(x) 20 20 20 20 20

对于二次多项式,每个相邻的x所对应的一次差分之差(即二次差分)是一个常数。

一次多项式和二次多项式的规律如此,三次、四次,乃至任意多次的多项式都遵循这样的差分规律——n次多项式的n次差分为常数。

差分规律是一项伟大的发现,有了差分,在计算多项式时就可以用加法代替乘法,我们只需要准备好x=0时F(x)及各次差分的值,后面任意x所对应的F(x)值均可通过加法得出。只要有了第1列F(0)、F1(0)和F2(0)的值,第2列的F(1)即可通过F(0)+F1(0)得到、F1(1)可通过F1(0)+F2(0)得到,同理,第3列的F(2)和F1(2)也可根据第2列的数据得到,以此类推,任意列的数据都可通过前一列的数据得到。意即,求解F(n),只需前n列数据的不断迭代。而这整个过程,只涉及加法。

这可了不得!要知道,许多常见的函数在数学上称为解析函数,它们都可以用多项式逼近(幂级数展开),常用的三角函数、对数函数都可以转换为多项式。借助差分思想,这些函数可以进一步转换为重复的加法。而加法运算正是机械计算器的“拿手好戏”,这样一来,绝大部分数学运算就都可以交给机器了。

研制历程

差分机的设想,最早由一位名为约翰·赫尔弗里奇·冯·米勒(Johann Helfrich von Müller)的德国工程师在1784年提出,但他没有得到资金支持,这一历史重任最终留给了巴贝奇。

巴贝奇与差分机的故事,要从1789年法国大革命说起。君主制被推翻后,新成立的国民议会大刀阔斧地推行着多方改革,其中一项很重要的工作就是统一全国混乱不堪的度量衡,这项旷日持久的工程直接导致了后来国际米制的诞生,成为法国对世界科学最伟大的贡献之一。于此同时,原本的数学用表不再适用,需要重新编制。1791年,这项艰巨的任务落在了数学家加斯帕德·德普罗尼(Gaspard de Prony)肩上。

加斯帕德·德普罗尼(Gaspard de Prony),1755-1839,法国数学家、工程师,致力于水力学研究。(图片来自维基百科)

表的规模十分庞大,计算结果需要精确到小数点后14~29位,工作量之巨,已经远不能作为一项数学任务去对待,它已经是个正儿八经的工程。普罗尼想到经济学家亚当·斯密(Adam Smith)那本经典的《国富论》,其中劳动分工的理念令他颇受启发。普罗尼将制表人员分成金字塔式的三层:第一层为5~6名顶级的数学家,负责选择公式、确定计算精度和计算范围;第二层为7~8名普通的数学家,负责计算一些关键数据和初始数据,并为第三层提供计算模板、方法和市里;第三层为60~80名只会基本算术的计算员,负责完成耗时耗力的重复运算,他们大多是失业的理发师,因为大革命后,上流社会的发型设计市场跟着贵族阶层一起瓦解了。

这种创新式的分工方式不仅帮助普罗尼顺利完成了任务,还使他有了足够的自信宣称“制作数学用表可以像生产针一样简单”。

然而最大的问题是,成表的正确率却不尽人意,尽管普罗尼要求每个数据至少计算两遍,并且要在法国的不同地点用不同的方法完成。

多年以后的英国,巴贝奇和约翰·赫歇尔也承担着类似的制表任务。他深入调研了这位前辈的工作,了解到正确率的保障有多困难。他们尝试了各种减少错误的手段,比如调整纸张和墨水的颜色以提高数字的识别度,比如直接拿现有多个版本的表进行誊抄、比对、让不同人员反复校对,结果却依然差强人意。

其实,那个时代基本没有一版数学用表是完全正确的,有些版本甚至错误百出。这些错误可能会造成很严重的后果,比如航海表一旦在关键地方出错可以直接导致船毁人亡。

巴贝奇意识到:只要是人为的,就没有完美的。他思忖着:普罗尼分工模式的最底层,那个最简单却也是最吃力的层次,人员最多也是产生最多错误的层次,可否用机器来代替呢?

1822年6月14日,巴贝奇向皇家天文学会递交了一篇名为《论机械在天文及数学用表计算中的应用》的论文,差分机的概念正式问世。

与论文一起亮相的,是一台简单的原型机——差分机0号。英国政府对它很有兴趣,并于次年拨款1700英镑,希望巴贝奇能做出实用产品,彻底解决制表难题。

拿到启动资金的巴贝奇如鱼得水,立即着手差分机1号的研制,并宣称只需两三年就能完成任务。谁知实行起来要比想象中困难得多,那个时代的机械制造水平实在满足不了差分机的精密要求,巴贝奇跑遍整个欧洲也没找到多少能用的零件,于是在制造机器之前,还要先考虑怎么制造各类零件。在当时一位顶尖的英国机械师约瑟夫·克莱门特(Joseph Clement)的帮助下,巴贝奇不但做出了差分机能用的零件,还培养出大批优秀的技师。

也正因如此,他们无意间将一个项目的摊子铺到了一个行业的尺度,尽管实施的过程精雕细琢、尽善尽美,却没能交付一件满足要求的产品。1832年,项目启动10年过去了,巴贝奇却只完成了设计稿的七分之一——一台支持6位数、2次差分的小模型(设计稿为20位数、6次差分)。

差分机1号的七分之一模型(图片来自维基百科)

上图由巴贝奇长子本杰明·赫歇尔·巴贝奇(Benjamin Herschel Babbage)绘制。1862年,这台“低配版”的差分机1号先后在伦敦世界博览会和南肯辛顿博物馆展出,后藏于伦敦科学博物馆。

英国政府大失所望,他们想要的只是一台能自动制表的机器而已,而不是培养技术人才、增加就业岗位、促进机械行业发展这些“大事”。而巴贝奇本人也开始转向一种新机器的研究(下文详述),差分机的建造基本烂尾。1842年,政府正式宣布不再出资,为期20年的差分机项目最终以失败告终,而至此,项目花销的经费已经高达17000英镑,是最初预算的整整10倍。

值得一提的是,客观条件(制造业水平)的不足其实并不是差分机1号失败的主要原因。同时代的瑞典人佩尔·乔治·舒茨(Per Georg Scheutz)在借鉴巴贝奇的设计之后,于1843年建成了一台支持5位数、3次差分的差分机,随后又分别在1853和1859年建成了两台支持15位数、4次差分的机器,先后由美国纽约的一家天文台和英国政府购买使用。

乔治·舒茨肖像及其差分机(图片来自维基百科)

舒茨之后,还有来自瑞典、英国、美国、德国、新西兰等多国的发明家和公司在1859~1931年间都成功建造了差分机。

巴贝奇作为差分机的鼻祖,反倒没有留下实际可用的机器。1846~1849年,他升级了设计,提出支持31位、7次差分的差分机2号(Difference Engine No.2)方案,但没了政府的资助,只能停留于稿纸。于是,巴贝奇的设计是否真的可行,其人作为“差分机之父”是否名副其实,成为学术界长久以来的一大争论。直到1985~1991年,伦敦科学博物馆为了纪念巴贝奇诞辰200周年,根据其1849年的设计,用纯19世纪的技术成功造出了差分机2号,才彻底巩固了他的历史地位。(博物馆发现,巴贝奇的设计稿中仅存在少量错误,而且基本可以断定它们是巴贝奇刻意设置的防盗措施。)

伦敦科学博物馆的差分机2号(图片来自维基百科)

这台差分机被珍藏于伦敦科学博物馆的玻璃柜中。后来,由前微软CTO内森·梅尔沃德负责建造了第2台差分机2号,于2008~2016年在美国加州的计算机历史博物馆展出(现存于梅尔沃德创办的高智发明公司),由工作人员现场讲解和演示,参观者得以更直观地感受其工作机理。

在计算机历史博物馆展出的差分机2号(图片来自维基百科)

工作原理

差分机2号支持7次差分,即可解七次多项式,构造一个简单的七次函数F(x):

在x取0~9时,F(x)及其一~七次差分的值如下表所示,其中七次差分为常数5040。

x 0 1 2 3 4 5 6 7 8 9
F(x) 0 2 130 2190 16388 78130 279942 823550 209160 4782978
∆F1(x) 2 128 2060 14198 61742 201812 543608 1273610 2685818
∆F2(x) 126 1932 12138 47544 140070 341796 730002 1412208
∆F3(x) 1806 10206 35406 92526 201726 388206 682206
∆F4(x) 8400 25200 57120 109200 186480 294000
∆F5(x) 16800 31920 52080 77280 107520
∆F6(x) 15120 20160 25200 30240
∆F7(x) 5040 5040 5040

根据差分思想,我们只需要将表中的第1列数据“喂”给机器,机器通过7次加法运算即得第2列数据,以此类推,每一列都可通过对其前一列数据的7次加法运算得到。实现这一过程需要设置8个计数器,分别存储F(x)和∆F1(x)~∆F7(x)的值。

七次差分多项式求解运算过程示意图

第1步,计数器A和B相加,结果存入A;第2步,B和C相加,结果存入B;以此类推,第7步,G和H相加,结果存入G。计数器,除了H始终存放常数∆F7(x),A~G都依次被新值覆盖,这7步运算必须串行执行。

巴贝奇对此不太满意,于是让计数器成对成对地并行相加,即A+B、C+D、E+F和G+H同时进行,随后再同时完成B+C、D+E和F+G。这样整个计算过程就只需2步,速度提高了3.5倍。然而在第2步中,C、E、G中已经是新值,为了直接利用这些新值,我们要准备的初始数据不再是F(0)和∆F1(0)~∆F7(0),而是“阶梯式”的F(3)、∆F1(3)、∆F2(2)、∆F3(2)、∆F4(1)、∆F5(1)、∆F6(0)和∆F7(0)。

在差分机2号中,存储数据的8个计数器表现为8列示数齿轮,每列有31个,一个齿轮对应一个数位(底部为最低位,顶部为最高位),即单列可存储长达31位的数据。

差分机2号中的8列计数器(图片来自《Babbage's Difference Engine No. 2》)
(图片来自《Babbage's Difference Engine No. 2》)

单个示数轮有40个齿,一圈印着4组0~9的数字,每旋转90°(四分之一圈)需要一次进位。

差分机2号中的示数轮(图片来自《Babbage's Difference Engine No. 2》)

两个相邻计数器的相加,对应着31对示数轮的两两相加。其中,位于同一水平面、代表相同数位的示数轮为一对。一对示数轮的相加依靠一个与双方啮合的扇形传动齿轮实现,这个传动轮的齿厚度不一,呈左薄右厚的扇形分布,故名扇形齿轮。扇形轮可以小幅度上下移动到3个位置,位于下位时与左右示数轮同时啮合,位于中位时只与右侧的示数轮啮合,位于上位时与两者都不啮合。

以3+4为例,加完之后右侧计数轮数字归零了,需要靠传动轮将其还原为4。(原图来自《Babbage's Difference Engine No. 2》,S7技术支持)

此过程中,右侧示数轮先归零而后恢复示数,我们可称之为加数轮,而左侧示数轮保存了相加的结果,可称为累加轮。

(图片来自《Babbage's Difference Engine No. 2》)

在巴贝奇的并行算法中,第1步计数器A、C、E、G负责保存相加结果,即它们的示数轮为累加轮,第2步计数器B、D、F负责保存相加结果,C、E、G中的示数轮又充当了加数轮的角色。意即,计数器B~G中的每个示数轮都在步骤交替的过程中交替扮演加数轮和累加轮的角色。计数器H保存着七次差分常数,其示数轮始终为加数轮。

差分机的进位机构比较复杂,简单地说,每个计数轮都有一个针对高位的“进位提示器”,当计数轮从9转到0,其对应的“进位提示器”就被拨到“需要进位”的状态,每次计算,计数轮都要转动两次,第一次是每位数相加,第二次是按照“进位提示器”进行进位。我们直观地感受一下连续进位是什么样子:

(图片来自《Babbage's Difference Engine No. 2》)

最后让我们来欣赏一下差分机整个运行起来的样子,一排排示数轮缓缓旋转,一列列扇形轮交替上下,有规律地发出整齐的咔咔声,十分壮观。

(图片来自《Babbage Difference Engine in Motion》)

分析机

差分机的建造虽然夭折了,但巴贝奇从未停止过对设计稿的改进。直到有一天,一个惊人的想法从他脑中掠过,如同神祇,如同有史以来所有人类对计算的诉求结晶——差分机固然强大,但终究只能计算多项式而已,何不建造一台可以解决所有计算问题的通用机器呢!

1833年,巴贝奇就着手开始了这种通用机器的设计,并不断改进直至离世。这台被他称作分析机(Analytical Engine)的机器,直接将机械计算的理念从地表推上云天。

组成结构

巴贝奇将分析机划分为5大部分:

  1. 由差分机的计数装置改进而来的数据存储器,可存储1000个40位十进制数;
  2. 支持四则运算、比较大小和开平方根的算术单元,巴贝奇称之为“工厂”(mill);
  3. 实现逻辑控制的圆柱形“控制筒”,身周固定着许多销钉,随着“控制筒”的旋转,通过销钉推动杠杆实现控制;
  4. 3种用于输入的读卡装置,其一输入运算指令,其二输入常量数据,其三输入控制数据(在存储器和算术单元之间)传输的指令,承载这些输入信息的是一种名为穿孔卡片(punched card/punch card)的经典载体,3种读卡装置分别识别3种类型(运算、数据和控制)的穿孔卡片;
  5. 4种输出装置,其一为打印装置,其二为曲线绘图仪,其三为响铃,其四为打孔机,用于制造穿孔卡片。
分析机使用的穿孔卡片——上:数据类卡片|下:运算类卡片(图片来自维基百科)

后人惊讶地发现,这种组成结构竟和现代计算机如出一辙(现代计算机的五大组成部件是由冯·诺依曼在1945年才明确提出的)。

5大部件的协作过程大体是这样的:读卡装置从穿孔卡片上读取数据和运算指令,数据进入存储器,随后被传送至“工厂”进行处理,处理结果进入存储器并通过输出装置呈现给用户。在控制类穿孔卡片的指引下,“控制筒”可以实现顺序、循环、条件等多种控制逻辑,读取数据的读卡装置则不但可以按照正常顺序读卡,还可以反序读卡,乃至跳过部分卡片。

巴贝奇首次将运行步骤从机器身上剥离,靠随时可以替换的穿孔卡片来指挥机器,成就了机器的可编程性。这其中,穿孔卡片的引入功不可没。这种经典的数据载体跨越了机械、机电和电子3个时代,一直沿用至20世纪80年代中期。

穿孔卡片

穿孔卡片本身并不是巴贝奇的发明,而是来自一个看似与计算机八竿子打不着的领域——纺织。

我国古代,用于织造丝锦的织机叫提花机,最迟在殷商时期就已出现,后经丝绸之路传入阿拉伯国家,再传到意大利和法国。为提花机中功能最强的大花楼提花机,长约一丈六尺,高约一丈五尺,高起的部分叫花楼,织锦过程需要上下两人配合完成。

《天工开物》中的大花楼提花机(图片来自网络,南京云锦研究所藏有大花楼提花机实物)

别看织机的组成复杂,织锦的原理其实十分简单,就是通过一排排、一列列纵横的丝线相互交织而成。纵向的叫经线,横向的叫纬线,要织出花纹,就需要将部分经线提起,让纬线通过梭口,没有被经线压住的纬线部分就可以形成花纹。坐在花楼上的提花工就专门负责提起这些经线,花楼下的织花工则负责抛梭引线。

由于每织一行花纹,所要提起的经线都不尽相同,那么问题就来了:经线那么多,织完一片锦前后要提那么多次,提花工怎么记得住每次提哪些经线呢?传统的方式是根据想要织出的花纹预先编织花本,花本是花纹的“蓬松版”,蕴含着“每次需要提哪些经线”的信息。提花工根据花本提花。

花本(图片来自《中国丝绸通史》)

提花机传到西方后,十九世纪初,一个叫约瑟夫·玛丽·雅卡尔(Joseph Marie Jacquard)的法国人开始使用穿孔卡片来保存花本。

约瑟夫·玛丽·雅卡尔(Joseph Marie Jacquard),1752-1834,法国织工、商人。(图片来自维基百科)

在卡片上预设若干孔位,每个孔位可以穿孔也可以不穿孔。将卡片置于经线上方,其上方是与所有孔位一一相对的勾针。织锦时,勾针齐齐下探,尝试穿过卡片,没有穿孔的孔位上方的勾针就被挡住,穿孔孔位上方的勾针就可以穿过卡片勾起经线。原本提花工的任务就可以完全交给机器自动完成,从此提花机就只需要一个工人操作了。

雅卡尔提花机工作原理示意图

巴贝奇在一次巴黎展览会上看到了雅卡尔的提花机,对其印象十分深刻,很快想到可以把穿孔卡片应用到分析机上。分析机读卡装置的原理与雅卡尔提花机类似,也是靠探针尝试穿过卡片,要么顺利穿过,要么被卡片顶住,两种不同情况下的探针位移能产生不同的机械传动——这其实是计算机史上最早的二进制应用。

研制成果

仿佛是老天爷一个玩笑式的魔咒,分析机的研制不幸步了差分机的后尘,巴贝奇付出了几十年的努力,却仍只建成了它的一小部分。

藏于伦敦科学博物馆的分析机半成品(图片来自维基百科)

巴贝奇抱憾而终,留给后世的仅仅只有这台小小的模型和两千多张图纸。他在遗言中写道:

如果一个人不因我一生的挫折而却步,仍然一往直前制成一台具有全部数学分析能力的机器……那么我愿将我的声誉毫不吝啬地让给他,因为只有他能够完全理解我的种种努力,以及这些努力所得成果的真正价值。

巴贝奇逝世后,小儿子亨利·普雷沃斯特·巴贝奇(Henry Prevost Babbage)继承了他的遗志,在1880~1910年间断断续续做出了分析机的“工厂”和打印装置,其中的“工厂”还不具有可编程性。

藏于伦敦科学博物馆的亨利·巴菲特分析机“工厂”(图片来自维基百科)

和差分机不同的是,分析机现存的图纸并不完整,因此至今也没人建造出来。2010年10月,一位英国的计算机专家发起了一个名为“Plan 28”的项目(名称来源于巴贝奇的第28套设计方案),通过公开募捐的形式筹集资金,计划深入研究分析机的设计,而后构建仿真模型,最终建造实物。截止2017年,“Plan 28”完成了对所有现存资料的整理、归类和消化,它最终能否让分析机从图纸上“活过来”,让我们一起拭目以待。

第一位程序员

1840年,巴贝奇应邀来到意大利都灵大学分享分析机的设计,当时一位年轻的工程师、后来的意大利首相路易吉·费德里科·梅纳布雷亚(Luigi Federico Menabrea)用法语记下了详细的笔记并于1842年整理出版。1843年,著名诗人乔治·戈登·拜伦(George Gordon Byron)的女儿艾达·洛芙莱斯(Ada Lovelace)将这份笔记译成英文,并在巴贝奇的提议下扩充了许多自己的理解。此时的艾达其实已经对分析机痴迷了8年,结果她留下的注解篇幅足有译文本身的2倍!其中一处在分析机上计算伯努利数的描述被后人视为史上第一个计算机程序,这篇名为《关于巴贝奇先生发明的分析机简讯》的译文被视为程序设计方面的第一篇著作,艾达其人则被视为第一位程序员,尽管当时连编程语言都没有,连实物机器都没有。

艾达·洛芙莱斯(Ada Lovelace),1815-1852,英国数学家、作家,史上第一位程序员。(图片来自维基百科)

艾达对分析机有着不亚于巴贝奇的热爱,想象中机器的运转在她看来是如此美妙,她形容到:“提花机织出了红花与绿叶,而分析机编织着代数的图案。”这位聪慧而浪漫的女性,还在分析机身上看到了连巴贝奇都没有看到的潜力:它不该只能用来计算,它还能用来表达其他东西,比如音乐。这是多么长远的目光!

1980年,美国国防部将一种编程语言命名为Ada,以纪念这位与巴贝奇同样具有超前思想的伟大女性。

后话

巴贝奇是个忙得停不下来的人,他的研究兴趣遍布各种领域。他编写过包括世界语在内的一系列辞典;他经常逮住生活中任何能遇到的哺乳动物,测量它们呼吸和脉搏的频率,并编写了《哺乳类动物常数表》;他和约翰·赫歇尔一起做过电动力学方面的研究,并奠定了涡流理论的基础;他还写过一本在早期运筹学领域很有影响力的专著《论机械和制造业的经济》,其中对层次化劳动分工的商业优势的论述,被后人称为“巴贝奇原理”,在这方面大思想家卡尔·马克思(Karl Marx)将他和亚当·斯密相提并论,甚至更倾向于前者的某些观点;他著作等身,写着写着对图书出版也有了心得,并研究起这个行业的成本模型;他在度量衡和测量领域颇的研究成为机械制造的坚实基石,因此也常被视为机床领域的先驱之一;他还对火车的改进做过不少贡献,比如发明了火车头排障器,以及使用纸带记录并分析火车引擎的拉力、车厢的运行轨迹和垂直震动情况,后来英国铁路公司为了纪念他直接将一型火车头命名为“查尔斯·巴贝奇”;他为做眼科医生的朋友发明了查看视网膜血管和视神经的眼底镜(在此之前只能看放大镜观察),可惜这位朋友没当回事,这项成就落到了后来的发明人头上;克里米亚战争期间,他成功破解了两种经典的加密算法(维吉尼亚密码和自动密钥密码),只不过被保护为军事机密没能发表,又归功到了后来的破解者头上……

除了作为皇家天文学会的领导成员,巴贝奇还享尽了各种荣誉。1830年,他出版《英格兰科学的衰落》一书,促成了1831年英国科学促进协会(BAAS)的成立,1833年,BAAS设立统计学部,由巴贝奇担任主席;1832年,他被美国人文与科学院吸纳为外籍荣誉院士,并于同年荣获皇家圭尔夫勋章;最了不起的,是在1828~1839年间担任剑桥大学卢卡斯数学教授,有史以来坐上这一席位的伟人只有19位,其中包括艾萨克·牛顿和史蒂芬·霍金(Stephen Hawking);他还曾拒绝了骑士和从男爵的爵位,比起这些世袭贵族,他更青睐彰显个人价值的终身贵族……

巴贝奇不光有才、有能,还有钱,在1827年父亲去世后,他继承了10英镑(等价于现在的一千万左右)的遗产,是个名副其实的富豪。他从学校毕业后就定居伦敦富人区马里波恩,并在此度过一生。

巴贝奇对生活品质极为讲究,这份讲究从屋里延伸到屋外,令他对许多干扰到他的社会现象非常不满。作为一名科学家,他表达不满的方式也相当“高级”。他在80天内记录了165件扰民事件,还总结了一份《对街头扰民事件的观察》,他尤其讨厌街头那些严重吵扰到他的手风琴艺人;他厌恶酒鬼,于是研究起某家工厂窗户的玻璃碎片,并发表了《平板玻璃窗户破碎原因相对频率表》,结论是,在他研究的464扇窗户中,有14扇是被醉酒之人打碎的……搁到今天,他指不定能得个搞笑诺贝尔奖吧。

1871年10月18日,在肾功能不全和膀胱炎的折磨下,巴贝奇离开了人世。他的大脑被分成两半,分别藏于伦敦科学博物馆和皇家外科医学院的亨特博物馆。

为了纪念巴贝奇一生伟大的成就,后人将一座月球环形山命名为“巴贝奇”,美国明尼苏达大学设立了专门研究IT历史的查尔斯·巴贝奇机构,上世纪的一型电子计算机还提供了一种名为巴贝奇的编程语言。在英国,巴贝奇早已成为一种文化符号和民族骄傲。普利茅斯大学专门修建了一座巴贝奇大楼,托特尼斯镇则干脆把巴贝奇的头像印到了当地的纸币上,2015年,巴贝奇和分析机、艾达的她的伯努利程序还一同出现在英国的护照上……

纵观整个机械时期,巴贝奇的思想远远超出了其他几位先驱者,他如同一个从20世纪穿越回去的先知,把一百年后的思想“剧透”给了世人。唯一缺憾的,是不论差分机还是分析机,巴贝奇都终究没能实现。人类的技术发展错过了一次“跳级”的机会,巴贝奇在计算机领域的成就逐渐没入历史的浓雾,等待百年之后再被另一批天才重新发明。

参考文献

  • Wikipedia. Charles Babbage[EB/OL].
  • Wikipedia. Gaspard de Prony[EB/OL].
  • Wikipedia. Difference engine[EB/OL].
  • Wikipedia. Per Georg Scheutz[EB/OL].
  • MechanicalComputing. Babbage's Difference Engine No. 2, Part 1: The method of finite differences[EB/OL]
  • MechanicalComputing. Babbage's Difference Engine No. 2, Part 2: The method of finite differences[EB/OL]
  • Wikipedia. Analytical Engine[EB/OL].
  • Wikipedia. Punched card[EB/OL].
  • 吴为平, 严万宗. 从算盘到电脑[M]. 长沙: 湖南教育出版社, 1986.
  • Plan 28
  • Wikipedia. Ada Lovelace[EB/OL].
  • 阿波京, 梅斯特洛夫. 计算机发展史[M]. 张修, 译. 上海: 上海科学技术出版社, 1984.

你可能感兴趣的:(巴贝奇:现代计算机真正的鼻祖)