是谁发明了计算机(二)

巴贝奇的新想法是造一台可以编程的计算机!

这台被称为“分析机”(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;

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

























Comments

Popular posts from this blog

诗篇68:19 - 沙滩上的脚印

佛罗伦萨随笔(一)圣马可修道院和安基利柯

张义南: 神秘复杂的徐圣光