发现
| 参数 | 数值 |
|---|---|
| 设计时间 | 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”中,描述了一套完整程序,通过递归方法计算伯努利数Bn。她使用了索引变量、嵌套循环和显式内存管理(包括规定哪些寄存器应该释放)。她预见到机器可以操作“任何其基本相互关系能够用抽象运算科学的关系表达的对象”——这预示了符号计算。
为什么它在概念上可行
巴贝奇有生之年从未完整建成分析机。原因是机械工程:它需要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月事实核查中验证,本条目的相关陈述均据此核对。
