波士顿的新人

旧事已过,都变成新的了
正文

是谁发明了计算机(上)

(2019-10-20 20:44:16) 下一个

        故事要从十九世纪的英国讲起。工业革命带来了蒸汽机和各种机械装置,将人们从各种劳动中解放了出来。

       这一天,在剑桥大学的办公室里,年轻的数学家查尔斯·巴贝奇(Charles Babbage)对着一张错误百出的对数表,气得七窍生烟。旁边,他的好友,天文学家约翰·赫歇尔(John Herschel)充满同情地看着他。巴贝奇嘟囔着,“上帝啊,我真希望可以用蒸汽机产生对数表,这样就不会有这么多人为的错误了”,赫歇尔愣了一下,随口答道,“嗯,有意思,这个想法是完全有可能实现的。”

       于是在1821年,巴贝奇开始着手设计一台可以自动生成对数,指数,三角函数的机器,这就是差分机(Difference Engine)的原型。巴贝奇把这些复杂的数学计算,分解成若干步骤,而每个步骤都可以通过简单的加减运算来实现。譬如,要生成指数函数 f(x)=x²,最终的结果是这样一个数列:1,4,9,16,25,36,49 ...... , 它们之间的差值是:3,5,7,9,11,13,......,而这个新的数列的差值是:2,2,2,2,2 ......,所以如果要产生下一个指数,8的平方,我们可以把最后得到的等差2,加到上个数列的最后一个数值13上,就得到15;然后再把15加到最先的那个数列的最后一个数值49上,这样就可以得到8的平方(49+15=64)。通过这个原理,巴贝奇甚至可以用差分机算出一到一千万之间的所有质数(a table of prime numbers up to 10 million),这在当时简直是个奇迹。

        英国政府对差分机表现出异常浓厚的兴趣,在后面的十年里慷慨解囊,为巴贝奇的神器投下了17000英镑,这是一笔可以用来制造两艘战舰的巨资。可在这十年中,巴贝奇不停地修改他的设计,试图精益求精,但最终却因为严重超支,只完成了差分机的1/7,而此时巴贝奇却又有了新的想法。他要造一台可以编程的计算机!

        这台被称为“分析机”(Analytical Engine)的机器,在巴贝奇的构想中,可以根据外部的指令执行不同的数值运算。那么如何给机器提供指令呢?巴贝奇最先的想法是使用一种类似齿轮的装置,但后来他从法国人Jacquard发明的自动织布机中获得了灵感。

         Jacquard 使用的是打孔卡(punch cards)。通过打孔卡小孔的不同位置来控制织布机的主轴,从而织出不同的花样图案,巴贝奇见此设计之后,茅塞顿开。打孔卡可以一张接一张无限制地提供指令给分析机,而且一套不同的打孔卡可以对机器重新编程,执行不同的运算,现代计算机最主要的两个特征: “通用”(general-purpose)和“编程”(programmable)已经呼之欲出了。

        可是,也许是因为吃够了差分机的苦头,当时的英国政府和科学界对“分析机”反应冷淡。也难怪他们,要是今天中国政府给了你两艘航母的经费,十年的时间,你交出个1/7的半成品,然后你说你要搞个更伟大的项目,任凭你说得天花乱坠,估计也没人再愿意上当了。于是巴贝奇磨破了嘴皮子,大家还是无动于衷,只有一个人除外,一个女人。

        爱塔(Ada Lovelace)是英国大诗人拜伦的独生女儿,但父母在她满月之日就离异了,爱塔的母亲痛恨她父亲拜伦的失德行为,并将此归咎于他的诗人气质,于是从小就让爱塔远离文青,专攻数理,为她打下了坚实的数学基础,这也让她在英国的科学界有了许多朋友。早年爱塔曾一度试图说服巴贝奇做她的数学私教,不过被巴贝奇婉言谢绝了。当她了解到巴贝奇“分析机”的构想时,我们年轻的伯爵夫人被深深地迷住了,她甚至梦想成为巴贝奇的合伙人和公关主任,游说世人出资建造“分析机”。

        1843年,爱塔写下了阐述分析机原理的《注记》(Notes),在爱塔的注记中,她认为分析机不但可以处理数学问题,而且应该可以处理任何能够转化成数字符号的东西,包括音乐和艺术,她笔下的“分析机”简直就成了多媒体电脑的化身。而且更加神奇的是,爱塔在注记里写下了世界上第一段软件程序 -- 计算伯努利数。爱塔设计的整段程序一共需要75张打孔卡,里面不但有子程序(subroutine),甚至还有递归循环(recursive loop)。

        1983年美国国防部将内部使用的计算机编程语言命名为Ada,用来纪念这世界上第一位的程序猿。下面这段就是来自Ada的问候:

with Ada.Text_IO; 
use Ada.Text_IO;
procedure Hello is
  begin  Put_Line ("Hello, world!");
end Hello;

不过,巴贝奇也好,爱塔也好,他们实在是太超越他们的时代了,超越了整整一百年!

[ 打印 ]
阅读 ()评论 (7)
评论
jw2009 回复 悄悄话 今天的计算机是根据杜林(Alan Turing)的理论设计的。。
带娃是持久战 回复 悄悄话 多谢介绍!
赌城看客 回复 悄悄话 赞,好文。
巴贝奇差分机、恩尼格玛密码机、(赌博用机械式)老虎机等等都是机械时代的杰作。
远方道友 回复 悄悄话 Good article, Thanks for sharing.
Soltek 回复 悄悄话 太棒了!最喜欢看这种文章。
pltc63 回复 悄悄话 好文章,谢谢!
通州河 回复 悄悄话 差距巨大呀,估计那时候大清国整个国家知道对数的人不超过5个。
登录后才可评论.