Put the power of thought into the gears
如果不是在密码学里,讲到破解维吉尼亚加密法的话,可能你永远都不会听说这个人。
其实历史上有很多能力和智力都奇高无比,又极为努力的人,但一生中并没有留下什么伟大的成就。究其原因,更多是因为他们生在了“错的年代”。比如巴贝奇就是这样。
他如果早出生100年,也许会成为一门学科的开创者,会经常和牛顿被人一起提起;他如果晚出生100年,也许会成为像冯·诺依曼、香农那样的计算机领域的英雄。而他,却生在了中间的年代。
他的思想超越了同时代人100年,但那个年代的电磁学还没先进到让计算机出现,所以巴贝奇是唯一一个用蒸汽、齿轮、曲轴、弹簧制造通用计算机的人。
牛津大学出版社曾经在1885年出版过《国家人物传记大辞典》,那里面就收录了巴贝奇,但条目读起来让人有点摸不着头脑。介绍是这样说的:
他是数学家、哲学家、发明家、科学机械师,曾获剑桥大学卢卡斯数学教习,但未曾讲过课。曾获政府资助建造一部用于计算的机器,但因与工程师意见不合,建造工作半途而废;后又向政府提交过一份改进设计,终因经费问题未获批准。
这个看上去像一个失败者的介绍,后来也演变成后人介绍巴贝奇的模板——不论是在百科上还是传记里,这个人好像大都是东一榔头西一棒子的。
其实他一辈子真正钻研的主题,是关于信息的编码、处理和传输。由这个念头,生出了他一生各种零零碎碎的成就。
巴贝奇是英国人,出生在1791年,去世在1871年。
他出生的年份正好是英国处于数学发展的低谷,因为在他出生前100年是牛顿的辉煌时代,但正因为牛顿太辉煌了,他和莱布尼茨关于到底是谁发明了微积分引发的民族情绪的对抗,导致了不列颠群岛和欧洲大陆的数学家分崩离析,此后交流就不多了。
可牛顿并不是神,微积分思想的原创性固然伟大,但相比莱布尼茨的微积分思想,牛顿的还是稍逊一筹。这至少体现在符号体系的不规范上,它会导致定义的含混不清。
而欧洲大陆法国、德国、丹麦等数学强国,在本来就稍有优势的莱布尼茨体系上继续修补、改进定义,所以在微积分诞生130多年后,英国在数学上其实已经远远落后欧洲大陆了。
这种落后的趋势其实一直延续到一战前,也就是说直到巴贝奇去世,英国的数学还一直没追上呢。
而在巴贝奇晚年的时候,电磁学才开始突飞猛进,那时候的巴贝奇已经没有精力体力参与其中了。
也正好是在巴贝奇生活的80年中,科学处于搜寻和积淀,等待下一次爆发的过程中。
其实巴贝奇也多少能察觉自己所处的时代,比如在他还是大学生的时候就立志要复兴大英帝国的数学辉煌。
他的数学水平确实不低,当年就读的也正是牛顿从前生活工作过的剑桥大学三一学院,他看的书大都是法国数学家的,比如拉格朗日的《解析函数论》。
当时他和另外两个同学成立了“解析社”,此社的口号是要“为d摇旗呐喊,反对点的异端”。这里说的d,其实就是莱布尼茨微积分符号体系里代表微分的那个d,而点指的就是牛顿微积分符号体系里同样代表微分的符号。
牛顿简单的把它写成了一个字母上的点,这就导致之后没法区分全微分和偏微分。所以在巴贝奇那个年代,想要学数学,必须得读法国人的著作。
巴贝奇在关注莱布尼茨的微积分内容时,也对莱布尼茨的一些发明产生了兴趣,比如由齿轮组成的计算器。
莱布尼茨还希望发明一种体系内部没有悖论的语言,来研究当前世界上现存的语言。他的这种念头,就相当于发明出一个符号系统来表达逻辑关系。巴贝奇很看好这种思路,他觉得符号经过精心挑选,可以做到通用、易懂。这种语言应该也是可以用机械齿轮表达的。
在这种念头下,他对英语进行过全面分析,然后写了一本特别的词典,这个词典并不是按字母顺序排列的,而是按单词使用了多少个字母的顺序排列的。比如2个字母的单词都有什么,这个写在前面;3个字母的单词都有什么,这个往后排……
这种词典,对他统计字母出现的频率和解填词游戏非常有用。也就是在这个阶段,他顺手破解了维吉尼亚加密法。
但因为当时英国和俄国正在打克里米亚战争,巴贝奇被告知先不要公布自己的结果,所以200年来,人们一直认为破解维吉尼亚加密法的人是卡西斯基。
虽然这也算是因为保密而辱没了一位破解者的荣耀,但巴贝奇的荣耀可远不止这个。
他最为人所知的就是,做出了一台极为昂贵而且几乎没法正常工作的机械计算器。
他那个年代,测绘机构对数学精度的要求已经很高了。比如说,1824年爱尔兰的地形测量局,准备对国内大小矿藏和国土边界做详细的测绘,用到的对数表要求精确到小数点后7位。
测量局找出了当时可以搞到的过去100多年内出版过的所有对数表,一共找出了250多个不同的版本,除了法国、德国、荷兰、意大利的,甚至连中国的都有,仔细对比后就发现错误百出。
有些是进位时出的错,有些是数字前后写反了,还有排版出错的,甚至还有6个错误是极为普遍的,这6个错误在几十个版本中都出现在同样的位置,所以看来当初编制对数表的时候肯定有互相抄袭而不是自己算的情况。错误比例虽然不高,但一旦应用在航海上就足以造成失事。
巴贝奇认为这些错误产生的根源,是人的参与。如果对数表是机械完成的,表格就不会有这么多错了。
之后他花了大约20年的时间做可以计算的机器,要解决自动计算的问题。做出的第一台机器,就被起名为“差分机”。
它可以做哪种计算呢?比如说,如果用3个小球排列成三角形的样子,要怎么排呢?最简单的就是顶上一个,下面两个。如果排成一个边长更大的三角形,要怎么做呢?可以排三排,第一排1个,第二排2个,第三排3个。照这个规律,就可以排更大一些的三角形。
现在的问题是:
假如想排一个边长是10个小球直径的三角形的话,一共需要多少个小球呢?差分机就是解决类似这样的问题的。
这个问题还可以更复杂一些,比如刚刚只是排成一个二维的三角形,如果换成排成一个立体的正四面体,随着正四面体边长的逐渐增加,一共需要多少个小球构成呢?这个也是巴贝奇希望用差分机算出来的。
巴贝奇做差分机思考的不同点在于,他在动手前就开始评估由机械部件完成计算动作所需的时间。这种思考,今天学过《计算机系统结构》的同学应该很熟悉,但在1820年实属独一份。
巴贝奇之所以这样想,也是有一个很扎实的理由。因为他希望这东西做出来以后能大卖特卖,如果计算速度还不如找几个人手工算,那肯定是要赔本的。
最终估算的结果是:两个长度是50位的数字相加,需要用时59秒。
这个时间确实不短,但还有很大的优化空间。因为这59秒要分成两部分,一部分是处理进位操作对应的机械动作,这部分竟然需要用掉50秒的时间,剩下的所有操作只需要9秒时间。所以如何优化进位上的处理,就是任务的关键了。
优化了无数张图纸后,在1820年他开始动手了。最初版本的机器,只用了6根轮轴、几十个齿轮、几十个弹簧。
他拿着这套样机到处做演示,说服了英国财政大臣。从1823年开始,财政部开始每年批一千多英镑的经费,供他研制。前后一共用了20年,最后这套机器已经变成一个15吨重、25000个零件的大机器,以至于他为了向财政部解释工作原理,都需要另外发明一套符号语言来说明机器的研制进展。
在这20年间,他也成了英国上流社会的著名人物,也赢得了剑桥大学卢卡斯数学教席的职位,达尔文、法拉第、狄更斯都是家里的常客。
这套设备也确实极为精致,也考虑到今后的量产了,所以部件尽量规格统一。但实现稳定运行的成本实在太高了,财政部在10年间一共支付了17000英镑的费用。可即便这样,机器离正常高负荷运转还差很多。
最后,财政部停止了资助。
巴贝奇的差分机最终只停留在原型机阶段,不过这么多年持续研究差分机也让他有了很多新思路。不甘心认输的巴贝奇,又提出了要做一台功能更加通用的“分析机”。
这个机器理论上可以进行多种复杂的计算,比如像1/(e^x-1)这样的数值都可以。他希望这台机器的输入是一些打了孔的纸卡片,称作变量卡;在机器中间,加入另外一些打了孔了卡片,来规定机器传递变量卡的规则;最后输出卡片上打的孔,就是另外一番景象了。而这所谓的另外一番景象,就是分析机的计算结果。
整套思路涉及到运算、中间结果的存储、中间结果的再提取,涉及到条件语言、循环指令等细节,简直和现代计算机思想极为接近。
但可惜,这次没有哪个人、哪个机构肯再资助他做分析机了。
其实就算有人资助,就算这次资助金额是上次的十倍百倍,他的想法也注定实现不了。因为巴贝奇整套思维超前了那个时代100年,让蒸汽动力驱动齿轮和轴完成这些操作是不可能的。
这些功能,起码要等电路或电子管诞生后才能实施。而这些电子元器件,是在巴贝奇去世后30年才出现的。
虽然他一辈子也不缺钱,爸爸在去世的时候留给了他合今天1000多万美元的资产,他随便给某个公司设计一些设备就能赚上一大笔钱;
虽然他也不缺名望,既是卢卡斯教席,又是皇家天文学会的会员;
虽然他也是儿孙满堂;
但1871年他离世的时候,还是怀着怨恨和失望的——
他一直纠结于没能实现用机械编码信息、处理信息。
巴贝奇超越同时代人最大的地方,就是他察觉到信息的处理是可以不由人干预的。可是当年只有蒸汽提供动力,蒸汽驱动的东西实在太粗糙了,而巴贝奇的遗憾也只能由后人来补上了,他们就是后来的图灵、香农和冯·诺依曼。
下节,专门讲讲图灵。