HarmonyFidelisHarmonyFidelis
登录
新闻重大项目主要机构学院

分析机——巴贝奇与洛夫莱斯发明计算机

1837年,数学家查尔斯·巴贝奇设计了分析机:一种使用穿孔卡片编程的机械计算机,拥有可存储1,000个50位数字的内存,并能执行条件分支。1843年,阿达·洛夫莱斯发表了历史上第一个算法——用于计算伯努利数的程序。这台机器从未完整建成,但在ENIAC问世整整一个世纪之前,它已经包含了通用计算机的完整架构。

Source: blog.jgc.org

分析机——巴贝奇与洛夫莱斯发明计算机

发现

参数数值
设计时间1837年(首批设计图)
发明者查尔斯·巴贝奇(1791–1871),数学家、剑桥大学卢卡斯数学教授
合作者阿达·奥古斯塔·金,洛夫莱斯伯爵夫人(1815–1852)
前身Difference Engine No. 1(1822–1833,建造中止)
技术黄铜齿轮、齿轮轮、凸轮、链条
灵感来源雅卡尔织机(穿孔卡片,1801)
资金英国政府(£17,000)、巴贝奇个人资金

技术解释

1. 四部分架构。 分析机把功能划分为相互独立的组件——比冯·诺依曼架构(1945)早了整整一个世纪。“Mill(磨坊)”执行算术运算(加、减、乘、除)。“Store(仓库)”保存1,000个寄存器,每个寄存器容纳50位十进制数字,并存储在齿轮柱上。“Operation cards”指定运算指令(+ − × ÷),“variable cards”选择寄存器,“number cards”提供常数。

2. 条件分支与循环。 巴贝奇设想了一种称为“backing”或“anticipating”的机制,使Mill能根据中间结果改变卡片执行顺序(例如结果为负时跳到另一张卡)。这是if/else的祖先。再加上能够倒回穿孔卡带,理论上即可实现循环——使机器具备图灵完备性。

3. 算术流水线。 Mill使用“carry anticipation(进位预判)”系统:不再逐位传播进位(n位数字需要O(n)时间),而是预先计算进位,从而把加法时间降低到近似常数。巴贝奇估计,50位数加法可在1秒内完成,乘法约需1分钟。

4. 洛夫莱斯的算法(1843)。 阿达·洛夫莱斯在翻译Luigi Menabrea文章时所附的“Notes”中,描述了一套完整程序,通过递归方法计算伯努利数BnB_nBn​。她使用了索引变量、嵌套循环和显式内存管理(包括规定哪些寄存器应该释放)。她预见到机器可以操作“任何其基本相互关系能够用抽象运算科学的关系表达的对象”——这预示了符号计算。

为什么它在概念上可行

巴贝奇有生之年从未完整建成分析机。原因是机械工程:它需要25,000个精密加工零件,公差达到±0.001英寸——原型机尚可实现,但在所需规模上极其困难(完整机器约重15吨)。Difference Engine No. 1失败后,政府停止拨款。尽管如此,巴贝奇留下的设计(超过300张技术图纸)展示了完整、可工作的架构。1910年,他的儿子Henry制造了Mill的一部分,并成功运行。

洛夫莱斯的贡献远不止翻译。她看到了机器用于通用计算的潜力——它能够处理符号,而不仅仅是数字。这个概念飞跃直到近一个世纪后的1936年图灵论文才再次得到正式理解。

因果链

充满人工错误的数学表(1820年代)→ 巴贝奇设计Difference Engine(1822)→ 机械工程受挫 → 巴贝奇设计架构上通用的分析机(1837)→ 洛夫莱斯写出第一个算法(1843)→ 设计被遗忘100年 → 图灵形式化“通用机器”(1936)→ 冯·诺依曼设计存储程序架构(1945)→ ENIAC(1945)、EDVAC(1949)→ 计算时代

趣闻

巴贝奇极其厌恶伦敦街头乐手,甚至游说议会禁止他们。他估计噪音让自己的工作效率损失了25%。作为报复,乐手们会故意跑到他窗下演奏——这可能是有记录以来最早的“trolling”案例之一。

来源

以下参考资料已在2026年8月事实核查中验证,本条目的相关陈述均据此核对。

  1. Plan 28 — 重建项目启动,2010年9月
  2. Plan 28: Analytical Engine FAQ
  3. Campaign to build Babbage's Analytical Engine — Phys.org