《分析机概略》及译者注记
史上第一份公开发表的算法——也是「机器远不止于算术」的第一道灵光。
1843 年,在任何计算机问世之前,一位年轻女子写下了第一段程序——并猜到了计算机有朝一日会变成什么。
核心想法
查尔斯·巴贝奇设计过一台庞大的机械计算机——分析机,它从打孔卡片上读取指令。在他眼里,那是一台强大的计算器。而阿达·洛芙莱斯,在翻译一篇介绍它的论文时,添上了自己的注记——看到了更大的东西。
她意识到,这台机器是「通用」的:只要喂给它不同的卡片,就能让它执行任何你说得清楚的过程,而非某一道固定的算式。为了证明这一点,她一步一步写出了:这台机器将如何算出一串颇为棘手的数列——这便是史上第一份为机器而公开发表的算法。接着她更进一步:倘若机器能处理符号,而音乐或别的东西也能被写成符号,那么这台机器,有朝一日或许能作曲。此后整整一百年,再没有人认真看待过这个念头。
它是如何诞生的
阿达是诗人拜伦勋爵的女儿,由一位一心要把诗歌挡在女儿之外的母亲,用数学把她养大。少女时代,她结识了巴贝奇和他的计算机器,二人成了多年的通信者。当一位意大利工程师梅纳布雷亚,用法文发表了一篇对分析机的描述,阿达把它译成了英文。
巴贝奇建议她加些注记。注记越写越长,最终是论文本身的三倍——而她的思想,正活在其中。她把注记标为 A 到 G,只署名「A.A.L.」——她的全名,并未出现。Note G 里,藏着那段著名的、计算伯努利数的程序。她 36 岁便去世了,远在任何这样的机器被造出来之前;她的工作几乎被遗忘,直到计算机时代将它重新发现。
它为何重要
洛芙莱斯看出了「计算器」与「计算机」之别——比那时早了一个世纪,那时根本没有一台计算机可供指认。计算器做算术;计算机遵循程序——你能精确描述的任何事,无论是用数字、还是用代表别的东西的符号,都能令它去做。正是这一个念头,让你口袋里那台设备,不只会做加法,还能显示照片、播放音乐、写出文字。她被广泛尊为「第一位程序员」,而一门编程语言 Ada,便以她命名。
一个可以想象的画面
洛芙莱斯自己的比喻,至今仍是最妙的。提花织机(Jacquard loom)靠读取一串打孔卡片,织出一幅图画——换卡片,就换图画,织机本身却分毫不动。她写道,分析机「织出代数的图案,正如提花织机织出花与叶」。换上不同的卡片,同一台机器便算出新的东西。这,恰恰就是你给手机装上一个不同的应用时所发生的事。
它的位置
这是本图书馆沿着「计算」一路追溯时,最早的一块路标。一个世纪后,阿兰·图灵(1936)用纯数学定义了一台通用机器究竟能算什么;而 1950 年,他指名回应了洛芙莱斯——她那句机器「无法首创任何东西」,成了「洛芙莱斯夫人的反驳」,是「机器智能」之争的第一招。从那里,这条线穿过冯·诺依曼的存储程序设计(1945),直抵今天每一台运行着软件的设备。
We may say most aptly that the Analytical Engine weaves algebraical patterns just as the Jacquard-loom weaves flowers and leaves.
Supposing, for instance, that the fundamental relations of pitched sounds in the science of harmony and of musical composition were susceptible of such expression and adaptations, the engine might compose elaborate and scientific pieces of music of any degree of complexity or extent.
The Analytical Engine has no pretensions whatever to originate anything. It can do whatever we know how to order it to perform.