1821年的一个夜晚,英国剑桥。
两个年轻人正在翻阅一本天文表。书里密密麻麻的数字,是航海家们用来定位的依据。
“这些表格里全是错误!“其中一个年轻人愤怒地说,“这些错误会让船只迷航,甚至沉没!”
他的朋友问:“那怎么办?”
年轻人沉默了一会儿,然后说:“我要造一台机器,让它自动计算这些表格,永远不出错。”
这个年轻人叫查尔斯·巴贝奇。他即将设计出人类历史上最复杂的机械装置——差分机。
巴贝奇是谁? #
巴贝奇1791年出生于伦敦,父亲是个富有的银行家。
他从小就对机械着迷。有一次,他问妈妈:“为什么玩具不能自己动?“妈妈说:“因为它们没有生命。“巴贝奇不满意这个答案,他开始研究钟表,想弄清楚齿轮是怎么让指针自己转动的。
后来他进入剑桥大学学习数学。但他发现,英国的数学教育远落后于欧洲大陆。于是他和几个朋友一起,把欧洲最新的数学著作翻译成英文,推动英国数学的复兴。
但巴贝奇最关心的,是另一个问题:如何让计算变得准确和高效?
在那个年代,所有的数学表格——对数表、天文表、保险精算表——都是由"人类计算机"手工计算的。这些人每天坐在桌前,用纸和笔进行枯燥的运算。
人总会犯错。一个数字的错误,可能导致船只触礁、保险索赔出错、科学实验失败。
巴贝奇想:如果机器能代替人计算,就不会出错了。
差分机:用齿轮计算多项式 #
巴贝奇设计的机器叫差分机(Difference Engine),因为它使用一种叫"差分法"的数学技巧。
什么是差分法?
假设你要计算一个多项式,比如 f(x) = x² + x + 41。当x=0,1,2,3…时:
| x | f(x) | 一阶差分 | 二阶差分 |
|---|---|---|---|
| 0 | 41 | - | - |
| 1 | 43 | 2 | - |
| 2 | 47 | 4 | 2 |
| 3 | 53 | 6 | 2 |
| 4 | 61 | 8 | 2 |
注意到了吗?二阶差分是恒定的(都是2)。这意味着,只要知道前两项,就可以用简单的加法算出后面所有项!
43 + 4 = 47,47 + 6 = 53,53 + 8 = 61…
不需要乘法,只需要加法!而机械装置最擅长做的,就是加法。
巴贝奇的差分机,就是用齿轮来实现这种计算。每个齿轮代表一个数字,转动齿轮就相当于做加法。机器可以自动计算多项式的值,然后把结果打印在纸上。
政府的资助与困境 #
1823年,巴贝奇向英国政府申请资助。政府被他的计划打动,拨给了他1500英镑——这在当时是一笔巨款。
巴贝奇开始制造差分机。但他很快遇到了问题。
第一个问题是技术。 当时的加工精度不够高,巴贝奇需要的齿轮精度达到了千分之一英寸。他不得不自己设计新的机床,培训新的工人。
第二个问题是成本。 机器越来越复杂,预算不断超支。到1833年,他已经花了17000英镑,但只完成了机器的七分之一。
第三个问题是巴贝奇自己。 他是个完美主义者,不断修改设计。每当他想到一个更好的方案,就会推翻之前的工作。
政府终于失去了耐心。1842年,财政大臣宣布停止资助:“我们不知道这台机器能不能完成,也不知道它值不值这个钱。”
巴贝奇愤怒地写道:“政府浪费了17000英镑,而我浪费了20年的生命。”
分析机:超越时代的构想 #
但巴贝奇没有放弃。事实上,他的脑子里已经有了更疯狂的想法。
在制造差分机的过程中,他意识到:为什么只造一台只能算多项式的机器?为什么不造一台能算任何东西的机器?
这就是**分析机(Analytical Engine)**的构想。
分析机的设计,包含了现代计算机的所有核心概念:
- 存储(Store):用来存储数据,相当于现在的内存
- 运算(Mill):用来进行运算,相当于现在的CPU
- 输入/输出:用穿孔卡片输入程序,用打印机输出结果
- 分支与循环:机器可以根据条件选择不同的执行路径
这简直就是一台现代计算机! 只不过它用齿轮和蒸汽驱动,而不是电子和电力。
巴贝奇设计了超过200张图纸,3000多种零件。如果制造出来,这台机器会有一个小房间那么大。
但它从未被制造出来。
阿达·洛夫莱斯:第一位程序员 #
在巴贝奇最孤独的时候,有一个人理解了他的梦想。
她叫阿达·洛夫莱斯,是英国著名诗人拜伦的女儿。
阿达从小对数学着迷。1833年,17岁的她见到了巴贝奇和他的差分机模型,立刻被迷住了。她后来写道:“这台机器的运作,就像纺织机编织花朵一样,编织着代数模式。”
1843年,阿达为一篇关于分析机的文章写了注释。在这些注释中,她写出了人类历史上第一个计算机程序——一个计算伯努利数的算法。
更重要的是,她预见到了计算机的无限可能:“这台机器可以编写音乐、绘制图形、做任何能用符号表达的事情。”
她被称为世界上第一位程序员。虽然她从未见到分析机运行,但她的思想跨越了时代。
悲剧的结局 #
巴贝奇于1871年去世,享年79岁。
他一生都在设计机器,却从未看到它们完成。他的葬礼只有几个人参加,报纸称他为"一个失败的发明家”。
但历史证明,巴贝奇没有失败。他只是太超前了。
他的设计理念领先了世界100年。
1985年,伦敦科学博物馆根据巴贝奇的图纸,制造出了一台完整的差分机。它有8000个零件,重5吨,长3.4米——但它真的能工作!
这台机器计算出的结果,精确到小数点后31位。巴贝奇的设计是正确的,只是他那个时代的加工技术达不到要求。
为什么巴贝奇失败了? #
回顾巴贝奇的一生,我们可以看到几个关键问题:
第一,技术限制。 19世纪的机械加工精度,无法满足巴贝奇设计的复杂程度。
第二,资金问题。 巴贝奇不断修改设计,导致成本失控。如果他能先完成一个简化版本,也许结果会不同。
第三,性格因素。 巴贝奇是个完美主义者,也是个糟糕的项目管理者。他无法在"完美"和"完成"之间做出妥协。
但巴贝奇最大的贡献,不是他造出的机器,而是他提出的问题:机器能不能思考?机器能不能编程?机器能不能做任何能用符号表达的事情?
这些问题的答案,在100年后被另一个人给出了。
他叫艾伦·图灵。
他的故事,我们明天继续。
今日知识点 #
差分法(Method of Differences) 一种计算多项式的技巧。对于多项式函数,如果反复计算相邻项的差,最终会得到常数。这意味着可以用简单的加法代替复杂的乘法来计算多项式的值。巴贝奇的差分机就是基于这个原理。
穿孔卡片(Punched Card) 一种用孔洞来存储信息的方式。卡片上不同位置的孔代表不同的数据或指令。巴贝奇的分析机计划用穿孔卡片来输入程序。后来,IBM把穿孔卡片用于早期的电子计算机,成为20世纪中叶最主要的数据存储介质。
思考题 #
- 巴贝奇的分析机包含了现代计算机的所有核心概念。你能说出它们分别对应现代计算机的哪些部件吗?
- 如果巴贝奇生活在今天,你觉得他会成为什么样的人?程序员?创业者?还是大学教授?
明天预告:艾伦·图灵与图灵机——一个数学家如何定义"计算”,为计算机奠定理论基础。