记录与计算机存储有关的过往(连载五):世界需要一台自动计算的机器

专栏

第一台差分机,能够进行三个五位数的加法运算,计算精度能达到六位小数。第一台分析机采用十进制计算,用齿轮存储1000个五十位数,能做平方和四则运算。这台用蒸汽机驱动的机器有三十米长和十米宽,每秒钟能够计算一次。这两种机器标志着人类第一次把程序控制引入机械计算。

06-a07-01.jpg
查尔斯·巴贝奇
06-a07-02.jpg
第一台差分机

把人类从繁复的计算中拯救出来

如果要评选19世纪Geek女神的话,奥古斯特·艾达·金一定能上榜。她是诗人拜伦的女儿,查尔斯·巴贝奇的助手和合作者,拉弗拉斯伯爵夫人,以及世界上第一位程序员——甚至远在“程序员”这个词被赋予现在的意义之前,她就写出了程序,而且写在了打孔卡片上。

虽然是拜伦的女儿,但是艾达几乎没有见过自己的父亲。在出生几个星期后,她的母亲就带着她返回娘家,两个月后父母签署了分居协议;而她那热血浪漫的诗人父亲几个月后远赴法国和瑞士,最终客死异乡。艾达的数学天分据说来自母亲,灵动的思维则可能来自父亲——这两者在她后期的研究中缺一不可。良好的家庭环境让艾达能够遵循自己的兴趣,优秀的家庭教师们也为她提供了良好的教育。

在她的家庭教师里,有一些相当出色的人物,例如提出了徳·摩根定律的数学家奥古斯都·徳·摩根,以及女科学家玛丽·索麦维。正是在后者的介绍下,1833年6月,不满18岁的艾达遇见了查尔斯·巴贝奇,那个时代公认的博学者——或者失败者,这完全取决于观察角度。他毕业于剑桥大学,20岁的时候就协助建立了英国统计学会,25岁就成了英国皇家学会会员,37岁的时候成了母校的卢卡斯数学教授——牛顿曾经担任过的职位。从20岁起,他就开始计划制造一台能够自动计算的机器,把人类从繁复的计算中拯救出来。而大量的人工计算,正是那个时代欧洲的特色之一。

1819年,巴贝奇在一次去法国的访问中,看到普隆尼男爵招募大量计算工人,在几位数学家的带领下趴在桌上写写算算的情形,深受这种智力放大方式的震撼;而这些计算结果的质量之低,更是让他感到无力。当时的科学家迪昂赛斯·拉德诺写道,从40册表里随机抽样,就发现了3700个错误;而根据巴贝奇的计算结果,这些计算错误,每年将会为政府带来超过300万英镑的损失。

看来,制造自动计算机器,势在必行。

那些被嘲笑的伟大

对数,是当时社会发展的重要基础之一,无论是金融、航海还是天文,都离不开能够简单地把乘除化为加减的对数运算。和今天课本上附带的《常用对数表》一样,快速运算也要依赖于对数表;而世界上第一份对数表,却只能靠手工来算出。

巴贝奇就是打算解决这个问题。1822年,他制造了第一台差分机,能够进行三个五位数的加法运算,计算精度能达到六位小数。接下来的梦想更加宏伟,他与英国政府签订了合同,计划在两到三年内,制造出可以计算七个二十位数的差分机,并且自带打印功能。

然而,这个计划失败了。也许是因为总是冒出新点子的巴贝奇不停地改动设计,也许是他找到的制造商无法实现他要求的精度,第二台差分机花了十年时间和三万英镑的投入,却只完成了七分之一。而此时,巴贝奇几乎将所有精力都放在他的新项目上了。

巴贝奇已经意识到了差分机的不足,并且计划制造出通用的计算机——分析机。就在这时,他第一次遇见了艾达。

巴贝奇设想的分析机采用十进制计算,用齿轮存储1000个五十位数,能做平方和四则运算。这台用蒸汽机驱动的机器有三十米长和十米宽,每秒钟能够计算一次。几乎所有的人都认为巴贝奇是痴人说梦,而艾达不这么看。她很快理解了巴贝奇的设计,并且预料到了分析机可能的用途,这些用途甚至是巴贝奇没有想到的。艾达写道:“这种机器也许可以作曲,或者解决复杂的问题。”

巴贝奇分析机采用了三个具有现代意义的装置:保存数据的寄存器(齿轮式装置);从寄存器取出数据进行运算的装置,并且机器的乘法以累次加法来实现;控制操作顺序、选择所需处理的数据以及输出结果的装置。

1841年,已经是三个孩子母亲的艾达正式成为巴贝奇的合作者。她把巴贝奇用法文撰写的论文翻译成英文,添加了自己的注释,让这部论文的长度增加到最初的三倍。正是她,从提花机中得到灵感,将分析机的程序用打孔卡片输入,也建立了子循环和条件分支的概念。算法终于不再用硬件实现,可以通过挂上不同的纸带而实现不同的运算。

而这时,这两位先驱者遭到了巨大的打击。英国政府正式终止了差分机的合同,新任首相公开声称差分机的唯一用途就是费钱。在制造差分机时自己搭了一万三千英镑的巴贝奇早已一贫如洗,两人只能靠偶尔销售些小东西来继续支撑。

1952年,从小体弱多病的艾达因癌症去世,终年36岁,留下的只有大量文档和设计的世界上第一个程序:一个计算伯努利数的分析机专用程序。巴贝奇20年后去世,就连登在《泰晤士报》上的讣告也嘲笑他的失败。

他们都没有等到自己梦想成真的那天。