阿达·洛夫莱斯:为分析机写下注释,她成了第一位程序员

阿达·洛夫莱斯(一八一五至一八五二)是诗人拜伦唯一的婚生女儿。但让她在历史上留下名字的,不是父亲,而是一台从未建成的机器。

一八一五年她出生五周后,拜伦便离开英国,再没回来,八年后客死希腊。母亲安妮怕她遗传所谓“拜伦式的疯狂”,从小用算术、逻辑和音乐理论把她的时间排满——这样的数理训练,在当时的女孩身上极为罕见。一八三三年,十七岁的阿达经老师、著名女科学家玛丽·萨默维尔引荐,结识了查尔斯·巴贝奇。巴贝奇先造专算数表的差分机未成,又提出更宏大的分析机设想:穿孔卡片输入指令,“仓库”存数,“磨坊”运算,还能按前一步的结果选择后续动作——这正是程序与条件分支的雏形。阿达一眼看出了这台机器的想象空间。

一八四二年,意大利工程师梅纳布雷亚把巴贝奇在都灵的讲座整理成法文发表。在科学家惠斯通建议下,阿达把它译成英文,并在巴贝奇鼓励下逐条加注。注释以甲到庚编号,篇幅近原文三倍;一八四三年文章在泰勒主编的《科学论文集》发表,落款只有她姓名的缩写。出版前,巴贝奇想附一篇匿名前言抨击政府不肯拨款,阿达坚决反对,宁可撤稿也不妥协,最终前言没有刊出。

最后一条注释最为有名。她用二十五个步骤,完整推演了分析机如何自动算出伯努利数:哪些数存入变量列,何时送入磨坊运算,结果又回到何处,还用一张展开图表逐行追踪每个变量的状态;其中包含让一组操作反复执行的循环,乃至循环中的循环。这被许多人视为第一段为机器准备的程序。有趣的是,现代学者把图表转写成可运行代码后,发现第四步有一处除法写反,可能是排版之误——若属实,这便是计算史上最早有记载的“程序错误”。

她更大的远见在于:机器能处理的不只是数字,凡是能化约为规则关系的符号,它都能处理,比如音高与和声——她说不定能让机器编出科学而复杂的乐曲。这个判断,比“计算机”这个词早了近一百年。

“第一位程序员”的称号始终有争议。质疑者指出,巴贝奇此前私下写过更早的算例,公式也是他提供的,而机器从未造出、程序从未实跑;推崇者则强调,她留下的是第一份公开发表、具备循环思想并阐明通用性的完整算法,巴贝奇本人也在回忆录中承认,她在演算伯努利数时纠正过自己的一个严重错误。一九七九年,美国国防部将一种军用编程语言命名为“阿达”,争议之外,这是工程世界给她的答复。一八五二年,阿达因子宫癌去世,年仅三十六岁,按遗愿葬在拜伦墓旁。

❝她写的算法,在一台从未建成的机器上运行。两百年后,人们把她命名的语言,写进了真正的计算机里。❞