阿达·洛芙莱斯如何在计算机诞生一个世纪前就构想了它

1843年,阿达·洛芙莱斯撰写了现在被公认为第一个发布的计算机程序——为一个从未建造的机器,在一个使这种机器成为可能的一个世纪里。

阿达·洛芙莱斯的插画肖像

1837年,英国数学家查尔斯·巴贝奇开始设计他称之为“分析机”的机器——一种机械装置,由蒸汽驱动,并由从纺织工业借鉴的穿孔卡片控制,能够执行任何被指示的计算。这并不是他提出的第一台计算机器;早期的设计,差分机,只能计算固定的数学表格。分析机在种类上有所不同:通用、可编程,能够被赋予不同的指令集并产生不同的结果。巴贝奇从未获得足够的资金来完全建造它。

阿达·洛芙莱斯,一位数学家,也是诗人拜伦勋爵唯一的婚生子女,于1843年翻译了一位意大利工程师关于分析机的论文,并加入了她自己的注释——这些注释的长度是原文的三倍。其中包含了一种机器计算伯努利数(一种在数学中广泛使用的数列)的分步方法。计算机历史学家现在认为这是为通用计算机编写的第一个已发布的算法,是对在能够运行它的硬件出现之前编写的软件的描述。洛芙莱斯还比巴贝奇本人更有远见地写道,这种机器有一天可能不仅仅处理数字——还可以处理音乐、图像、任何类型的符号——这个想法在一个多世纪后才得以实现。

这一切并非孤立于其时代。工业革命大致从18世纪中叶持续到19世纪中叶,横跨英国和欧洲,正是它使得分析机成为可能:精密金属加工、蒸汽动力,以及一个越来越接受机器可以完成过去由一群人手工完成的工作的经济。从这个意义上说,巴贝奇的抱负完全属于他所处的世纪——技术上超前,但并非格格不入。

穿孔卡片的来源

巴贝奇并非穿孔卡片的发明者。他直接从纺织工业中借鉴了它,来自1801年织工约瑟夫-玛丽·雅卡尔在里昂展示的一种织布机,该织布机使用一串穿孔卡片来控制机械织布机提升哪些线——让一台织布机无需熟练操作员手动指导每一次通过就能织出复杂的图案。巴贝奇将相同的想法应用于控制计算而不是布料:卡片将把数字和如何处理它们的指令输入分析机,第二套可重复的卡片能够让机器返回重复使用早期的指令——这与当今软件中的循环基本思想相同。洛芙莱斯在她的笔记中明确指出了这种联系,写道分析机“编织代数图案,就像雅卡尔织布机编织花朵和叶子一样。”甚至机器的两个主要部分也从那个时代的工厂中借用了名称:巴贝奇将存储数字的部分称为“存储器”(Store),将对其进行操作的部分称为“磨坊”(Mill)——它们是现代计算机中内存和处理器的直接祖先。

一个半世纪后,设计得到验证

巴贝奇从未获得完成分析机的资金,在一个多世纪之后,他的设计是否真的能奏效,或者维多利亚时代的工程技术是否过于不精确而无法建造他所绘制的机器,一直是一个悬而未决的问题。1985年,伦敦科学博物馆着手直接回答这个问题,严格按照巴贝奇1847-49年的图纸,仅使用在他有生之年可以实现的制造公差,建造了他早期更简单的机器——差分机2号的一个版本。计算部分于1991年完成,及时赶上巴贝奇诞辰二百周年;他设计的打印机制于2002年添加。它成功了。这台由8000个零件和五吨重的机器,至今仍在伦敦科学博物馆运行——解决了自19世纪30年代以来一直悬而未决的问题:不是巴贝奇是否是位有远见的人,而是他的工程设计是否真的可靠。


三个角度,一个图书馆

这个故事恰好同时涵盖了WonderBooks十二个图书馆中的三个——人物、机器和时代都有各自的插图故事,可以按任何顺序阅读或单独阅读。

阿达·洛芙莱斯 — 图书封面 — Wonder Science
阿达·洛芙莱斯 → Wonder Science — 数学家和她的笔记。 浏览 Wonder Science →
查尔斯·巴贝奇的分析机 — 图书封面 — Wonder Inventions
查尔斯·巴贝奇的分析机 → Wonder Inventions — 机器本身,以及它为何从未完成。 浏览 Wonder Inventions →
工业革命 — 图书封面 — Wonder History
工业革命 → Wonder History — 使这一雄心壮志成为可能的世纪。 浏览 Wonder History →

常见问题

阿达·洛芙莱斯是否建造过一台可工作的计算机?

没有——洛芙莱斯和巴贝奇在他们有生之年都没有建造分析机;它只存在于图纸和笔记中。洛芙莱斯所创造的是算法:一种机器计算数列的详细分步方法,在任何能够运行它的机器出现之前多年就已写成。

巴贝奇的分析机真的建造过吗?

分析机本身从未被建造过,无论是19世纪还是之后。伦敦科学博物馆于1991年完成的是巴贝奇早期更简单的差分机2号,严格按照他自己的图纸建造——这证明了他的机械设计是可行的,尽管这并不能证实更雄心勃勃的分析机的每一个细节。

为什么阿达·洛芙莱斯被称为第一位计算机程序员?

她1843年关于分析机的笔记中包含了一种计算伯努利数的详细方法,这是一个真实的数学序列,被写成机器执行的精确操作序列。计算机历史学家认为这是为通用计算机器编写的第一个已发布的算法,尽管运行它的机器当时尚不存在。

继续阅读

更多来自 Wonder Science