博客

埃达·洛夫莱斯的首个计算机程序:1843年她究竟写了什么

埃达·洛夫莱斯在翻译路易吉·梅纳布雷亚关于巴贝奇分析机的论文时所添加的“注G”(1843年),包含了被视为第一个计算机程序的内容:一个使用(从未建造的)分析机计算伯努利数的算法。但该注释的重要性远不止于一个单一算法。洛夫莱斯抓住了巴贝奇本人未能完全阐明的计算本质,而计算机科学界直到一个世纪后才完全开发出这一领域。

分析机

查尔斯·巴贝奇在19世纪30年代设计了分析机——一台带有内存(“存储库”)、处理单元(“运算器”)、通过打孔卡输入以及支持条件分支的机械计算机。由于成本和制造限制,它从未被制造出来,但其设计在逻辑上是完整的。洛夫莱斯的注释是我们关于其运作方式最清晰的解释。

伯努利数算法

注G包含了一个操作表——按现代术语即一个算法——用于使用分析机计算伯努利数。它包括循环、条件操作以及同时管理多个变量。它比巴贝奇记录过的任何东西都要复杂,历史学家普遍将其设计主要归功于洛夫莱斯,而非巴贝奇。

超越计算的愿景

更重要的是,洛夫莱斯明白该机器不仅仅是一台计算器,而是一个符号操纵器——它不仅可以对数字,还可以对任何可以被符号化表示的对象进行操作。她写道:“该引擎可能创作出任何复杂程度或篇幅的精巧且科学的乐曲。”这一洞察——即计算本身不局限于算术——比丘奇-图灵可计算性理论早了100年。

免费测试
你的是多少?

二十道题、八分钟计时,以及与所有参与者对比得出的百分位。无需注册。

开始智商测试 →

关于她角色的争论

一些历史学家认为,洛夫莱斯的贡献主要是编辑性的——关键思想来自巴贝奇。他们之间的通信显示了广泛的合作,包括巴贝奇的修订和建议。然而,注G中的伯努利算法以及关于计算本质的哲学洞察似乎主要是洛夫莱斯的贡献。

常见问题

埃达·洛夫莱斯究竟编程了什么?

洛夫莱斯在注G(1843年)中写了一个用于使用巴贝奇分析机计算伯努利数的算法,被认为是第一个计算机程序。该算法包括循环和条件操作。她还阐明了计算机可以处理任何符号表示(不仅是数字)的原则,这预示了现代计算理论。

埃达·洛夫莱斯真的是第一个程序员吗?

这一说法存在争议。洛夫莱斯的注G(1843年)包含了第一个旨在由机器执行的文档化算法。一些历史学家认为巴贝奇对该算法有实质性贡献,现代流行叙事夸大了洛夫莱斯的作用。然而,超越算术的计算哲学愿景,似乎确确实实是洛夫莱斯的洞察。

什么是伯努利数?

伯努利数是一个有理数序列,与数论有深刻联系,出现在幂和公式、黎曼ζ函数和三角函数的泰勒级数中。前几个数是 B0=1, B1=-1/2, B2=1/6, B4=-1/30。洛夫莱斯用于计算它们的算法是第一个专为机器执行而设计的算法。

在Geniuses.Club阅读完整文章

探索更多天才

1,300+ 篇文章 · 1,300+ 份传记 · English

浏览全部