你很难想象,电子计算机在被发明的时候,只是单纯为了计算复杂工程的应用数据。当年老美的第一台计算机埃尼阿克诞生的时候,可不是为了以后我们可以网上购物,刷抖音,而是为了更加快速准确计算导弹轨迹的。没人会想到在21世纪,计算机和互联网相互加持的时候会给世界带来多大的颠覆。为什么要突出老美造的第一台计算机是电子计算机呢?因为在这之前的一百多年,有个男人用纯机械的方式也造了一台计算机,后世的电子计算机正是在这基础上改造而来,这个人就是英国人巴贝奇。
查尔斯·巴贝奇,1791年出生在英国的一个银行家族里。家里是干银行的,不管在任何时代都应该能被称为富二代。有了这个出身,以后干金融或者别的什么行业,家庭都会很用心去培养孩子的。在父亲的培养下,巴贝奇从小就展现了惊人数学天赋。后来巴贝奇考入剑桥大学,在这所大学里,也没过多久他的数学知识就已经超过了他的大部分老师。毕业之后,巴贝奇留校任教,24岁时,巴贝奇就担任剑桥“卢卡斯讲座”的数学教授,这是一个相当高级的职位,类似于终身教授了。人家才24岁啊,换着是我们现在的年纪,刚刚毕业。。。
家庭优渥,天赋异禀,个人奋斗让巴贝奇的求学从教生涯如此水到渠成,仿佛也跟很多数学大师的青年时代很类似。他们的整个职业生涯都跟大学分不开,始终都站在学术第一线。凭借巴贝奇的天赋,如果也按照前辈们的足迹,按部就班发展下去,等到他晚年时,就算达不到高斯的高度,到达柯西的地位还是很有可能的。然而巴贝奇一生都在挑战那些不可能,他放弃了“平平无奇”的科研一线,选择了另外一条仿佛苦行僧一般的职业轨迹。
然而一件事却改变了巴贝奇的职业生涯。
18世纪末,法兰西帝国的急速扩张,在工程计算领域,法兰西人发起了一场编制《数学用表》的浩大工程,以此来简化各种工程领域的繁杂计算。这在18,19世纪并没有多少先进计算工具的前提下可是一件相当庞大的系统工程,就好比是同时期的乾隆要编纂《四库全书》一般。当时法国的数学实力在世界上是顶尖的存在,法国集中了大量的计算能手,甚至组织成流水线作业,终于在几年时间内完成了一部长达17卷的大书。为了完成这项工程,法国人也真是拼了老命了。
然而非常不幸的是,这部大工具书里仍然是错误百出,毕竟这始终是一部人工编写的工具书,既然是人工计算那就免不了会出现错漏,你想尽可能使得这部书正确,那你就必须要在初稿完成之后做多次复查验算,直到你的几次验算结果完全一致才能说明这部工具书真的可靠。话虽如此,你以为是考试检查错题呢?法国人能完成就不错了,还想再验算,法国人吃不消了!
巴贝奇有幸看到了这部浩大的《数学用表》,凭借敏锐的数学才能,他没翻几页就已经发现成堆的错误。再翻下去,他忍不了,真的忍不了了,甚至吐槽“天哪,但愿上帝知道,这些计算错误已经充斥弥漫了整个宇宙!”
有人说,数学家都是一群有强迫症的人,他们眼睛里容不得一丁点漏洞出现。巴贝奇显然也是这一类,自从上次看到法国人呕心沥血铸成的《数学用表》居然是如此粗糙不堪。这件事始终在巴贝奇心里挥之不去,有天迷迷糊糊对着桌子上的对数表发呆,突然灵光一闪,也许这些表可以用机器代替人工计算。
事实上,巴贝奇可不是一时心血来潮,很久以前他就注意到法国人杰拉德发明的提花编织机与别的机器不太一样。18世纪,正是工业革命如火如荼的时代,各种以蒸汽为动力的机器层出不穷,但是这些机器普遍执行的都是一些最没有技巧性的蛮力动作。唯独这个提花编织机却可以自动编织出一些复杂图案来,且全程无人参与。
在充分了解了这套提花编织机的原理之后,巴贝奇发现,这套提花编织机之所以能够执行这些高难度动作,主要原因就是这些密密麻麻的执行卡片,当把卡片插入机器时,各种经线纬线对应的钩针就会全程根据卡片上的不同针孔排列顺序来进行穿线过程,只要编制卡片的针孔事先定义好,那么最后制成的布料就必定是同样的图案。按照现代编程的思想来看,这个编制卡片就相当于计算机执行的程序,钩针的数量就相当于是计算机运行内存,编程这个词就是从这开始的吧。
编织卡片给了巴贝奇极大的灵感,如果我也能发明一套可以自动计算数据的编织机,然后再插入对应的执行卡片,那么制表的繁重工作不就可以交给机器了吗?人工计算带来的错误就可以完全避免了!
说干就干,巴贝奇准备先制造一个简单的差分机,可以自动计算多项式值的机器。说到这个差分机的原理,这是帕斯卡在1654年提出的一个数学结论。
一个n次多项式的n次数差是个常数。
不好理解?我们来举个例子。
这是个一次式子,那么只要计算一次,就能发现一次数差就一直是4。那再搞个复杂的多项式来看看。
经过计算,我们得到,当计算到4次数差之后,就开始出现一个常数,这个常数是24。可能有许多厉害的同学已经发现,这个求n次数差的过程有点类似于给某个多项式求导啊。是的,就是这样的思路,一个n次多项式,在连续求了n次导数之后会是什么呢?就是
D(n)=Δf(n)=an!
当然这里只是一个概括性的结论,严谨的方式应该要用数学归纳法来证明才行。
可能很多同学疑惑了,这个表跟机械计算有什么关系吗?机器最擅长的是加和重复计算,从这上面的表,我们可以看到,总有f(n+1)=f(n)+d1(n)。这里存在一个递推关系,也就是,你想计算f(n+1),就要知道f(n)和一次阶差d1(n)。而巧就巧在,这f(n-1)和d1(n)都可以从f(0)和d1(0)逐渐递推而来。
我们来看看,这样递推得到的计算结果,是否与真实结果相同。
果然一模一样,在这里我们不断用前面的值层层递进去相加最终得到后面一个函数值f(n)。而且计算过程中,我们也只要提前准备f(0),d1(0),d2(0),d3(0)=24这4个值,便可以通过很少的加法就得到任意一个f(n)的值,这里避免直接计算多项式f(n)带来的巨大计改用简单的加法计算来得到最后的结果,效率大大提高。
巴贝奇又注意到,这种重复迭代的加法仍然有缺陷,只要中间中断一步,后面的计算通通不能执行。于是,他改进了这种重复迭代相加的方式,改用并行相加的方式,使得效率更加提高。
理论上毫无争议,巴贝奇开始真正来做原型机。然而这个简单的技术验证的原型机都耗费了巴贝奇整整十年时间!如此困难的原因在于,当时的工业机械加工零件精密度极差,你设计了图纸,也没人能按照图纸原封不动制作出来。于是巴贝奇就承担了从设计到零件加工,调教的全部工作。本来人家是一位数学大师,硬生生被训练成了机械工程师和车工。事实上,我都怀疑,假如巴贝奇这个时候放弃差分机的研制工作,转行去瑞士发展,大概也会成为一个顶尖的制表大师。
1822年,巴贝奇的第一台差分机制造完成,就迫不及待地将它展示给英国皇家学会,并且提交 一份《论机械在天文及数学用表计算中的应用》的论文,从此差分机的概念正式问世。这台机器的确可以很快执行一些复杂计算,很适合来制作一些航空数据用表,可以达到6位精度,并且从来不会出错。这还真是个好东西,能够替代人力计算的确是个有利可图的先进玩意。这次成功展示之后,英国政府决定资助巴贝奇来制造计算能力更加强大的差分机二号,并且赞助了巨资1.7万英镑,这相当于现在的170万英镑,是一笔很大的投资了。要知道,在1831年,一台蒸汽机车的制造成本也就只有784英镑而已。
眼看要到赞助,巴贝奇就开始准备他雄心勃勃的差分机二号计划。文章开头说了,巴贝奇选择了一条崎岖不堪的职业生涯,就是从制造差分机二号开始的。于是,从此开始,巴贝奇改变了自己的人生。