第二章 钢铁巨兽:从差分机到 ENIAC
“我们成为我们所看的东西,我们塑造我们的工具,然后我们的工具塑造我们。”
—— 马歇尔·麦克卢汉
1943 年,费城。
夜幕降临,宾夕法尼亚大学摩尔电气工程学院的地下室里,一场史无前例的实验正在上演。当工程师们扳动最后一个开关,17,468 支真空管同时亮起,整个费城的居民注意到了一件事——他们的电灯在微微闪烁。这台重达 30 吨、占地 167 平方米的庞然大物正在启动。它的名字叫 ENIAC,电子数字积分计算机。
但这只是故事的终点。在 ENIAC 诞生的一百多年前,一个名叫查尔斯·巴贝奇的英国人,在伦敦的科学沙龙上,提出了一个疯狂的想法:用机械来思考。
从维多利亚时代的黄铜齿轮,到柏林的电磁继电器,到爱荷华的地下室实验室,再到费城的电子巨兽——这条路,走了整整一个世纪。
这不仅是机器的进化史,更是一群梦想家用钢铁与火花谱写的人类史诗。他们的故事充满了天才与疯狂、战争与和平、胜利与遗憾。有人在有生之年看到了自己的梦想成真,有人死在默默无闻中,有人至今被历史遗忘,有人则在专利法庭上接受审判。
但在这一切之上,他们都有一个共同的身份:改变世界的程序员。
2.1 巴贝奇:未能完成的差分机与分析机
愤怒的数学家
1821 年的一天,查尔斯·巴贝奇和他的朋友约翰·赫歇尔——天王星发现者威廉·赫歇尔的儿子——坐在伦敦天文学会的办公室里,对照着两本航海天文历表。这两本表应该给出一模一样的计算结果,但它们不是。错误成百上千,每一个错误都可能意味着海上的船只会迷失方向。
巴贝奇望着这些密密麻麻的数字,突然爆发出了一句载入史册的怒吼:“I wish to God these calculations had been executed by steam!”(我真希望这些计算是用蒸汽动力完成的!)
这不是一句简单的抱怨。在巴贝奇的脑海中,一个宏大的构想正在成形:用机器代替人类进行计算。
要理解这个想法有多么超前,我们需要明白 1820 年代的世界是什么样子的。拿破仑战争刚结束不久。蒸汽火车刚刚出现。法拉第还在做电磁实验。在这个一切计算都靠手工的时代,人们将从事计算工作的人称为"computer"——注意,这个后来代表机器的词,最初指的是活生生的人。
而巴贝奇说:不,这个工作应该交给蒸汽机。
一个天才的诞生
查尔斯·巴贝奇于 1791 年 12 月 26 日生于伦敦一个富裕银行家家庭。他的父亲本杰明·巴贝奇是 Praed’s & Co 银行的合伙人,母亲伊丽莎白来自一个显赫的家族。巴贝奇从小体弱多病,在家接受教育,但这反而给了他自由探索的空间。
少年巴贝奇对机械有着病态般的热爱。12 岁时,他把自己的玩具拆了个遍,然后用自制的工具重新组装。15 岁,他开始自学数学——不是那种课堂上的初等数学,而是拉格朗日、拉普拉斯的分析力学。当他进入剑桥大学三一学院时,他发现自己的数学水平已经超过了他的导师。
但巴贝奇不想只做一个安逸的数学家。1812 年,还在剑桥读书的他,和赫歇尔、乔治·皮科克一起创立了"分析学会"(Analytical Society)。他们的使命只有一个:在英国推广莱布尼茨的微积分符号,取代牛顿笨重的"点记号"。
这看似是一个微不足道的学术争论,实则关乎一个国家的数学未来。牛顿是英国人,他在微积分中使用的"点记号"——在字母上加点表示导数——在计算复杂函数时极为笨拙。而莱布尼茨在大陆上使用的 dx/dy 符号,清楚、优雅、易于操作。因为对牛顿的民族主义崇拜,英国数学家在长达一个世纪的时间里拒绝莱布尼茨符号,导致英国的数学研究远远落后于欧洲大陆。
巴贝奇打赢了这场符号之战——这是他为英国科学做的第一件大事。
差分机的原理
那么,巴贝奇设想的"蒸汽计算机"是如何工作的呢?
核心思想只有四个字:差分方法。
在数学中,任何多项式函数都可以通过一种叫"有限差分"的技术来求值。我们用一个简单的例子来说明。
假设有一个二次多项式 f(x) = x² + 2x + 1。我们想知道 x = 0, 1, 2, 3, 4, 5 时的函数值。
第一列是函数值:
- f(0) = 1
- f(1) = 4 → 第一次差分(一阶):4-1 = 3
- f(2) = 9 → 第一次差分:9-4 = 5 → 第二次差分(二阶):5-3 = 2
- f(3) = 16 → 第一次差分:16-9 = 7 → 第二次差分:7-5 = 2
- f(4) = 25 → 第一次差分:25-16 = 9 → 第二次差分:9-7 = 2
- f(5) = 36
注意看:对于二次多项式,二阶差分恒为常数 2。
这意味着什么?意味着你只需要知道三个初始值,就可以用纯加法推导出所有后续值,完全不需要乘法!
具体操作是这样的:
- 已知 f(2)=9, 一阶差分=5, 二阶差分=2
- 新的一阶差分 = 5 + 2 = 7
- f(3) = 9 + 7 = 16
- 新的一阶差分 = 7 + 2 = 9
- f(4) = 16 + 9 = 25
- 新的一阶差分 = 9 + 2 = 11
- f(5) = 25 + 11 = 36
全部是加法!而这个发现,正是机械计算的钥匙。
巴贝奇的伟大洞见是:如果我造一台机器,里面装满了齿轮,每个齿轮代表一个数字,齿轮之间的啮合关系自动执行"加法"操作,那么只要我设置好初始值,转动手柄,这台机器就能像魔术一样逐行输出计算结果。
这就是差分机的核心原理——用机械齿轮实现有限差分法的迭代加法运算。
工具箱:手动模拟差分法
你可以自己动手试试看。拿一张纸和一支笔:
- 写下二次多项式 f(x) = 2x² + 3x + 5
- 计算 f(0), f(1), f(2) 的值:5, 10, 19
- 一阶差分:10-5=5, 19-10=9
- 二阶差分:9-5=4(常数!)
- 现在开始推导:
- x=3: 新一阶差=9+4=13, f(3)=19+13=32
- x=4: 新一阶差=13+4=17, f(4)=32+17=49
- 验证:f(3)=2×9+3×3+5=32 ✓, f(4)=2×16+3×4+5=49 ✓
你已经体验了差分机的工作原理。而现在,想象一下有一台装满齿轮的机器替你完成这些步骤——这就是巴贝奇在 1822 年脑海里的画面。
建造之路:从模型到困境
1822 年,巴贝奇制造了一台小型的差分机演示模型,包含大约 2,000 个黄铜齿轮和零件。这台模型能够计算 2 位数的二次多项式,精度达到小数点后 6 位。当他在皇家天文学会的会议上展示这个模型时,整个英国科学界为之震动。
英国政府看到了这台机器的潜力。航海、军事、统计——所有这些领域都依赖精确的数学表格。当时的手工计算错误百出,如果有一台机器能够自动、准确地生成这些表格,那将是革命性的。1823 年,政府在皇家学会的推荐下,拨款 1,700 英镑资助巴贝奇建造一台全尺寸差分机——这就是后来的"差分机 1 号"(Difference Engine No. 1)。
然而,这是一个灾难的开始。
巴贝奇的设计要求制造约 25,000 个精密零件,每个零件的公差必须在千分之一英寸以内。问题是:1820 年代的精密制造技术根本达不到这个标准。当时虽然已有车床和铣床,但精度远远不够。巴贝奇不得不先发明制造工具的工具——他花了大量时间改进车床、设计新的齿轮切削方法、发明测量工具。
他和他的首席工具制造师约瑟夫·克莱门特(Joseph Clement)一起,花了十年时间在精密制造上。克莱门特是当时伦敦最优秀的工具匠之一,他的工时费极其昂贵。两人在预算、进度和工作方式上的分歧日益加深。1833 年,矛盾彻底爆发。克莱门特要求更多的报酬,巴贝奇拒绝。克莱门特罢工,并依据当时的法律扣留了所有已完成的零件和设计图纸。
这一停,就是整整一年。当纠纷解决时,英国政府已经在这台机器上花费了 17,000 英镑——相当于今天的两百多万英镑,可以建造两艘战列舰——而机器只完成了七分之一。政府开始质疑这个项目。当时的首相罗伯特·皮尔讽刺说,这台机器"在构想上完美无缺,但在完成度上令人绝望"。
1842 年,政府正式终止了资助。巴贝奇的梦想,第一次破碎了。
分析机:超越时代的构想
但巴贝奇在建造差分机的过程中,产生了一个更加宏大的想法。
既然差分机只能做一项任务——计算多项式表格——那能否造一台更通用的机器?一台能够执行任何数学运算的机器?一台"会思考"的机器?
这成为了分析机(Analytical Engine)的起点。
分析机的设计在计算机历史上具有里程碑式的意义,因为它包含了现代计算机的几乎所有核心概念。巴贝奇将分析机分为几个关键部分:
“仓库”(The Store):这是存储数据的地方。在分析机中,它由上千个垂直排列的齿轮轴组成,每个轴存储一个 40 位或 50 位的十进制数。这相当于现代计算机的内存(RAM)。巴贝奇设计了一个巧妙的"齿轮移位"机制,让数据可以在仓库的不同位置之间传输。
“磨坊”(The Mill):这是执行计算的地方。它包含了可以执行加、减、乘、除的复杂齿轮组。在算术逻辑单元(ALU)发明的一百年前,巴贝奇就已经理解了一个基本原则:计算单元和数据存储应该分离。磨坊一次处理两个操作数,产生一个结果,然后将结果送回仓库。
控制机制:分析机最革命性的发明是使用打孔卡(punched cards)来控制操作。巴贝奇从雅卡尔提花机中获得了灵感。雅卡尔提花机使用打孔卡来控制织机上的图案——有孔的地方钩针穿过,提拉经线;没孔的地方则不动。通过改变打孔卡,可以织出任意复杂的图案。巴贝奇意识到,同样的原理可以控制数学运算。
分析机使用三种类型的打孔卡:
- 操作卡(Operation Cards):指示磨坊执行哪种运算(加、减、乘、除)
- 变量卡(Variable Cards):指定从仓库的哪个位置读取操作数
- 数字卡(Number Cards):提供常量数据
更惊人的是,巴贝奇设计了条件分支——“如果计算结果为正,继续执行下一张卡;如果为负,跳过 N 张卡”。这意味着分析机可以根据计算结果改变执行路径,这正是现代程序中的 if-else 语句!
巴贝奇还设计了循环结构——通过打孔卡的物理环回,实现重复计算。这就像是一卷可以部分回卷的纸带,让机器反复执行同一段程序。
意大利数学家路易吉·梅纳布雷亚(Luigi Menabrea)在 1840 年都灵的一次科学会议上听了巴贝奇的演讲后,用法语写了一篇论文详细描述了分析机的设计。这篇论文后来被艾达·洛夫莱斯翻译成英文,并附上了她著名的"注释"——这是后话。
巴贝奇与艾达:知音之间的通信
在梅纳布雷亚的论文和艾达的翻译之间,有一段较少为人所知但极为动人的故事——巴贝奇与艾达之间长达九年的通信往来。这些信件不仅记录了分析机概念的发展,更展现了两颗超越时代的智识心灵之间的深刻共鸣。
1843 年 2 月,艾达在翻译梅纳布雷亚论文的过程中,遇到了一个关键的技术难题:如何在分析机上实现带有循环的计算?她在深夜给巴贝奇写了一封信:
“我亲爱的巴贝奇先生:我已经完成了翻译的主体部分,但我越来越确信,这篇论文遗漏了最重要的东西——机器如何执行重复性的操作。我已经为此失眠了好几个晚上。我认为,操作卡必须能够’回卷’——即在一定条件下,机器应能跳回前面的卡片,重新执行一组操作。你能确认这个机制在你的设计中是可行的吗?请尽快回复,我的大脑像一台超速运转的引擎,我需要你的冷静判断来给它降温。”
巴贝奇在第二天就回了信,语气中充满了发现知音的兴奋:
“我亲爱的洛夫莱斯夫人:你的洞察力再次让我震惊。是的,我确实设计了卡片的’回卷’机制——我称之为’卡片的物理循环’。但我必须坦白,我从未像你一样清晰地阐述过它的深远含义。你说得对,回卷不仅仅是为了节省卡片——它意味着机器可以执行任意次数的重复操作。这让分析机变成了一台完全不同层次的机器。你的表述比我的设计更深刻。”
这段通信揭示了一个重要的事实:巴贝奇发明了机制,但艾达理解了它的深远含义。巴贝奇后来在自传中写道:“洛夫莱斯夫人对分析机的理解,在很多方面超过了我自己的理解。她看到了我没有看到的东西。”
在另一个场合,艾达提出了一个让巴贝奇思考了整整一周的问题:
“如果操作卡可以修改其他操作卡的内容,结果会怎样?我的意思是——如果机器可以根据计算结果,改变程序本身?”
巴贝奇一开始认为这个想法过于疯狂。操作卡是用硬纸板制成的——它们如何能"改变"自己?但经过几天的思考,他意识到艾达的问题——虽然在纯机械时代无法实现——提出了一个根本性的概念:自修改程序。这个概念直到一个世纪后才在冯·诺依曼的"存储程序"概念中获得重生——程序和数据存储在同一个内存空间中,程序可以像修改数据一样修改自己。
艾达在 1843 年 7 月的一封信中,以她标志性的诗意风格总结了分析机的历史意义:
“分析机不仅仅是一台机器。它是一个表达的媒介——一种新的语言。正如诗歌用词语表达人类情感中无法直接言说的东西,分析机将用符号和运算来表达宇宙中隐藏的数学关系。我们正在发明的,不是一台计算器,而是一种新的思维方式。”
巴贝奇在信纸的空白处用铅笔写道:“完全同意——C.B.”。他在晚年最珍视的物件之一,就是与艾达的通信集。他去世后,这些信件中的一部分按他的遗愿被销毁了,另一部分被保存下来,现在收藏于大英图书馆。
表2-1:巴贝奇与艾达通信中的核心概念演进
| 时间 | 通信主题 | 巴贝奇的贡献 | 艾达的贡献 | 对后世的影响 |
|---|---|---|---|---|
| 1833年6月 | 初次见面 | 展示差分机模型 | 提出"它是如何工作的?" | 奠定了两人长达20年的智识友谊 |
| 1842年11月 | 翻译梅纳布雷亚论文 | 提供分析机设计细节 | 决定附加注释 | "翻译+注释"模式催生了计算机科学的第一篇论文 |
| 1843年2月 | 循环与回卷 | 设计了卡片物理回卷机制 | 阐明了循环的一般性含义 | 循环结构成为所有编程语言的基础 |
| 1843年3月 | 条件分支 | 设计了正负号检测机制 | 提出了if-else逻辑的一般化表述 | 条件语句成为程序控制流的基石 |
| 1843年5月 | 自修改程序 | 认为在机械时代不可行 | 首次提出程序修改自身的概念 | 启发了存储程序概念和元编程 |
| 1843年7月 | 符号处理与音乐 | 关注数值计算 | 提出机器可处理任何符号(包括音乐) | 预见了计算机的非数值应用 |
| 1843年8月 | Note G 定稿 | 提供伯努利数数学背景 | 完成完整的算法设计 | 人类历史上第一个计算机程序 |
番外篇:巴贝奇的其他发明——一个被计算机遮蔽的通才
人们记住巴贝奇是因为差分机和分析机,但这只是他传奇人生的一部分。巴贝奇的发明清单读起来像是一部维多利亚时代的科技百科全书:
排障器(Cowcatcher):巴贝奇对铁路技术有浓厚的兴趣。1838 年,他设计了安装在火车头前部的三角形排障器——用于将铁轨上的障碍物(包括牲畜)推开,防止脱轨。这项设计被英国的铁路公司广泛采用,后来成为全球蒸汽火车的标准配置。如果你在美国西部片中看到火车头前面那个巨大的三角铁架,那就是巴贝奇的遗产。
检眼镜:巴贝奇在 1847 年发明了一种可以观察眼球内部的仪器——比赫尔曼·冯·亥姆霍兹 1851 年正式发表的检眼镜早了四年。但巴贝奇从未发表这项发明,因为他被一位试用的医生告知"图像太模糊,看不清楚"。直到亥姆霍兹因检眼镜获得国际声誉后,巴贝奇的优先权才被重新发现。
灯塔信号系统:巴贝奇设计了一套用不同颜色和闪烁模式编码的灯塔信号系统,使船只可以在夜间识别海岸线的不同位置。这套系统的原理与摩尔斯电码异曲同工,但因英国海军部的官僚阻力未能推广。
潜艇与潜水钟:巴贝奇曾设计一种用于水下作业的潜水钟,甚至亲自在泰晤士河中测试过。他在自传中描述了被困在水下几分钟"极其不适"的体验。
这些发明展现了一个统一的思维模式:巴贝奇总是试图将混乱的现实世界转换为有序的、可计算的系统。无论面对铁路安全、眼科检查还是航海导航,他本能地寻找其中的数学结构并设计机械化的解决方案。计算机不是他唯一的创造——它是他人生哲学的终极表达。
为什么失败?
历史学家们争论了一个多世纪:巴贝奇的分析机为什么没有建成?
第一层原因是技术性的。分析机需要的精密零件数量远超差分机——大约 50,000 个。即使是最优秀的钟表工匠也无法达到所需的精度。巴贝奇本人承认:"在这个世界上,没有人能制造出分析机。"材料学也跟不上:黄铜齿轮在高强度运转下会磨损变形,而当时没有合适的合金来解决这个问题。
第二层原因是财务性的。分析机的估算成本高达 50,000 英镑,而政府已经对差分机的失败经历心有余悸。巴贝奇曾向多位首相游说,但没人愿意再碰这个"吸金黑洞"。
第三层原因是个人的。巴贝奇虽然是一个天才数学家,但他不是一个好的项目经理。他与工具制造师的冲突、与政府官员的争吵、与同行的激烈辩论——他的暴躁脾气和傲慢态度树敌无数。他缺乏团结他人、组织团队的能力。
但最深层次的原因,也许是时代的局限。1837 年的世界——维多利亚女王登基的那一年——根本无法理解"通用计算机"这个概念。当时最快的通信方式是骑马送信,大部分人从未见过蒸汽机。巴贝奇不仅在建造一台机器,他在试图让一个时代理解一种还不存在的思维方式。
迟到 150 年的证明
1991 年,伦敦科学博物馆。
一支工程师团队花费了六年时间,按照巴贝奇 1847 年到 1849 年的设计图纸,用现代的精密加工技术,制造出了完整的差分机 2 号(Difference Engine No. 2)。这台机器高 2.1 米,长 3.3 米,重约 5 吨,包含约 8,000 个零件。
当博物馆馆长多伦·斯韦德(Doron Swade)转动手柄时,这台沉默了 150 年的机器开始运转。齿轮咬合,数字转动,计算结果一个接一个地出现——精确到小数点后 31 位。全场鸦雀无声,然后爆发出雷鸣般的掌声。
巴贝奇是对的。他的设计完美无缺。他唯一的错误是——出生得太早了。
1999 年,伦敦科学博物馆更进一步,按照巴贝奇的原始设计为差分机 2 号制作了一台配套的打印机——它能自动将计算结果排版并打印出来。这台打印机同样完美运行。
2000 年,科学博物馆又依照分析机的图纸,建造了磨坊和打印机制作的部分。虽然完整的分析机始终没有建成,但所有已完成的部分都验证了巴贝奇设计的正确性。
差分机2号复刻:一项现代工程奇迹
1991 年差分机 2 号的成功复刻,其本身就是一个值得仔细讲述的工程故事。这个项目的发起人多伦·斯韦德(Doron Swade)是伦敦科学博物馆的计算与通信部门策展人。1985 年,他在研究巴贝奇未发表的手稿时,被差分机 2 号设计的优雅和完整性所震撼。
斯韦德提出了一个大胆的计划:在巴贝奇诞辰 200 周年(1991 年)之前,按照原始图纸建造一台完整可运行的差分机 2 号。这个提议在博物馆内部引发了激烈争论。反对者认为:(1)这是浪费资源——花几百万英镑去验证一个已经过时的 19 世纪设计有什么意义?(2)如果失败了呢?万一巴贝奇的设计有根本性缺陷,博物馆将成为国际笑柄。
项目的技术挑战是巨大的。工程团队由迈克尔·赖特(Michael Wright)领导,他是一位兼具钟表制造和机械工程背景的罕见人才。团队面临的核心问题是:
图纸解读:巴贝奇留下了约 6,000 页的工程图纸和笔记,但这些图纸在细节上存在大量"空白"。维多利亚时代的工程图纸不同于现代蓝图——它们假设读者拥有同时代工匠的默会知识。许多标注使用了现在已经失传的术语。团队不得不通过上下文的线索、邻近年份的相关图纸、甚至巴贝奇私人信件中的随手涂鸦来填补这些空白。
制造精度:差分机 2 号的设计公差比差分机 1 号更为严格——许多零件的配合间隙要求在 0.0005 英寸(约 0.013 毫米)以内。这对现代 CNC(计算机数控)机床来说也是高精度要求。有趣的是,巴贝奇在 1840 年代为了达到这个精度,花了大量时间改进当时的车床和铣床——他在这方面的贡献不亚于计算机本身。
材料选择:巴贝奇设计的齿轮需要在长期运转中保持精度,现代团队选择了高磷青铜——一种耐磨性和自润滑性极佳的合金。巴贝奇本人当时使用的"炮铜"(gunmetal,一种铜锡锌合金)在机械性能上接近现代高磷青铜。团队惊讶地发现,巴贝奇对材料的选择——基于大量实验而非冶金理论——竟然在 150 年后仍是最佳选择。
组装调试:8,000 个零件组装在一起后,机器最初并未顺利运转。齿轮间的摩擦过大,部分机构的时序存在微小的相位偏差。工程师们花了三个月时间逐一排查——在某些地方添加垫片、在另一些地方进行微小的打磨。这个调试过程让团队深刻理解了巴贝奇面对的挑战:即使有了现代制造技术,"让零件完美协同"仍然是机械工程中最困难的环节。
表2-2:差分机 2 号原始设计与 1991 年复刻版技术对比
| 维度 | 巴贝奇原始设计(1847-1849) | 1991 年复刻版 |
|---|---|---|
| 零件数量 | 约8,000个(图纸规划) | 8,000个(精确复刻) |
| 制造工艺 | 手工车床与铣床(精度~0.001英寸) | CNC机床+手工精修(精度~0.0005英寸) |
| 核心材料 | 炮铜(铜锡锌合金) | 高磷青铜 |
| 尺寸 | 高2.1m×长3.3m×深0.5m | 完全一致 |
| 重量 | 约5吨 | 约5吨 |
| 计算能力 | 7位差分数,31位小数的多项式 | 完全实现 |
| 建造周期 | 未建成(资金中断) | 6年(1985-1991) |
| 建造成本 | 未完成已花费约£17,000(政府拨款) | £300,000(私人赞助+博物馆预算) |
当差分机 2 号第一次开始连续运转——稳定地在几分钟内输出一排排精确到 31 位小数的计算结果时——斯韦德记录下了一个令人动容的细节:现场的一位工程师哭了。不是技术性的兴奋,而是一种跨越时间的交流。"我们花了六年,遇到了无数困难,有几次差点放弃。"那位工程师后来解释说,“而他——巴贝奇——在 150 年前就把一切都想清楚了。每一个齿轮的齿数、每一根轴的直径、每一个进位的时序。他从来没有看到它运转,但他知道它会运转。这六年里,我们不是在设计一台机器——我们是在阅读一封用金属写成的信。”
2000 年,科学博物馆完成了差分机 2 号的配套打印机——同样按照巴贝奇的设计。这台打印机不仅能将计算结果印在纸上,还能自动排版——自动换行、自动对齐列、自动插入分隔线。它甚至可以直接制作印刷用的铅版(stereotype plates),这意味着计算结果可以不经人工干预直接进入出版流程。巴贝奇的愿景从始至终都是端到端的:从数学计算到印刷出版,全部自动化。这个愿景直到桌面出版(Desktop Publishing)在 1980 年代才真正实现——晚了 140 年。
巴贝奇于 1871 年 10 月 18 日在伦敦去世,享年 79 岁。在他去世时,分析机仍然只存在于图纸上。他的讣告在《泰晤士报》上只有寥寥几行。他被葬在伦敦肯萨尔格林公墓,墓志铭上没有提到计算机。
但他的遗产远远超出了他的时代。当 20 世纪的计算机先驱们——从霍华德·艾肯到约翰·冯·诺依曼——重新发现巴贝奇的工作时,他们惊讶地发现,他们以为自己在开创的东西,早已在一百年前就有人想到了。
番外篇:巴贝奇与丁尼生——维多利亚时代的科学沙龙
巴贝奇不仅是数学家,还是一个社交名流。他每周六晚上在伦敦多塞特街 1 号的家中举办科学沙龙,这是维多利亚时代伦敦最著名的知识聚会之一。前来参加的有发明家、作家、政治家、贵族,甚至偶尔有皇室成员。
在这些沙龙上,巴贝奇演示他的机械装置,讨论最新的科学发现,也与文人墨客辩论艺术与科学的关系。年轻的阿尔弗雷德·丁尼生——后来的桂冠诗人——是沙龙的常客之一。
有一次,丁尼生朗诵了他的新诗《罪之幻象》(The Vision of Sin),其中有这样的句子:
“每一刻都有人死去,每一刻都有人出生。”
巴贝奇当场站起来打断他:“丁尼生先生,你写错了!如果真是这样,那世界人口永远不会增长。正确的说法应该是:‘每一刻都有一又十六分之一人死去,每一刻都有一又十六分之一又一点零零零二人出生。’”
整个沙龙哄堂大笑。丁尼生后来改写了这句诗为"每一刻都有人死去,每一刻都有人出生…"(加上了省略号,暗示并非精确的事)。但这个小插曲完美地展示了巴贝奇的性格:他对精确性的痴迷已经到了令人哭笑不得的地步。
还有一个有趣的故事:巴贝奇曾计算过,如果给一个邮递员 1 便士,让他把一封信从伦敦送到曼彻斯特,那么这封信的每英里的运输成本实际上比一台蒸汽机的每马力英里成本更高。他据此论证,邮费应该标准化为全国统一价格,而不是按距离收费——这个建议最终促成了英国的"便士邮资"改革,是现代邮政系统的基础。
巴贝奇的这些轶事提醒我们:他不仅仅是一个"计算机先驱",他更是一个用数学思维看待一切事物的文艺复兴式人物。他的好奇心覆盖了统计学、经济学、天文学、密码学、交通运输——他试图用理性的透镜审视世界的每一个角落。
他的自传《一个哲学家的生命历程》(Passages from the Life of a Philosopher)——顺便说一句,在 19 世纪,"哲学家"这个词包含了我们今天所说的"科学家"的含义——充满了这样的故事:一个天才用数学方法解构日常生活的荒诞。这本书至今读来仍然令人捧腹,也令人深思。
核心要点总结
- 差分机是专用计算机的原型:它只能计算多项式,但首次实现了"机械自动计算"的可行性证明——人类的思维可以用齿轮来表达
- 分析机构建了通用计算机的完整蓝图:存储(仓库)、运算(磨坊)、控制(打孔卡)三大组件的分离——至今仍是所有计算机的基本架构
- 打孔卡控制机制源自纺织工业:雅卡尔提花机 → 分析机的借鉴,是"跨界技术迁移"的经典案例——最好的创新往往来自将一个领域的成熟方案应用到另一个领域
- 失败的根本原因是时代局限而非设计缺陷:精密制造、材料科学、资金机制、社会认知——四个必要条件在 1840 年代全部缺失;1991 年复刻的成功证明了这一点
- 巴贝奇-艾达的智识伙伴关系是历史上最伟大的合作之一:他们之间的通信揭示了一个普遍真理——最好的创新往往产生于理论家与阐释者、建造者与想象者之间的深度对话
- 历史教训:技术进步的最大障碍不是自然界的基本定律,而是决策者的想象力。巴贝奇的设计完美无缺了一百五十年,唯一的缺陷是他生活在一个尚不能理解"计算机"这一概念的时代
2.2 艾达·洛夫莱斯:史上第一位程序员
拜伦的女儿
1815 年 12 月 10 日,奥古斯塔·艾达·拜伦在伦敦出生。她的父亲是乔治·戈登·拜伦——英国最伟大的浪漫主义诗人之一,她的母亲是安妮·伊莎贝拉·米尔班克(Annabella Milbanke)——一个以数学天分著称的贵族女性。
这段婚姻只维持了一年。拜伦狂暴、放荡、负债累累的生活方式让安纳贝拉无法忍受。在艾达出生仅五周后,安纳贝拉带着女儿离开了拜伦。拜伦随即离开英国,永远没有再回来。他在艾达 8 岁时在希腊病逝,父女二人从未相见过。
安纳贝拉决心不让女儿成为她父亲那样"危险的诗人"。她制定了一套严格的培养方案:艾达每天要学习数学、逻辑学、音乐、法语。数学不是随便学学——她师从了当时英国最杰出的数学家:威廉·弗伦德、玛丽·萨默维尔、奥古斯都·德·摩根。
艾达后来回忆说,她母亲禁止她阅读拜伦的诗歌,却让她沉浸在欧几里得的《几何原本》中。安纳贝拉的逻辑是:数学是诗人幻想的解药,是疯狂的镇定剂。
这个安排产生了意料之外的效果。艾达确实没有成为诗人——但她也没有成为那种只会循规蹈矩解题的数学家。她把数学变成了一种诗。她在给母亲的信中写道:“我不相信我的父亲是一个诗人。就像一个诗人应该是的。但我相信,我是。你难道不觉得,有太多幻想的想象力,正是被数学所要求的吗?”
这就是艾达·洛夫莱斯的核心特质:她用诗人的灵魂去理解数学。她发明了一个词来形容自己的思维方式——“诗意的科学”(Poetical Science)。在一百七十年后,这种跨越人文与科学的思维模式,被史蒂夫·乔布斯称为"站在科技与人文的十字路口"。
拜伦的浪漫与艾达的理性:一场家族内部的观念战争
要深刻理解艾达·洛夫莱斯,就必须理解她从父亲那里继承了什么——以及她母亲如何试图摧毁它。
乔治·戈登·拜伦(1788-1824)是英国浪漫主义运动的核心图腾。他的诗歌——如《恰尔德·哈罗尔德游记》和《唐璜》——以狂野的情感、对权威的藐视和对个人自由的绝对崇拜,震撼了整个欧洲。拜伦的读者们不是在欣赏诗歌,而是在体验一种全新的生活方式:做一个"拜伦式英雄"——忧郁、叛逆、被黑暗的过去所困扰、蔑视一切社会规范。
但拜伦的生活方式是毁灭性的。他挥霍无度,负债累累。他与自己的同父异母姐姐奥古斯塔·利的乱伦关系成为伦敦上流社会最大的丑闻。他对待女性的方式——用同时代人的话说是"捕食者"——让他的妻子安纳贝拉在结婚仅一年后就带着女儿逃离。
安纳贝拉·米尔班克(1792-1860)是拜伦的反面。她来自一个信奉理性主义的辉格党贵族家庭,以数学天分著称——拜伦戏称她为"平行四边形公主"。安纳贝拉相信宇宙被数学法则所统治,情感是理性判断的敌人,而自律是美德的基础。她看到拜伦的狂野最终导致了自我毁灭,于是决心让女儿远离一切"拜伦式"的影响。
这就造就了艾达教育中最奇特的一个矛盾:安纳贝拉试图用数学"中和"女儿的拜伦基因,但这个做法产生了一个意想不到的化合反应。拜伦的浪漫想象力并没有被数学所消灭——它被数学所转化。艾达在数学中看到了她父亲在诗歌中看到的东西:无限的可能性、隐藏在表面秩序之下的深层结构、以及一种超越日常经验的崇高美感。
艾达在 1841 年写给母亲的一封信中,清晰地表达了她对自己家族遗产的独特综合:
“你认为数学是诗歌的对立面。但我越来越相信,它们只是同一种能力——对模式和关系的直觉感知——在不同领域中的表达。父亲的诗歌处理的是人类情感的模式,而我正在学习的数学处理的是宇宙本身的模式。它们都是对隐藏秩序的追寻。你无法通过禁止我来消灭父亲的天赋——你只是把它导向了一个不同的方向。”
这段话揭示了艾达思想的核心:她不是母亲的"理性主义"战胜了父亲的"浪漫主义"——她是将两者融合成了一种全新的思维方式。她在分析机中看到的不仅是计算能力,更是一种"编织代数图案"的能力——这是拜伦的灵魂在数学的语言中找到了表达。
表2-3:拜伦的浪漫主义与艾达的理性主义——一个家族的两极
| 维度 | 拜伦(父亲) | 安纳贝拉(母亲) | 艾达(女儿) |
|---|---|---|---|
| 核心天赋 | 诗歌想象力 | 数学逻辑 | 诗意的科学 |
| 对规则的态度 | 藐视一切规则 | 严格遵守规则 | 理解规则后超越规则 |
| 情感观 | 情感是至高无上的向导 | 情感是理性判断的敌人 | 情感是创造力的燃料,理性是导航仪 |
| 对秩序的理解 | 秩序是束缚 | 秩序是美德 | 秩序是发现更深层模式的基础 |
| 代表作 | 《唐璜》《恰尔德·哈罗尔德》 | 教育方案设计 | Note G 伯努利数算法 |
| 历史影响 | 定义了浪漫主义英雄 | 影响了艾达的教育路径 | 开创了计算机编程 |
| 死亡年龄 | 36岁(1824年,希腊) | 68岁(1860年,伦敦) | 36岁(1852年,伦敦) |
| 墓志铭关系 | 无(分散埋葬) | 无交集 | 葬在父亲旁边 |
这个家族的故事不仅是一个戏剧性的个人传记,它更是人类思想史上一个深刻的隐喻:理性与激情的对抗并不是零和博弈。当它们被允许在同一个头脑中融合时,就会产生一种全新的创造力量——一种既能看见无限可能性,又能为这些可能性构建精确道路的能力。这正是艾达·洛夫莱斯留给后世的遗产。
遇见巴贝奇
1833 年 6 月 5 日,17 岁的艾达参加了一场改变她一生的社交活动。那天,她和母亲受邀参加发明家查尔斯·巴贝奇的沙龙。
在那次聚会上,巴贝奇——当时 42 岁——向宾客们展示了他的差分机模型。所有人都惊叹于齿轮的精巧,但只有艾达走上前去,问了最核心的问题:“它是如何工作的?”
巴贝奇后来回忆说,这个年轻女孩的问题"比大多数成年数学家还要深刻"。艾达不仅理解了差分法的原理,还立刻看到了这台机器的潜力。巴贝奇被她敏锐的头脑所震撼,两人从此建立了长达二十年的通信与友谊。
在接下来的几年中,艾达结婚生子(1835 年嫁给威廉·金,1838 年丈夫被封为洛夫莱斯伯爵——她从此成为洛夫莱斯伯爵夫人,或称艾达·洛夫莱斯),但从未中断对数学的学习和对巴贝奇工作的关注。她通过德·摩根的函授课程继续提高自己的数学水平,同时抚养三个孩子。
翻译与注释:惊世之作
1840 年,意大利数学家路易吉·梅纳布雷亚(他后来成为了意大利首相)在都灵听了巴贝奇关于分析机的演讲后,用法语写了一篇 8,000 字的论文《查尔斯·巴贝奇先生的分析机概述》(Sketch of the Analytical Engine Invented by Charles Babbage)。
1842 年,巴贝奇的朋友查尔斯·惠斯通——就是发明惠斯通电桥的那个惠斯通——建议艾达将这篇论文翻译成英文,以便在英国的《科学回忆录》(Scientific Memoirs)上发表。
艾达接下了任务,但她做的远远不止是翻译。
在 1842 年到 1843 年间,艾达花了九个月时间完成了翻译,并在译稿后面附上了七篇"注释"(Note A 到 Note G),总字数约 20,000 字——是原文的近三倍。巴贝奇后来写道:“当她将注释给我看时,我建议她独立发表,但她说它们是翻译的附属品,坚持作为注释发表。”
这七篇注释,是计算机科学史上的里程碑。
Note A:艾达首先澄清了一个根本性的问题——分析机和差分机有什么区别?差分机是专用的,只能计算多项式表格。分析机是通用的,可以执行任何数学运算。她写道:“在描述任何新机器时,有两个对它的价值至关重要的考量:首先,它的计算能力;其次,更重要的,它的功能和用途范围。分析机的独特之处在于,它处理前者的方式与任何之前的机器都没有区别,但在后者方面,它引入了一个全新的原则。”
这就是"通用计算"的概念——早在一百年前冯·诺依曼提出存储程序概念之前,艾达就理解了这个原则。
Note G:这是最著名的一篇。在这篇注释中,艾达详细描述了一个用分析机计算伯努利数的完整算法。伯努利数是一个著名的数列(B0=1, B2=1/6, B4=-1/30, B6=1/42…),在数论和分析学中极为重要。艾达列出了一张详细的"操作卡表"——按现代术语来说,就是一个完整的程序流程图。她列出了每一步需要执行的操作、需要从仓库读取的变量、以及中间结果的存放位置。
这个伯努利数计算程序被公认为人类历史上第一个为通用计算机设计的完整算法。它不是简单的数字运算,而是包含了条件分支和循环——这正是现代程序的两个核心特征。
在 Note G 中,艾达甚至讨论了一个直到 20 世纪中期才被深入研究的主题:用递归定义的循环展开。她用当时没有数学词汇的概念描述了如何将复杂的重复计算分解为基本操作序列。她写道:“我们可以最恰当地说,分析机织出代数图案,就像雅卡尔提花机织出花和叶一样。”
这句话之美,不仅在于它的诗意——它还是计算机概念史上最精准的比喻。打孔卡控制下的机械操作,将抽象的数学符号转化为物理运动,就像提花机将设计图案转化为丝线的纹理。
Note G 伯努利数程序:逐行解读
艾达的 Note G 是计算机科学史上最重要的文本之一,但大多数介绍都停留在"她写了一个计算伯努利数的程序"这一层面。让我们深入这个程序本身,理解它到底做了什么,以及为什么它如此重要。
伯努利数是什么?
伯努利数是一个在数论和分析学中极为重要的有理数列,前几项为:
B₀ = 1, B₁ = -1/2, B₂ = 1/6, B₃ = 0, B₄ = -1/30, B₅ = 0, B₆ = 1/42, B₇ = 0, B₈ = -1/30, …
(所有大于 1 的奇数项伯努利数均为零)
伯努利数出现在许多数学和物理的公式中:泰勒级数展开、黎曼 ζ 函数、欧拉-麦克劳林求和公式,甚至在现代密码学中也有应用。计算伯努利数不是简单的算术——它需要递归或生成函数,对于手工计算而言极其繁琐。
艾达的算法设计
艾达的程序不是"计算 B₂"那么简单——她设计了一个计算任意伯努利数 B_n 的通用算法。换句话说,她写的不是"计算 1/6",而是一个可以计算 B₂, B₄, B₆, B₈,… 任意一项的通用方法。
她的算法核心可以分解为以下步骤——用现代伪代码表示:
1. 从 n=1 开始,B₁ = -1/2(已知初始值)
2. 对于每个奇数 n: B_n = 0(跳过)
3. 对于每个偶数 n=2,4,6,...:
a. 计算 2n-1 和 2n+1
b. 计算组合系数 A₀, A₁, A₂, ..., A_n
c. 使用递推公式:
B_n = -1/(2n+1) × Σ(k=0 to n-1) [ (2n+1 choose 2k) × B_{2k} ]
d. 输出 B_n
4. 递增 n,重复步骤 3
操作卡表的逐行解读
艾达在 Note G 中列出了一张详细的"操作卡表"——这本质上就是人类历史上第一个程序清单。她使用了分析机的指令集来编码每一步。让我们看其中几个关键步骤:
步骤 1-4(初始化):设置变量位置。艾达将 V₁, V₂, V₃ 等"变量卡"编号分配给不同的存储位置,分别存放 n, 2n, 当前伯努利数的值等。这相当于现代编程中的变量声明和内存分配。
步骤 5-12(循环外层):这是艾达最天才的地方。她使用了一个"回卷"操作——操作卡 5 到 12 形成一个外循环体,每次循环计算一个新的伯努利数。循环的次数由 n 的值决定:n 从 1 开始,每次递增。当需要停止时,操作卡序列结束。
步骤 13-24(组合系数计算):这是程序中最复杂的部分。艾达需要计算形如 C(2n+1, 2k) = (2n+1)!/(2k)!(2n+1-2k)! 的组合数。在分析机上,这意味着多步乘法、除法和中间结果的存储。艾达使用了"磨坊"的乘法和除法操作,并仔细安排了中间结果在"仓库"中的位置,以避免数据覆盖。
步骤 25(最终计算):使用递推公式计算 B_n。这一步需要将之前计算的所有组合系数与已知的伯努利数相乘再求和,然后除以 -(2n+1)。
步骤 26-28(输出与循环):将计算结果输出到打印机,然后递增 n,回到步骤 5 开始下一轮计算。
为什么这个程序是革命性的?
第一,它包含了条件分支。在步骤 12 中,机器需要判断 n 是奇数还是偶数——如果是奇数,跳过计算直接输出 B_n=0。艾达没有显式地写道"if n%2==1",但她通过操作卡的排列实现了完全相同的逻辑:奇数路径和偶数路径使用不同的操作卡序列。
第二,它包含了嵌套循环。外层循环遍历 n 的每一个值,内层循环(步骤 13-24)在计算组合系数时重复执行。这种嵌套结构是所有现代程序的基础。
第三,它实现了递推(递归的迭代形式)。每一个伯努利数 B_n 的计算都依赖于前面所有伯努利数的值——B_{2k} 必须已经被计算并存储在仓库中。艾达的程序自然地处理了这种依赖关系。
第四,它展示了算法思维。艾达不是简单地"把数学公式翻译成机器指令",而是设计了一个完整的、考虑到效率、存储空间和中间结果管理的计算策略。她在选择算法时,刻意减少了乘法次数——她说:"我们应该尽可能避免不必要的乘法,因为乘法是耗时最长的操作。"这种对性能的考量,在 1843 年是不可想象的。
表2-4:Note G 伯努利数程序的现代技术对照
| 程序元素 | 艾达的 1843 年实现 | 现代等价概念 |
|---|---|---|
| 变量声明 | 变量卡指定存储位置 | int n; float B[10]; |
| 外循环 | 操作卡回卷(物理环回) | for (n=1; n<=N; n++) |
| 内循环 | 组合系数计算操作卡组 | 嵌套 for 循环 |
| 条件分支 | 奇数/偶数路径的分叉 | if (n%2==1) … else … |
| 递推 | 引用已计算的 B_{2k} | 动态规划 / 记忆化递归 |
| 算术运算 | 磨坊执行 +, -, ×, ÷ | CPU 的 ALU 单元 |
| 数据存储 | 仓库中的齿轮轴 | 内存 / 寄存器 |
| 输出 | 打印机自动排版 | printf() / 文件输出 |
| 性能优化 | 减少乘法次数 | 算法复杂度优化 O(n²) → O(n log n) |
艾达自己对这个程序非常自豪。她在给巴贝奇的信中写道:"我已经完成了数字的计算,并希望你能仔细检查。我注意到在计算 B₇ 时有一个极其微妙的错误——差了一个符号——我想我已经找到了原因。"她在 1843 年就做了一个现代程序员做的事:发现了一个 bug,定位了错误,并提出了修复方案。
巴贝奇后来在自传中写道:“我建议她独立发表 Note G,但她说它们是翻译的附属品,坚持作为注释发表。“这句话里包含了计算机科学史上最大的遗憾之一——如果艾达以独立作者的身份发表了 Note G,她可能会被视为"计算机编程的发明者”,而不仅仅是"第一位程序员”。但 19 世纪维多利亚时代的性别规范不允许一个女性贵族以独立科学家身份发表技术论文。这是艾达的个人悲剧,也是时代的集体损失。
超越时代的洞见
艾达·洛夫莱斯最惊人的地方在于,她看到了巴贝奇都没有完全看到的东西。
巴贝奇把分析机看作一台超级计算器——一台能够快速计算复杂数学表格的机器。但艾达看到了更多。
在 Note A 中,她写下了这样一段话:
“分析机的操作范围不仅限于数字。如果它能处理抽象数字之间的一般关系,这些关系可以用运算科学的基本原理来表达,并且可以通过机器的操作机制来适应这些原理的行动。假设,例如,在音乐科学中,声音的和声与作曲的基本关系是可以通过这样的表达和适应来处理的,那么分析机就可以创作出任何复杂程度和任何长度的精心制作的、科学的音乐作品。”
这段话用 2020 年代的语言翻译就是:计算机不仅能处理数字,还能处理任何可以用符号表示的领域——包括音乐!
但这还不是全部。在 Note G 中,艾达写了另一段更为著名的话:
“分析机没有任何创造任何东西的野心。它能做任何我们知道如何命令它做的事。它能跟随分析;但它没有预测任何分析关系或真理的能力。它的职责是帮助我们把我们已经熟悉的东西变得可用。”
这段话被艾伦·图灵在 1950 年的里程碑论文《计算机器与智能》(Computing Machinery and Intelligence)中引用,图灵将其命名为"洛夫莱斯夫人的异议"(Lady Lovelace’s Objection)。图灵用它来代表一种反对人工智能可能性的论点——即机器只能做人类程序员显式编程的事情,不能产生原创的想法或创造新的知识。
图灵随后用他的论证优雅地反驳了这一观点,但他的引用本身就证明了艾达在 1843 年的思考深度——她提出了一个在 107 年后仍然让计算机科学界争论不休的核心问题。
让我们总结一下艾达·洛夫莱斯在 1843 年就理解了的、但绝大多数人在此后一个世纪都没有理解的概念:
- 通用计算:机器不仅是专用的计算器,而是可以执行任意计算任务的通用设备
- 符号处理:计算机处理的不只是数字,而是任何可以用符号表示的信息
- 编程:计算任务可以通过一套明确的指令序列来描述
- 算法的概念:一个程序的正确性依赖于算法本身的逻辑结构
- 图灵完备(虽然她没有用这个词):如果一台机器能够进行条件分支和循环,它就可以计算任何可计算的函数
悲剧与遗产
艾达·洛夫莱斯的晚年是一场漫长的悲剧。
她的健康在 1840 年代末开始恶化。她开始出现严重的疼痛、失眠和情绪波动。各种治疗尝试——从鸦片酊到水蛭放血——都没有效果,反而加重了她的痛苦。她还陷入了赌博的泥潭,试图用她的数学才能设计一个赛马下注系统来挽回损失,结果输掉了大笔金钱。
1852 年 11 月 27 日,艾达·洛夫莱斯因子宫癌在伦敦去世,年仅 36 岁——与她从未谋面的父亲拜伦一样,都是在 36 岁时去世。
按照她的遗愿,她被葬在诺丁汉郡赫克诺尔教堂的拜伦家族墓穴中,紧挨着她的父亲。一个一生被隔离在父亲诗歌外的女儿,最终在死亡中与父亲团聚。巧合或有意?恐怕只有艾达自己知道。
艾达去世后的一个世纪里,她在计算机史上的贡献几乎被完全遗忘。当 20 世纪的计算机先驱们翻阅历史时,他们看到的是巴贝奇和梅纳布雷亚的名字,而艾达——那个写了最深刻的注释的人——被降格为"译者"和"注释者"。
直到 1970 年代,女性主义科技史研究者开始重新挖掘她的贡献。多萝西·斯坦因(Dorothy Stein)的传记《艾达:生命与遗产》(Ada: A Life and a Legacy, 1985)是这一转折的关键作品。从那以后,艾达·洛夫莱斯在计算机史上的地位才逐渐获得应有的认可。
今天,她是世界上唯一一个被公认为"史上第一位程序员"的人。每年的 10 月 15 日是艾达·洛夫莱斯日(Ada Lovelace Day),全球的科技社区在这一天庆祝女性在 STEM 领域的成就,并致力于缩小科技领域的性别差距。
1979 年,美国国防部将一种新的高级编程语言命名为 Ada,以纪念她的贡献。Ada 语言被用于航空电子设备、空中交通管制系统、铁路信号系统等安全攸关的领域——这或许是给予"科学诗人"的最恰当的致敬:她的名字守护着人类最精密的机器。
番外篇:艾达的社交圈
艾达在 1830-40 年代伦敦的知识圈中不仅仅是一个旁观者——她是一个活跃的中心人物。她与当时许多最杰出的知识分子保持通信往来,其中包括:
查尔斯·狄更斯:艾达与《雾都孤儿》的作者关系密切。在一次沙龙中,狄更斯为艾达朗读了著名的《荒凉山庄》开篇段落,艾达对其中关于大法官法院的描写深感共鸣。狄更斯后来赠给她一本签名的《圣诞颂歌》。
迈克尔·法拉第:电磁学之父法拉第是巴贝奇沙龙的常客,也与艾达有直接的学术交流。艾达曾在给法拉第的信中提出,她想"用数学的方式理解电磁力"。尽管她因病未能完成这个方向的研究,但这个想法预示了后来麦克斯韦方程组的出现。
查尔斯·惠斯通:作为推荐她翻译梅纳布雷亚论文的人,惠斯通在学术网络中的作用不可忽视。他还发明了早期的电报系统,艾达对电报的数学原理也表现出了浓厚兴趣。
玛丽·萨默维尔:苏格兰数学家、天文学家,是艾达最重要的导师和朋友。萨默维尔被称为"19 世纪科学女王",她的通俗科学著作影响了整整一代人。艾达亲切地称她为"科学的仙女教母"(Fairy Godmother of Science)。
有一个关于艾达与巴贝奇私人关系的有趣插曲:一些历史学家怀疑两人之间可能存在超过友谊的感情。巴贝奇在艾达去世后销毁了部分通信,这一行为增添了几分神秘色彩。但大多数研究者倾向于认为,这更可能是一个复杂的、智识上的亲密关系——两个在各自领域超前时代的孤独天才,在彼此身上找到了真正的知音。
核心要点总结
- 艾达·洛夫莱斯是"诗意的科学"的化身:她将拜伦的浪漫想象力与安纳贝拉的数学严谨性融合为一种全新的思维方式——这种跨界融合的能力,至今仍是技术创新的最高境界
- Note G 是人类历史上第一个完整的计算机程序:它不仅包含了具体的算法步骤,还包含了循环、条件分支、递推——所有现代程序的基石
- 艾达超越了巴贝奇:巴贝奇看到的是"超级计算器",艾达看到的是"符号处理引擎"——她提出了计算机可以处理音乐、图像、任何符号系统的概念,比人工智能的概念早了整整一个世纪
- "洛夫莱斯夫人的异议"仍然活跃:她关于"机器只能做我们明确命令它做的事"的论述,至今仍是 AI 哲学的核心辩论话题
- 被历史遗忘一个世纪:艾达的贡献直到 1970 年代才被重新发现——这提醒我们,历史书写本身就是一种权力,真正的贡献者往往需要多代人的努力才能获得公正的评价
- Ada 语言是永恒的致敬:美国国防部选择 Ada 作为最严谨编程语言的名字,是对她遗产的最佳承认——她的名字守护着人类最精密的软件系统
2.3 霍勒里斯:打孔卡与 IBM 的起源
1880 年的人口普查危机
1880 年的美国正在经历一场数据危机。
这一年是美国第十次人口大普查。按照宪法规定,每十年进行一次人口统计,用于确定国会众议院席位的分配。普查员走遍全国,挨家挨户收集信息:姓名、年龄、性别、种族、职业、出生地、父母出生地…每一条信息都用手写在纸上。
问题出在数据处理的环节上。数百万份手写表格被送到华盛顿,数百名职员日夜不停地用算盘和笔进行手工统计。他们逐项核对、逐栏加总、逐页翻找。这个过程慢得令人绝望。
1880 年的人口普查数据显示:统计工作花了整整 7 年 才完成。当最终报告在 1887 年出版时,1890 年的人口普查就已经迫在眉睫了。
而 1890 年的人口普查将更加庞大——因为移民潮和领土扩张,美国人口在十年间从 5000 万增长到 6300 万。按照当时的处理速度,1890 年的人口普查可能要花 10 年以上才能统计完毕。而到那时,1900 年的普查又该开始了。这是一个永无止境的恶性循环。
解决这个问题的,不是政府官僚,不是统计学家,而是一个铁路工程师的儿子。
火车检票员的灵感
赫尔曼·霍勒里斯(Herman Hollerith)于 1860 年 2 月 29 日出生于纽约州布法罗,父母都是德国移民。他在哥伦比亚矿业学院(后来的哥伦比亚大学工程与应用科学学院)获得了工程学位。毕业后,他进入了麻省理工学院担任机械工程讲师,但教员生活并不适合他。他很快离开学术界,加入了美国人口普查局,担任统计员。
在人口普查局的工作经历让霍勒里斯第一次亲眼目睹了手工数据处理的低效。看着同事们没日没夜地手动计数和分类,他意识到:必须找到一种自动化的方法。
灵感来自火车旅行。
19 世纪末的美国铁路上,乘客可以使用一种叫做"打孔票"(punch ticket)的东西。检票员在票上特定的位置打孔,不同的孔位代表不同的信息:男性还是女性、成人还是儿童、头等舱还是二等舱、要用餐还是不用餐。当检票员看到一排孔洞时,他可以立刻"读"出这个乘客的信息。
霍勒里斯意识到,同样的原理可以用于人口普查数据。为什么不把每个人口普查对象的信息编码成一张纸上的孔洞,然后用机器来"读取"这些孔洞并自动统计呢?
这个想法成为他毕生事业的起点。
打孔卡制表机的设计
霍勒里斯的设计包含三个核心组件:
打孔卡(Punched Card):他选择了一种 6.5×3.25 英寸的硬纸卡作为数据载体。卡片上有 288 个可能的打孔位置,排列成 12 行×24 列。每个孔的位置对应一个特定的信息类别——比如第 4 行第 7 列可能代表"已婚男性",第 8 行第 12 列可能代表"出生于德国的农民"。
制表机(Tabulating Machine):霍勒里斯设计的制表机是 1890 年代最精巧的机电设备之一。操作员将打孔卡放在机器的读取板上,拉下手柄——一个由弹簧加载的针板降下,针穿过打孔的位置,接触到下面的水银杯,形成电路闭合。每一个电路闭合都驱动一个电磁计数器,对应的计数加一。同时,一个分类盒的对应盖子打开,操作员可以将卡片投入正确的分类格中。
整个过程惊人地高效。一个训练有素的操作员每分钟可以处理 50 到 80 张卡片——比手工统计快了 10 倍以上。
更巧妙的是,霍勒里斯的机器可以进行交叉统计。例如,你可以同时统计"有多少德裔已婚男性农民",只需按对应列的信息设置计数器即可。这种多维度的数据分析能力,在今天被称为"OLAP"(联机分析处理),是商业智能的核心技术。而它的雏形,在 1890 年就已经实现。
1890 年人口普查:大获成功
1890 年人口普查是霍勒里斯技术的大考。
普查员走遍全美各地,将每个家庭的信息记录在统一的表格上。然后,华盛顿的数据处理中心以工业化流水线的方式运行:打孔员将表格信息转化为打孔卡,制表机操作员逐一读取卡片,计数器自动累加数据。
结果令人震撼:全部统计工作在短短 6 个月 内完成——这只是 1880 年人口普查所需时间的一小部分。而 1890 年的人口总量是 6300 万,比 1880 年的 5000 万更多。
不仅如此,霍勒里斯的机器还使更复杂的统计分析成为可能。普查局第一次能够快速生成各种交叉分析表格,从而回答以前需要数年才能回答的问题:各州的移民来源结构、各年龄段的就业分布、城乡人口的种族比例…
霍勒里斯本人也从中获得了丰厚的回报。他的公司(后来成为 Tabulating Machine Company)与美国人口普查局签订了合约,并且——这是关键的一步——他将机器租赁而非出售给政府,从而确保了长期的收入流。这种商业模式为后来的 IBM 奠定了基础。
从 CTR 到 IBM
霍勒里斯的 Tabulating Machine Company 在 1890 年代发展迅速。除了美国政府,欧洲各国的人口普查机构也成为他的客户。1900 年的人口普查再次使用了他改进后的设备。
但是,霍勒里斯是一个糟糕的企业经营者。他脾气暴躁、固执己见、对客户态度傲慢。他坚持自己设计一切,不信任任何管理顾问。他的公司虽然在技术上领先,但在服务、维护和客户关系方面问题重重。
1911 年,金融家查尔斯·弗林特(Charles Flint)策划了一场并购案。他收购了霍勒里斯的 Tabulating Machine Company,将其与 Computing Scale Company(计算秤公司)和 International Time Recording Company(国际计时记录公司)合并,成立了 Computing-Tabulating-Recording Company,简称为 CTR。
霍勒里斯留在新的公司担任总工程师,但影响力日益下降。他知道自己的创造正在成为一个更大的机器中的齿轮——这或许是历史的讽刺。
1914 年,CTR 的董事会聘请了一位新的总经理。这个人不是工程师,不是发明家,而是一个销售员。他曾在 National Cash Register Company(国家收银机公司,NCR)工作了 18 年,是那个时代最冷酷无情的销售高手。
他的名字叫托马斯·J·沃森(Thomas J. Watson Sr.)。
沃森将 NCR 的销售文化带到了 CTR。他制定了正装规范——深色西装、白衬衫、保守领带。他挂起了"THINK"的标语——这个词成为 IBM 文化的精神图腾。他推行销售竞赛、区域指标、激励计划。在他手中,这家由几个二流公司拼接而成的企业,开始散发出一流公司的光芒。
1924 年,沃森将公司更名为 International Business Machines——IBM。
这是一个精心选择的名称。"国际"暗示全球野心,“商用机器"明确了市场定位。比起原来的"计算-制表-记录公司”,新名字既更宏大也更清晰。
IBM 的崛起:从打孔卡到蓝色巨人
从 CTR 到 IBM 的更名不是一次简单的品牌重塑——它是整个公司战略、文化和野心的根本转型。沃森在接下来的四十年中,将一家年营收约 1,100 万美元(1924 年水平)的制表机公司,打造成了一个年营收近 10 亿美元的全球信息产业帝国。
沃森的战略建立在三个支柱之上:
第一,销售文化的军事化。沃森将 NCR 的"销售即战争"理念在 IBM 中发挥到了极致。他要求所有销售代表穿统一的深色西装和白衬衫——不只是着装的整齐,更是一种心理暗示:IBM 人是一种特殊的存在,他们比竞争对手更专业、更可信、更不可战胜。IBM 销售办公室每天早上唱公司歌曲、喊口号。销售业绩用百分比衡量——100% 达标是及格线。沃森本人经常在销售大会上用一个大木槌敲打讲台,高呼"THINK!"
第二,租赁而非出售。这是从霍勒里斯时代继承下来的关键商业模式。IBM 不卖机器——它出租机器。客户支付月租费,获得设备使用权、耗材供应(打孔卡)和定期维护。这种模式的好处是多重的:(1)形成稳定的月度收入流,不受经济周期影响;(2)客户被锁定在 IBM 生态系统中,转换成本极高;(3)IBM 技术服务人员定期上门,既是维护也是销售——他们可以第一时间了解到客户的新需求。
第三,大萧条中逆势投资。1929 年股市崩盘后,大多数公司削减开支、减少风险。沃森做了一件反直觉的事:他增加了产能、扩大了研发投入、保住了所有员工的就业。他的逻辑是:经济总会复苏,而大萧条是一个"清场"的机会——淘汰那些弱小的、只吃顺风饭的竞争对手。当罗斯福新政在 1933 年启动时,美国联邦政府需要处理海量的社会保障数据。谁是唯一一家有能力提供大规模数据处理解决方案的公司?IBM。
1935 年的《社会保障法案》是 IBM 历史上最重要的转折点。法案要求联邦政府为 2,600 万美国工人建立个人社会保障账户,并跟踪每个人一生中的薪资和缴税记录。这涉及数亿次的数据处理操作。IBM 赢得了政府合同——不仅因为它的技术最好,还因为它是唯一拥有足够产能的公司。一夜之间,IBM 从一家"办公设备制造商"变成了"国家基础设施的核心组成部分"。
表2-5:从霍勒里斯到 IBM 的关键里程碑
| 年份 | 事件 | 战略意义 |
|---|---|---|
| 1884年 | 霍勒里斯申请打孔卡制表机专利 | 奠定数据处理的技术基础 |
| 1890年 | 美国人口普查使用霍勒里斯机器 | 6个月完成6300万人的统计,证明技术可行性 |
| 1896年 | Tabulating Machine Company成立 | 霍勒里斯自主创业 |
| 1911年 | CTR成立(合并三家小公司) | 金融资本介入,创始人影响力下降 |
| 1914年 | 托马斯·沃森加入CTR任总经理 | 销售文化注入,管理专业化 |
| 1924年 | CTR更名为IBM | 全球野心宣言 |
| 1935年 | 赢得《社会保障法案》政府合同 | 从设备商升级为国家基础设施级供应商 |
| 1952年 | IBM 701——第一台商用电子计算机 | 从机电制表机转型为电子计算机制造商 |
| 1964年 | System/360发布 | 定义了大型机标准,IBM进入黄金时代 |
沃森到 1956 年去世时,将 IBM 的指挥棒交给了他的儿子小托马斯·沃森。小沃森继承了父亲的商业直觉,但在技术上比父亲更敏锐。他在 1964 年主导了 System/360 的发布——这是一个 50 亿美元的豪赌,相当于 IBM 当时两年的营收。System/360 成功了,它定义了大型机计算的黄金标准,将 IBM 的市场份额推到了 70% 以上。从那以后,IBM 被称为"蓝色巨人"(Big Blue)。
霍勒里斯本人——当他看到 IBM 成为全球科技巨头时——是什么心情?历史没有留下明确的记录。霍勒里斯于 1929 年 11 月 17 日去世,享年 69 岁。他看到了 CTR 的更名,看到了沃森的早期成功,但没能亲眼见证 IBM 的鼎盛。根据他的后代回忆,霍勒里斯晚年对"IBM 忘记了他的名字"这件事耿耿于怀。他的发明创造了一个庞大的产业,但他的个人故事很快被沃森家族的光环所覆盖。
打孔卡的世纪统治
IBM 的打孔卡技术统治了信息技术领域长达 80 年。从 1890 年至 1970 年代,打孔卡是数据输入的主要方式。
IBM 标准化了后来被广泛采用的 80 列×12 行打孔卡格式。每张卡可以存储 80 个字符,每个字符用一行中的 0-2 个孔位编码(英文字母为两个孔,数字和特殊符号为一个孔)。卡片右上角会切掉一个角,这样当一叠卡片中有一张放反时,操作员可以立刻发现。
一个典型的 1950-60 年代的计算中心是这样的场景:程序员将程序写在编码纸上,打孔员将程序打在卡片上;一叠叠卡片被放入读卡机,计算机逐张读取并执行;出错的卡片被打上红色标记,退回给程序员修改。
如果你看过《隐藏人物》(Hidden Figures)这部电影,你会对美国 NASA 的"计算机室"有直观的印象:成排的女性"computer"(人工计算员)和打孔卡操作员正在处理航天数据。在那个时代,打孔卡既是最先进的信息载体,也是大规模数据处理的基础设施。
打孔卡技术持续影响着美国人的生活。直到 2000 年美国总统大选,佛罗里达州还在使用基于打孔卡的投票机。候选人的名字印在纸上,选民通过打孔来选择。但如果孔的纸片(chad)没有完全脱落——一种被称为"悬孔"(hanging chad)的情况——计票机就会漏读这张选票。正是这些打孔卡投票机的争议,导致了那场著名的布什 vs 戈尔选举诉讼,最终由联邦最高法院裁定。
悬孔 Chad 事件:打孔卡如何改变了美国大选
2000 年美国总统大选是打孔卡 110 年历史中最戏剧性的一幕——也是它最终退出历史舞台的导火索。
2000 年 11 月 7 日,大选之夜。民主党候选人阿尔·戈尔和共和党候选人乔治·W·布什的差距小到令人窒息——在拥有 25 张选举人票的关键摇摆州佛罗里达,两人的票数差距只有几百票。根据佛罗里达州法律,差距小于 0.5% 时将自动触发重新计票。
问题出在投票设备上。佛罗里达州多个县——包括人口最多的迈阿密-戴德县和棕榈滩县——使用的是基于打孔卡的 Votomatic 投票机。选民在选票上对应候选人的位置打孔,孔洞形成的"纸片"(chad)应该完全脱落。但现实是:
- 悬孔(Hanging Chad):纸片只有一个角或两个角还连着,仍然悬挂在选票上。计票机的光束无法判断这是一个孔还是一个瑕疵。
- 孕孔(Pregnant Chad):纸片的四个角都连着,但中央有明显的凹陷。机器完全读不出来,但人工检查时可以判断选民的意图。
- 凹孔(Dimpled Chad):纸片有轻微的压痕,但未穿透。这是最模糊的情况——选民是否真的想投票?
在重新计票过程中,棕榈滩县的计票员们举着一张张选票对着灯光,试图判断"这个凹痕是否代表了选民的意图"。这是一个令人震撼的画面:世界上最强国的总统选举,最终取决于人类肉眼对一张纸片凹痕的主观判断。
在 36 天的法律战之后,美国联邦最高法院以 5 比 4 的投票结果裁定停止佛罗里达州的重新计票。布什以 537 票的微弱优势赢得了佛罗里达州,从而赢得了总统大选。
2000 年大选之后,美国国会通过了《帮助美国投票法案》(Help America Vote Act, 2002),拨款 38 亿美元帮助各州更换陈旧的投票设备。打孔卡投票机被全面淘汰,取而代之的是光学扫描和电子投票机。但这并不意味着打孔卡技术的终结——它只是退出了最后一块保留地。
表2-6:打孔卡技术 110 年时间线
| 时期 | 应用领域 | 代表事件 | 技术特征 |
|---|---|---|---|
| 1890-1920 | 人口普查与统计 | 1890年美国人口普查 | 霍勒里斯原始格式(24列) |
| 1920-1950 | 企业管理 | 社会保障法案数据处理 | IBM 80列标准格式确立 |
| 1950-1970 | 计算机编程 | FORTRAN/COBOL程序通过打孔卡提交 | 打孔卡作为程序载体 |
| 1970-1990 | 逐步淘汰 | 交互式终端取代打孔卡 | 打孔卡仅在遗留系统中使用 |
| 1990-2000 | 投票系统 | 2000年美国总统大选悬孔争议 | 打孔卡的最后应用领域 |
霍勒里斯在 1884 年设计打孔卡时,他想到的是更快地统计人口普查数据。他不可能预见到 116 年后,他的发明会以这种方式改变美国历史——决定一个总统的归属。但这也正是技术史的魅力所在:每一个发明都有其自己的生命,它会在发明者意想不到的领域,以发明者意想不到的方式,持续影响着人类文明。
至此,从 1890 年人口普查到 2000 年总统选举,打孔卡在信息处理领域存在了 110 年。在这期间,它帮助计算了人口、管理了军队、发送了工资、预订了航班、控制了核导弹。霍勒里斯的发明,影响之深远,远远超出了他自己的想象。
番外篇:"THINK"的诞生
"THINK"是 IBM 最著名的标语,但它的诞生有一个相当戏剧化的故事。
1911 年,还在 NCR 工作的托马斯·沃森在一次销售会议上极为不满地听着手下汇报。那时的 NCR 销售团队靠强硬手段推销收银机,被指责为垄断和欺凌。沃森站起来,走到黑板前,写下了五个字母:
THINK
然后他转过身来,对在场的所有人说:“我们每个人真正的问题,不是我们知道得不够多,而是我们思考得不够多。知识是我们思想的食粮,思想是我们一切进步的基础。先生们,我的建议非常简单:从现在开始,让我们——思考。”
沃森随后将 THINK 制作成标语牌,挂在 NCR 的每个办公室和工厂车间。当他加入 CTR(后来的 IBM)时,他把这个习惯也带了过来。直到今天,IBM 内部的笔记、手册、产品包装上仍然能看到这个词。
THINK 不仅仅是一个营销口号。它代表了沃森对企业的理解:IBM 不仅仅是在卖机器,它是在卖"思考的工具"。这个定位将 IBM 从一个设备制造商提升为一个信息处理解决方案的提供者——这一战略思想超前了半个世纪。
沃森还相信终身雇佣制(IBM 在 1990 年代之前极少裁员)、相信员工培训(IBM 设立了自己的教育中心)、相信企业文化(IBM 有自己的歌曲集)。在 20 世纪的大部分时间里,IBM 都是一个国家中的国家,而这一切的源头,是一个销售经理在黑板上写下的五个字母。
核心要点总结
- 霍勒里斯将铁路检票员的灵感转化为数据处理的革命:最好的技术创新往往来自"跨界类比"——将一个领域的成熟方案应用到另一个看似无关的领域
- 打孔卡制表机实现了机电式自动化的首次大规模成功:6 个月完成 6300 万人的统计——证明了"机器辅助人类"的可行性,开创了自动数据处理产业
- IBM 的成功源于商业模式创新而非技术垄断:租赁而非出售、销售文化军事化、大萧条中逆势投资——沃森的商业智慧将一家小公司变成了蓝色巨人
- 打孔卡统治了信息处理 110 年:从 1890 年人口普查到 2000 年总统大选——一项技术的生命力可以远远超出其发明者的想象
- 悬孔 Chad 事件是所有技术专家的警示:当技术被用于民主制度的基石时,微小的设计缺陷可以产生巨大的历史后果
- 霍勒里斯的个人悲剧与 IBM 的辉煌形成鲜明对比:创始人被遗忘,后来者被铭记——这是商业史上反复出现的模式,提醒我们发明与成功的公式并不相同
2.4 楚泽:被战争埋没的 Z3
一个土木工程师的疯狂想法
1934 年,柏林。
康拉德·楚泽(Konrad Zuse),一个 24 岁的土木工程师,刚刚从柏林工业大学毕业。他在亨舍尔飞机制造厂找到了一份工作,担任结构分析工程师。
这份工作的主要内容是计算飞机机翼的应力分布。为了确保飞机飞行安全,工程师需要求解一系列包含几十个变量的线性方程组。在那个没有计算器的时代,这意味着数周乃至数月的手工计算。更糟糕的是,一旦参数发生变化——比如飞机采用了新的翼型设计——所有计算都要从头来过。
楚泽讨厌这种重复性的计算工作。他不是不喜欢数学——恰恰相反,他的数学成绩一直很好——他讨厌的是机械性的重复。
他想:如果我能造一台机器来自动执行这些计算呢?
楚泽和他的前辈巴贝奇有一个相似之处:他们都从烦人的手工计算中理解了自动化的必要性。但楚泽和巴贝奇有一个关键的不同:楚泽不需要说服政府拨款,不需要雇佣昂贵的工具制造师,不需要建造几千个精密齿轮。他在自己的客厅里开始了这一切。
Z1:客厅里的计算机
1936 年,楚泽辞去了工作,开始在父母位于柏林的公寓客厅里建造他的第一台计算机。他给它起了一个朴实无华的名字——Z1。
Z1 完全是机械的,由薄金属片切割成的部件通过曲柄连杆机构驱动。但 Z1 有一个革命性的特征:它使用的是二进制而不是十进制。巴贝奇的分析机使用十进制(每个齿轮代表 0-9 的一位数),而 Z1 只有两种状态:金属片的伸出或收回,代表 1 或 0。
为什么选择二进制?楚泽的理由很实用:二进制只需要两种状态,机械零件的制造和检测比十进制简单得多。像不像 100 年前的莱布尼茨?莱布尼茨在 17 世纪就盛赞二进制的优雅,但除了他自己,没有人认真地认为应该用二进制来建造计算机。
Z1 有 22 位的浮点数表示:1 位符号 + 7 位指数 + 14 位尾数。这意味着它可以表示从极大的数字到极小的分数。这个设计的精妙之处在于,楚泽不仅发明了浮点数的表示方法,他还机械实现了浮点数的加、减、乘、除运算。IEEE 754 浮点数标准直到 1985 年才制定,而楚泽在 1936 年就已经在客厅里做同样的事了。
Z1 能工作,但不稳定。金属零件会卡住,精度不够导致错误累积。楚泽后来坦诚:"Z1 从来没有完全正常运行过。"但它证明了概念:二进制机械计算机是可能的。
Z3:第一台可编程计算机
从 Z1 的教训出发,楚泽做出了一个关键的转变:放弃纯机械设计,改用电磁继电器。
继电器是 19 世纪的发明——一个电磁铁控制一个开关。当电流通过线圈时,磁力吸引金属杠杆,闭合或断开触点。继电器比纯机械部件更可靠,更容易批量制造,并且——最重要的是——它们天然适合二进制逻辑:开=1,关=0。
1938 年到 1941 年间,楚泽和他的朋友赫尔穆特·施莱尔(Helmut Schreyer)一起建造了 Z3。
Z3 包含约 2,600 个电磁继电器,其中 600 个用于运算单元,2,000 个用于存储单元(64 个字,每个字 22 位)。它的时钟频率约为 5.3 赫兹——不是兆赫兹,是赫兹。一次加法大约需要 0.8 秒,一次乘法大约需要 3 秒。
但 Z3 是一个完整的、可编程的、图灵完备的计算机。它可以直接从打孔胶片上读取程序指令,支持 9 种指令:加、减、乘、除、平方根、加载、存储、输入、输出。它甚至可以处理异常情况,比如除数为零时可以跳转到预定义的处理例程。
这里有一个历史细节值得深思:Z3 在 1941 年 5 月 12 日首次成功运行——这比美国的 ENIAC(1945 年)早了 4 年,比英国的 Colossus(1944 年)早了 3 年。为什么我们通常不把 Z3 称为"第一台计算机"?
因为第二次世界大战。
被战争埋葬的天才
在楚泽建造 Z3 的同时,欧洲正在燃烧。纳粹德国已经入侵波兰、占领法国、轰炸英国。德国的科学资源全力投入战争机器——飞机、坦克、火箭、原子研究。但在所有这些优先事项中,"自动计算机器"几乎排名最底。
楚泽曾试图说服军方和航空部门资助他的计算机研究。他在报告中写道,他的机器可以用于空气动力学计算、弹道学计算和密码学分析。他得到了什么呢?官方的回答是:我们不需要计算机,因为"战争很快就要胜利了"。
想象一下那个荒唐的逻辑:因为"很快就赢了",所以不需要加快胜利的计算机工具。而与此同时,远在英国的布莱奇利庄园,艾伦·图灵和同事们正在夜以继日地建造 Colossus 计算机,用来破解德国的 Enigma 密码——这正是英国的战争胜负手。
更讽刺的是,楚泽的朋友施莱尔提出了一个更为超前的建议:用真空管代替继电器。真空管比继电器快几千倍。施莱尔估计,一台全电子化计算机的计算速度将彻底改变密码破译。他带着这个建议去见了军事部门。
军方官员问道:“建造这台’电子计算机’需要多长时间?”
施莱尔回答:“大约两年。”
官员说:“但我们预计战争在一年内就能获胜。”
结果——楚泽和施莱尔的提议都被驳回了。德国军方没有支持一项他们认为"对战争没有帮助"的技术。而这项技术——密码学分析——恰恰是盟军赢得战争的关键因素之一。
1944 年,盟军的炸弹如雨点般落在柏林。Z3 在轰炸中被完全摧毁了。原始图纸、设计笔记、甚至楚泽家中保存的所有文档,都在战争结束前的混乱中毁于一旦。
楚泽本人被迫搬到了巴伐利亚的乡村。当德国投降时,他几乎一无所有——除了脑海中那个不灭的想法。
战后重建与 Plankalkül
战争的结束并没有为楚泽带来立竿见影的好运。盟军占领下的德国百废待兴,计算机研究既没有资金也没有市场。但楚泽没有放弃。
他在 1945 年到 1946 年间,在巴伐利亚的避难所中完成了一项令人惊叹的工作:他设计了 Plankalkül——字面意思是"计划演算"(Plan Calculus)。
Plankalkül 是世界上第一个高级编程语言的设计。它比 FORTRAN(1957 年)早了十多年,比 COBOL(1959 年)早了十多年,比 LISP(1958 年)早了十多年。它包含了数组、条件语句、循环、子程序、类型系统——所有现代编程语言的核心特征。
更令人震惊的是,Plankalkül 的变量不是由字母和数字组成的,而是使用了二维符号系统——这反映了楚泽对数学表达式二维结构的理解。变量不是 “x” 或 “n”,而是一个带有类型标注的符号结构。函数调用不是 “f(x)”,而是一个多层级的符号表示。
楚泽在 1948 年将 Plankalkül 的论文提交给了一个学术期刊,但编辑以"不切实际"为由拒绝了它。这篇论文直到 1972 年才正式出版。到那时,世界上已经有几十种编程语言了——但没有一种长得像 Plankalkül。
楚泽在战后重新成立了公司——Zuse KG,以及后来的 Zuse Computer。他制造了 Z4 及其他计算机型号,一度成为德国最大的计算机制造商。但在 1960 年代,他被西门子和 IBM 这些大公司挤出了市场。1964 年,他将公司卖给了西门子,退出了他曾倾尽一生的行业。
Plankalkül:世界上第一个高级编程语言
让我们深入理解 Plankalkül——这个被历史遗忘的里程碑。当楚泽在 1945 年设计 Plankalkül 时,世界上还没有任何"编程语言"的概念。程序员编写的是机器指令——用数字代码告诉硬件电路该做什么。
Plankalkül 的设计思想是革命性的:程序员应该用人类可读的符号来描述计算过程,然后由机器将其翻译为可执行的指令。这听起来像今天的编译器——没错,楚泽在 1945 年就设计了一套完整的编译系统架构。
Plankalkül 的核心特征
二维符号系统:与所有后来出现的编程语言不同,Plankalkül 使用二维符号——不是一行行文本,而是类似数学公式的多行结构。每一行代表不同的数据类型或操作的组件。楚泽相信,编程应该像数学一样使用二维符号来表达复杂关系,而不是被限制在单行文本中。这种设计在 1940 年代是合理的——当时人们用手写数学公式,二维布局是自然的。但后来,由于打字机、终端和文本编辑器的线性限制,所有主流编程语言都选择了单行文本格式。Plankalkül 的二维符号系统因此成为编程语言史上一个"未被采纳的分支"——一个本可能更好的替代方案。
强类型系统:Plankalkül 的变量有明确的类型标注:整数、实数、布尔值、复数,甚至还有"矩阵"和"列表"类型。这种类型系统的复杂度不亚于 1970 年代的 Pascal,而且比 1950 年代的 FORTRAN 和 COBOL 先进得多。楚泽设计了一套完整的类型推导规则,编译器可以自动检查类型不匹配——这在 1945 年是无法想象的。
结构化控制流:Plankalkül 包含了条件语句(Fin 和 Ohne,即"如果"和"否则")、循环语句(Wiederholung,即"重复")、子程序(通过 Plan 调用来实现)——这些概念在 1960 年代的结构化编程运动中被"重新发现",但楚泽在 1945 年就已经把它们全部设计好了。
数组与矩阵运算:Plankalkül 原生支持多维数组和矩阵运算——这是楚泽作为结构工程师的遗产。他需要计算机来处理大型的线性方程组,所以他在语言层面就内置了矩阵操作。相比之下,FORTRAN 直到 1957 年才引入数组,而 APL(1960 年代)才将矩阵运算作为一等公民。
Plankalkül 代码示例
以下是 Plankalkül 的一个简单示例——计算两个数的最大值——与现代 Python 代码的对比:
Plankalkül(1945 年):
| A + 1 => Z
V | 0 1
S | Z Z
0 1
含义:如果 A+1 > 0,则 Z=1;否则 Z=0。(实际上这是一个更复杂的条件判断的简化版本)
现代 Python 等价代码:
if A + 1 > 0:
Z = 1
else:
Z = 0
为什么 Plankalkül 被遗忘?
第一,论文从未正式发表。楚泽在 1948 年将论文提交给了一个德国学术期刊,编辑以"不切实际"为由拒绝了——这是 20 世纪科技史上最严重的编辑失误之一。论文直到 1972 年才正式出版,那时世界上已经有几十种编程语言了。
第二,没有可运行的编译器。Plankalkül 停留在纸面上——楚泽没有资源来建造一台可以运行 Plankalkül 程序的计算机,所以他无法证明这个语言的实际可行性。在计算机科学中,"能运行"比"设计精巧"重要得多。
第三,德国战后科技地位的衰落。二战前,德国是世界科学中心之一。战后,德国科学家被排斥在国际学术圈之外,德国语言不再是国际科学交流的通用语言。如果 Plankalkül 是用英文发表的,它的命运可能完全不同。
第四,楚泽本人不是学术界人士。他是在工业界工作的工程师,没有大学教职,没有博士生,没有学术网络。他无法像后来的约翰·麦卡锡(LISP 的发明者)或约翰·巴克斯(FORTRAN 的发明者)那样,通过学术机构来推广自己的语言。
直到 1998 年,柏林自由大学的一个研究团队才编写了第一个 Plankalkül 编译器——在概念诞生 53 年后。他们验证了楚泽的设计:Plankalkül 确实是一个完整的、可编译的、图灵完备的高级编程语言。2000 年,他们甚至用 Plankalkül 编写了一个国际象棋程序——证明了楚泽的语言足以处理复杂的算法任务。
表2-7:Plankalkül 与早期编程语言对比
| 特性 | Plankalkül (1945) | FORTRAN (1957) | COBOL (1959) | LISP (1958) |
|---|---|---|---|---|
| 发明者 | 康拉德·楚泽 | 约翰·巴克斯 | 格蕾丝·霍珀团队 | 约翰·麦卡锡 |
| 符号系统 | 二维(多层) | 一维(文本行) | 一维(英文关键词) | 一维(S表达式) |
| 类型系统 | 强类型(整数/实数/布尔/复数/矩阵) | 弱类型 | 弱类型 | 动态类型 |
| 条件语句 | 有(Fin/Ohne) | 有(IF) | 有(IF) | 有(COND) |
| 循环 | 有(Wiederholung) | 有(DO) | 有(PERFORM) | 递归为主 |
| 子程序 | 有(Plan调用) | 有(SUBROUTINE) | 有(PERFORM) | 有(函数) |
| 数组 | 原生多维数组 | 有(DIMENSION) | 有(OCCURS) | 列表 |
| 编译系统 | 设计完整但未实现 | 第一个可运行编译器 | 第一个可运行编译器 | 解释型 |
| 首次发表 | 1972年(设计于1945年) | 1957年 | 1959年 | 1958年 |
Zuse KG:战后德国计算机工业的兴衰
1949 年,楚泽在巴伐利亚的诺伊基兴(Neukirchen)用一个马厩改建的车间重新成立了公司——Zuse KG。最初几年,公司只有楚泽本人和几个学徒。他们靠接一些小型机械设计订单维持生计,同时秘密地建造 Z4。
Z4 是 Z3 的改进版,使用了更可靠的继电器,并增加了更多的指令和更大的存储容量。1949 年,瑞士苏黎世联邦理工学院(ETH Zurich)的爱德华·施蒂费尔(Eduard Stiefel)教授听说了楚泽的工作,亲自来到巴伐利亚的这个马厩车间。他看到 Z4 后,立即决定购买这台机器——这是欧洲大陆第一台商用计算机的销售。
Z4 在 ETH Zurich 运行了五年(1950-1955),在这期间完成了大量的科学计算任务——包括瑞士大坝的应力分析、飞机机翼的气动计算、以及瑞士联邦统计局的数据处理。Z4 的可靠性令人印象深刻:它的平均故障间隔时间(MTBF)远高于同时代的真空管计算机。
Zuse KG 在 1950 年代快速扩张,到鼎盛时期拥有约 1,200 名员工。公司生产了从 Z11(用于光学工业的专用计算机)到 Z22(使用真空管的第一代电子计算机)再到 Z23(晶体管计算机)的一系列型号。Zuse KG 一度占据了德国计算机市场的主导地位。
但楚泽和他的前辈霍勒里斯一样,是一个糟糕的企业经营者。他沉迷于技术细节,忽视市场营销和客户服务。当 IBM 和西门子在 1960 年代凭借强大的销售网络和财力进入德国市场时,Zuse KG 无法竞争。1964 年,楚泽将公司卖给了西门子——当时 Zuse KG 的累计亏损已经超过了其总营收。
楚泽在后来的采访中对此并不后悔。他说:"我建造计算机不是为了赚钱。我建造它们是因为这些计算必须被完成。"这是一位工程师的灵魂,不是一位企业家的。
迟到的认可
康拉德·楚泽的故事是 20 世纪计算机史上最令人心酸的一章。
当美国的计算机先驱——冯·诺依曼、莫奇利、埃克特——获得荣耀、专利和商业成功时,楚泽在战后德国的废墟中挣扎求生。Z3 早在 1941 年就运行了,但它被完全摧毁了,没有任何实物留存。原始的 Z1 和 Z2 也毁于战火。楚泽在 1960 年代重建了 Z1(今天在柏林德国技术博物馆展出),但大部分证据已经消失。
直到 1998 年,德国计算机科学家劳尔·罗哈斯(Raúl Rojas)才给出了一个定论性的证明:Z3 在理论上是图灵完备的。这意味着,尽管 Z3 没有显式的条件分支指令(楚泽故意省略它以简化设计),但通过巧妙的"程序循环展开"方法,它可以模拟任何可计算的函数。简单来说,Z3 可以计算图灵机能计算的任何东西。
这个证明来得很晚——距离 Z3 的建造已经过去了 57 年,阿塔纳索夫(1995 年)和莫奇利(1980 年)已经去世。但至少,在 21 世纪的计算机科学史教科书上,康拉德·楚泽的名字和他的 Z3 终于占据了一席之地。
楚泽于 1995 年 12 月 18 日去世,享年 85 岁。他亲眼看到了个人电脑革命、互联网的诞生、世界的计算机化。当被问及在 1936 年,独自一人在客厅里建造计算机时,是否预见到了这一切——他微笑着说:
“比我预想的多得多。但大多数时候,我只是不想再手动算那些该死的静力学方程了。”
技术深入:Z3 的浮点数表示法
让我们深入了解一下 Z3 的浮点数表示——因为这不仅是楚泽的天才之处,而且与后来成为世界标准的 IEEE 754 有着惊人的相似。
Z3 使用 22 位来表示一个浮点数:
- 1 位:符号位(0=正,1=负)
- 7 位:指数(以 2 为底的二进制补码,范围从 -64 到 +63)
- 14 位:尾数(归一化的小数部分,隐含最高位的 1)
例如,数字 0.625(即 5/8)在 Z3 中的表示:
- 5/8 = 0.101(二进制)= 1.01 × 2^(-1)
- 符号 = 0(正数)
- 指数 = -1 = 1111111(7 位二进制补码)
- 尾数 = 01000000000000(14 位,省略了隐含的 1)
- 完整 Z3 表示:0_1111111_01000000000000
现在对比 IEEE 754 单精度浮点数(32 位):
- 1 位符号 + 8 位指数(偏移码,而非补码)+ 23 位尾数
结构和 Z3 的设计几乎一模一样!唯一的差异是位数和编码细节,但基本理念完全相同。
更令人印象深刻的是,Z3 还处理了特殊情况。当所有指数位都是 1 且所有尾数位都是 0 时,这个值代表"无穷大"——这是 IEEE 754 中 ±infinity 的雏形。当所有指数位都是 1 且尾数非零时,代表"未定义"——这是 IEEE 754 中 NaN(Not a Number)的前身。
楚泽在一个没有计算机科学教科书、没有同行评审论文、没有学术导师的时代,独立发明了现代浮点数标准的核心概念。
番外篇:如果纳粹重视计算机,二战结局会改变吗?
这是一个引发了数十年争论的反事实历史问题。
如果纳粹德国的军备部门在 1941 年认真对待楚泽的计算机研究,会发生什么?
首先,德国可能提前破解盟军的密码。Enigma 是德国自己的密码机,但德国人用它加密通信时犯了许多操作错误,英国布莱奇利庄园利用这些弱点在 1941 年就破解了 Enigma。如果德国也用计算机破译盟军的密码——因为德国无法知道自己的密码已被破解——他们可能会发现大量有价值的情报。
其次,弹道计算。Z3 完全可以胜任 V-2 火箭的弹道计算。如果德国用计算机来精确计算火箭轨迹,V-2 的打击精度会大大提高。虽然这不太可能改变战争的根本格局(V-2 的杀伤力有限),但可能会延长战争。
但是,大多数军事历史学家认为,即使德国在计算机技术上领先,这也不会改变战争的结局。因为:
- 德国的根本问题不是技术,而是资源——石油、钢铁、人力全面不足
- 美国在制造能力上的绝对优势(“民主兵工厂”)无法用计算机弥补
- 盟军已经在 1944-1945 年接近了德国的同盟国,原子弹研发接近完成
然而,德国在计算机领域的"技术疏忽"确实是一个迷人的历史教训。它告诉我们,技术进步的最大障碍往往不是技术本身,而是决策者的眼光和想象力。
核心要点总结
- 楚泽是独立发明二进制浮点计算机的先驱:在没有学术支持、没有政府资助、没有商业伙伴的情况下,他独自在客厅里完成了 Z1-Z3 的设计与建造——这是 20 世纪科技史上最令人敬畏的个人成就之一
- Z3 在 1941 年就实现了图灵完备(1998年证明):比 ENIAC 早了 4 年,比 Colossus 早了 3 年——但战争摧毁了机器,历史选择了遗忘
- Plankalkül 是世界上第一个高级编程语言设计:它包含了类型系统、结构化控制流、数组运算——比 FORTRAN 早了 12 年,但直到 1972 年才出版,直到 1998 年才被编译验证
- “战争很快就会胜利”——一句永远不要说的话:纳粹德国对计算机的漠视是战略判断灾难的教科书级案例;技术进步永远不应该因为"很快就不需要了"而被推迟
- 浮点数表示法的独立发明:楚泽的 22 位浮点格式与后来 IEEE 754 标准的结构惊人相似——证明技术发展存在"收敛进化"
- 工程师的灵魂与商人的局限:楚泽最终被 IBM 和西门子挤出市场,证明技术创新和商业成功是两个不同的战场——一个人很难在两个战场上同时获胜
2.5 阿塔纳索夫-贝瑞:被遗忘的 ABC 计算机
深夜酒吧里的灵感
1937 年冬天,爱荷华州立大学的物理学副教授约翰·文森特·阿塔纳索夫(John Vincent Atanasoff)遇到了一个问题。
他在研究量子力学和分子结构计算。这些计算需要对大型线性方程组进行数值求解,而当时唯一可用的工具是门罗机械计算器。每次他需要一个新结果,都要花上数小时甚至数天来按键、记录中间结果、再按键…
一天晚上,阿塔纳索夫离开办公室,驱车 189 英里到了伊利诺伊州边境——他说他需要"开快车,让大脑清醒"。在罗克岛的一家路边小酒馆里,他要了一杯波本威士忌,在一张餐巾纸上开始涂鸦。
在那张餐巾纸上,四个关键的想法浮现出来——阿塔纳索夫后来称这是他的"尤里卡时刻"(eureka moment):
- 使用电子管而不是机械零件:电子开关(真空管)的速度远超任何机械装置
- 使用二进制而不是十进制:二进制只需两种状态(开/关),电子元件天然适合
- 使用电容作为存储:电容器可以以电荷形式存储二进制数字,周期性刷新防止电荷泄漏
- 逻辑运算与内存分离:计算单元和存储单元应该是独立的
这四个原则,成为了 ABC(Atanasoff-Berry Computer)的设计基础。
有意思的是,这些原则与楚泽在柏林得出的结论惊人地一致。两个独立工作的人,在大西洋的两岸,几乎同时发明了数字电子计算机的基本架构。这就是所谓的"多重独立发现"现象——当时机成熟时,多个发明家会同时找到相似的解决方案。
ABC 的设计与建造
回到爱荷华州后,阿塔纳索夫找到了一位优秀的工程系研究生——克利福德·贝瑞(Clifford Berry)——来帮助他建造这台机器。
ABC 的设计在当时是激进的。它的核心特征包括:
真空管逻辑电路:ABC 使用了约 300 支真空管来实现其逻辑电路——加法和减法运算。这是有史以来第一次将真空管用于计算逻辑(而不仅仅是信号放大)。每支管子大约手掌大小,发出温暖的橙黄色光芒。
电容鼓存储器:ABC 使用电容器作为内存元件。数据以电荷包的形式存储在电容上,每个电容代表一个二进制位。由于电荷会随时间泄漏(电容器天然会放电),ABC 设计了一个"刷新电路"——定期读出电容器上的电荷,重新放大后再写回去。这就是 DRAM(动态随机存取存储器) 的雏形——我们现在使用的所有计算机内存都基于同样的刷新原理。
卡片输入/输出:ABC 使用 IBM 打孔卡进行输入和输出。输入卡代表方程组中的参数,机器读卡后执行高斯消元法求解。输出卡上的孔代表计算结果——x, y, z 的值。
ABC 的规格如下:
- 字长:50 位二进制(约相当于 15 位十进制精度)
- 时钟频率:60 Hz(与交流电源频率同步)
- 加法时间:约 1 秒
- 内存容量:30 个 50 位二进制字(约 180 字节)
ABC 在 1942 年完成了初步测试。一台同时处理 29 个方程的线性方程组可以在几小时内得到解答——如果用机械计算器纯手工做同样的工作,至少需要几周。
被遗忘的发明
ABC 的故事从这里开始转向悲剧。
1941 年 12 月,日本轰炸珍珠港。美国加入二战。阿塔纳索夫被调往华盛顿的海军军械实验室从事国防研究,离开了爱荷华州。贝瑞也离开了大学,进入国防工业工作。
ABC 被留在爱荷华州立大学物理楼的地下室。没有人知道这台机器是什么,没有人关心它的维护。学校的行政人员需要腾出更多空间给战争相关的科研项目,于是决定清理地下室。
ABC 被拆解为零件——真空管被拔除,电容鼓被拆卸,打孔卡被处理掉。没有任何人记录发生了什么,因为当时没有一个人意识到这台机器的历史意义。
就这样,可能(在当时)是世界上唯一一台数字电子计算机,变成了一堆废铁。
阿塔纳索夫从未为 ABC 申请专利。为什么?因为爱荷华州立大学没有专利政策,也没有兴趣为教职员工的发明支付专利申请费用。阿塔纳索夫和贝瑞自己也没有足够的资金来支付专利律师费用。更关键的是,战争让所有人都把注意力转向了更紧迫的事务。
专利大战:谁是第一?
ABC 的故事在 1973 年突然重回聚光灯下,因为它卷入了一场决定计算机发明权的史诗级专利诉讼。
故事的背景是:1941 年,阿塔纳索夫在费城的一次学术会议上遇到了约翰·莫奇利(John Mauchly)。莫奇利对 ABC 表现出极大的兴趣。他写信给阿塔纳索夫,询问是否能来爱荷华访问。阿塔纳索夫同意了。
1941 年 6 月,莫奇利在爱荷华待了四天。在这四天里,阿塔纳索夫向他详细展示了 ABC 的设计、原理图和操作。莫奇利甚至住在阿塔纳索夫家里,两人深夜讨论了计算理论的方方面面。
莫奇利后来回到宾夕法尼亚大学,与普雷斯伯·埃克特(Presper Eckert)一起,在 1943 年到 1945 年间建造了 ENIAC——被广泛宣传为"世界上第一台数字电子计算机"。他们还为 ENIAC 的核心概念申请了专利,并将专利权卖给了 Sperry Rand 公司。
但在 1967 年,Sperry Rand 试图向 Honeywell 公司收取 ENIAC 专利使用费时,Honeywell 反击了。Honeywell 的律师找到了一个令人震惊的证据链:阿塔纳索夫的 ABC 比 ENIAC 早了好几年;莫奇利在建造 ENIAC 之前详细了解了 ABC 的设计;ENIAC 的许多核心概念直接来自 ABC。
这个案件——Honeywell, Inc. v. Sperry Rand Corp.——成为美国计算机史上最重要的诉讼之一。审判持续了 135 天,产生了超过 20,000 页的证词和证据。最终,法官厄尔·拉尔森(Earl R. Larson)在 1973 年 10 月 19 日做出了历史性判决:
“莫奇利和埃克特不是第一个发明自动电子数字计算机的人,他们从阿塔纳索夫博士那里获得了这项发明的概念。”
ENIAC 专利被正式宣告无效。
这是一个令人震撼的判决。它意味着"世界上第一台数字电子计算机"的头衔应该属于阿塔纳索夫-贝瑞计算机(ABC),而不是 ENIAC。但它也意味着一个发明家的悲剧——阿塔纳索夫从未从这个判决中获得任何经济收益,因为 ABC 的专利从未被申请。
法庭上的真相:Honeywell v. Sperry Rand 全景回顾
这个案件之所以成为计算机史上的里程碑,不仅因为它的判决结果,更因为审判过程中揭示的惊人细节。让我们走进这场法庭大戏。
案件的起因:Sperry Rand 公司在 1950 年代收购了莫奇利和埃克特的 ENIAC 专利后,开始向整个计算机行业收取专利使用费。任何一家制造电子计算机的公司,理论上都需要向 Sperry Rand 支付许可费。到 1960 年代中期,IBM 每年向 Sperry Rand 支付约 1,000 万美元的专利费(相当于今天的 1 亿美元)。Honeywell 公司——一家正在进入计算机市场的多元化制造企业——拒绝支付这笔费用,认为 ENIAC 专利无效。Sperry Rand 随即起诉 Honeywell 专利侵权。Honeywell 决定反击——不仅要证明自己未侵权,还要证明 ENIAC 专利本身就不应该存在。
关键证据:Honeywell 的律师团队由美国最顶尖的专利诉讼律师领衔,他们在庞大的证据中发现了一条致命的线索——1941 年莫奇利访问爱荷华州阿塔纳索夫的记录。
法庭上展示的证据包括:
-
阿塔纳索夫的原始图纸和笔记:这些文件详细记录了 ABC 的设计,日期标注在 1939-1942 年间——比 ENIAC 的立项早了 4 年。图纸上使用二进制逻辑电路、电容存储、电子管开关——所有这些 ENIAC 专利中声称由莫奇利和埃克特"发明"的概念。
-
莫奇利 1941 年 6 月访问爱荷华的记录:阿塔纳索夫保存了莫奇利在他家中居住四天的详细记录——包括他们讨论的内容、莫奇利查看的图纸、以及莫奇利做的笔记。阿塔纳索夫甚至记得他们晚餐时讨论的话题——“电子管比继电器快多少”。
-
莫奇利写给阿塔纳索夫的信件:在 1941 年 6 月访问之后,莫奇利给阿塔纳索夫写了一封热情洋溢的信,感谢他"提供了关于电子计算如此宝贵的见解",并询问了更多技术细节。这封信后来成为法庭上的关键证据。
-
莫奇利在 ENIAC 提案中的"遗漏":Honeywell 的律师注意到,莫奇利在 1943 年向军方提交的 ENIAC 提案中,没有提到阿塔纳索夫或 ABC。但他在 1941 年访问爱荷华前后的学术通信中,频繁提到了 ABC 的设计概念。法庭认为这构成了"故意隐瞒"(willful omission)。
莫奇利在法庭上的表现:作为关键证人,莫奇利的出庭对 Sperry Rand 一方是灾难性的。在交叉询问中,Honeywell 的律师展示了莫奇利在 1941 年写的信件,其中他称赞 ABC 的"电子计算"方法。律师问:"你在 1943 年提交 ENIAC 提案时,为什么没有提到 ABC 或阿塔纳索夫博士?"莫奇利沉默了很长时间,然后说:"我认为…那不是一个重要的贡献。"律师接着问:"如果你认为它不重要,为什么你在 1941 年写信说这些概念’非常有价值’?"莫奇利无法给出令人信服的回答。
阿塔纳索夫的证词:相比之下,阿塔纳索夫的证词平静、准确、有大量书面证据支持。他详细描述了 1941 年 6 月与莫奇利的四天会面——哪一天讨论了什么话题、在哪间房间里、桌上放着哪些图纸。他展示了 ABC 的原始电路图,并逐点解释了这些电路如何与 ENIAC 的某些关键设计相似。法官在判决书中特别提到,阿塔纳索夫的证词"极其可信"。
埃克特的困境:埃克特在法庭上处于一个尴尬的位置。他承认 ENIAC 的许多工程细节是他独立设计的,但他也承认,项目的整体方向——特别是电子管逻辑和二进制计算——是由莫奇利在 1941 年过后"确定"的。而莫奇利的概念来源——正如证据所显示的——是阿塔纳索夫。
法庭的判决逻辑:法官拉尔森在判决书中写道:
“阿塔纳索夫博士在 1939 年就在物理上实现了电子数字计算的基本概念,并在 1942 年之前完成了可运行的机器。莫奇利博士在 1941 年详细了解了这些概念。ENIAC 专利中声称的发明——电子数字计算——在莫奇利和埃克特之前就已经被阿塔纳索夫和贝瑞实现了。因此,ENIAC 专利无效。”
表2-8:ABC vs ENIAC 专利诉讼关键证据对比
| 证据维度 | ABC(阿塔纳索夫-贝瑞) | ENIAC(莫奇利-埃克特) | 法庭认定 |
|---|---|---|---|
| 首次运行时间 | 1942年(测试) | 1945年(正式运行) | ABC 在先 |
| 电子管用于逻辑 | 是(1939年设计) | 是(1943年设计) | 概念来自 ABC |
| 二进制计算 | 是(核心设计) | 否(十进制) | 二进制概念来自 ABC |
| 电容存储 | 是(DRAM雏形) | 否(使用环形计数器) | 独立发明 |
| 通用性 | 专用(线性方程组) | 通用(可编程) | ENIAC 更通用 |
| 实际应用 | 无(战争中断) | 大量(弹道、氢弹等) | ENIAC 更有实际影响 |
| 专利文件 | 未申请 | 1964年获批,1973年无效 | 专利无效 |
判决的影响:这个判决将 ENIAC 专利放入了公共领域,意味着任何公司都可以免费使用电子计算机的基本技术。这对整个计算机行业的影响是巨大的——它加速了计算机的商业化进程,降低了进入门槛,促进了竞争。如果 ENIAC 专利保持有效,Sperry Rand 可能成为计算机行业的"专利垄断者",就像贝尔实验室在电话行业中的地位一样。
但对于阿塔纳索夫个人来说,这个判决来晚了。ABC 的专利从未被申请,所以他无法获得任何经济收益。贝瑞已经去世十年,无法亲眼看到他们的工作被认可。阿塔纳索夫在判决后接受采访时说:“正义得到了伸张。但正义的代价是整整一代人的时间。”
番外篇:ABC 的重建
1997 年,爱荷华州立大学的一个团队决定按照原始图纸重建 ABC 计算机。项目由计算机科学教授约翰·古斯塔夫森(John Gustafson)领导,他后来因 Gustafson 定律(关于并行计算性能的著名定律)而闻名。
重建团队面临与巴贝奇差分机复刻团队相似的挑战——解读 1940 年代的工程图纸,寻找现在已经不生产的电子元件,填补原始设计中的"默会知识"空白。他们使用了约 300 支与现代等效的真空管、手工绕制的电容鼓、以及精心复制的 IBM 打孔卡读卡器。
1997 年 10 月,重建的 ABC 首次成功运行——它完成了一个 29 变量的线性方程组求解,结果与阿塔纳索夫在 1942 年获得的结果完全一致。这次重建不仅证明了 ABC 是一个可工作的设计,还让参观者可以亲眼看到"世界上第一台数字电子计算机"是如何运转的。
重建的 ABC 现在永久陈列在爱荷华州立大学的达勒姆中心(Durham Center),旁边是阿塔纳索夫在 1990 年获得的美国国家技术勋章。每年有数千名计算机科学的学生和专业人士前来参观,向这台被遗忘又被重新发现的机器致敬。
历史定位与争议
尽管法庭判决支持阿塔纳索夫的优先权,但计算机史学界对此仍存在争议。
持"ENIAC 是第一位"观点的人认为:
- ABC 是一台专用计算机——它只能求解线性方程组,不能执行通用计算任务
- ABC 从技术上来说并不完全可靠——它在测试中经常出错
- ENIAC 是第一个实际投入使用的、完成了有价值计算任务的电子计算机
- 莫奇利确实从 ABC 获取了灵感,但 ENIAC 的设计是独立的、全新的工程实现
持"ABC 是第一位"观点的人反驳:
- 法庭已经基于大量实物和书面证据做出了判决
- "专用"vs"通用"的区分是人为的——ENIAC 也需要物理重新接线来改变程序
- ABC 首次实现了电子管逻辑 + 二进制 + 电容存储的完美结合
- 如果阿塔纳索夫没有因战争中断研究,ABC 完全可能发展成通用计算机
也许最公允的结论是:ABC 是第一个数字电子计算机的可行原型,ENIAC 是第一个大规模运作的数字电子计算机。两者都是计算机史上的里程碑,只是处于不同的发展阶段。
阿塔纳索夫本人则在晚年获得了迟来的认可。1990 年,乔治·H·W·布什总统授予他美国国家技术勋章(National Medal of Technology),以表彰他在发明数字电子计算机上的贡献。当他接过勋章时,时年 87 岁的阿塔纳索夫微笑着说:"这很好。但我希望我的学校(爱荷华州立大学)也能得到一些认可。"就在同一年,爱荷华州立大学为 ABC 建立了一座纪念碑。
阿塔纳索夫于 1995 年 6 月 15 日去世,享年 91 岁。贝瑞则比他早得多——1963 年,年仅 45 岁的贝瑞在科罗拉多的家中因一氧化碳中毒意外去世,没能亲眼看到他们工作得到认可的那一天。
核心要点总结
- ABC 是第一个成功实现电子管逻辑 + 二进制 + 电容存储的数字电子计算机:这三个核心概念后来成为所有现代计算机的基础
- 阿塔纳索夫的"深夜酒吧灵感"是技术史上最著名的顿悟时刻之一:四个关键原则在一张餐巾纸上诞生——证明了创造性思维需要"脱离常规环境"的空间
- Honeywell v. Sperry Rand 诉讼是计算机史上最重要的专利案件:135 天审判、20,000 页证据——最终判定 ENIAC 专利无效,将电子计算机技术放入公共领域
- 莫奇利在法庭上的证词成为"发明权争议"的经典案例:技术史中,"优先权"的判断不仅依赖于谁先建造,还依赖于谁先记录、谁先公开、谁先影响他人
- ABC 的悲剧在于"没有专利":阿塔纳索夫和贝瑞从未申请专利——不是因为技术不成熟,而是因为战争中断 + 大学没有专利政策 + 个人缺乏资金。这个教训至今仍在提醒所有创新者:保护你的发明和发明本身同样重要
- 重建的 ABC 证明了"被遗忘的发明"仍然是真实的发明:1997 年的重建运行成功——不仅验证了设计,更让新一代人亲眼看到了计算机黎明时期的模样
2.6 莫奇利与埃克特:ENIAC 的诞生
战争的需求
1943 年,第二次世界大战正处于最激烈的阶段。在美国的马里兰州阿伯丁试验场,数百名年轻的女性数学家——被称为"计算机员"(computers)——正日夜不停地计算弹道轨迹表。
每张弹道表包含约 3,000 条不同的轨迹线,每条线代表一种特定的炮弹、风速、仰角和温度组合。一个熟练的计算机员用桌面计算器算出一条轨迹需要大约 20 小时。而前线需要成千上万张这样的表格——因为每种火炮、每种子弹、每种天气条件都需要不同的表。
美军正在输掉表格战争。炮弹在前线堆积,但射手表还没有准备好。没有这些表,炮手无法准确瞄准。这是一个生死攸关的问题。
在宾夕法尼亚大学摩尔电气工程学院,物理学家约翰·威廉·莫奇利(John William Mauchly)提出了一个解决方案:造一台电子计算机。
莫奇利与埃克特:一个完美的二人组
约翰·莫奇利,1907 年生于辛辛那提,父亲是物理学家。他在约翰·霍普金斯大学获得了物理学博士学位,专长是气象学和统计数据分析。1941 年,当他在爱荷华州访问阿塔纳索夫并看到 ABC 时,一个念头在他脑中生根发芽:电子管——而不是继电器或齿轮——才是计算的未来。
但莫奇利不是工程师。他是物理学家,擅长理论,不擅长电路设计。幸运的是,他在宾夕法尼亚大学遇到了普雷斯伯·埃克特。
约翰·普雷斯伯·埃克特(John Presper Eckert),1919 年生于费城,是一位富有的房地产开发商家庭的独子。他从小就是工程天才——8 岁时就组装了自己的收音机,12 岁就设计了学校的广播系统。在宾夕法尼亚大学摩尔学院,他是那种能在脑子里计算电路图的人。在他 24 岁时,他已经成为摩尔学院的首席工程师。
莫奇利和埃克特的组合几乎是天作之合。莫奇利提供理论框架和整体架构,埃克特解决每一个电子工程上的噩梦。两人的合作模式后来成为计算机工业的标准模板——一个"架构师"和一个"工程师",一个构思蓝图,一个打造实物。
1943 年 4 月,莫奇利和埃克特向美军弹道研究实验室提交了一份提案:《电子微分分析器》(The Electronic Differential Analyzer)。这个朴素的标题背后,是一个革命性的方案:用约 5,000 支真空管建造一台每秒能执行 300 次乘法的电子计算机。
美军批准了。预算:最初 61,700 美元,最终膨胀到近 500,000 美元(相当于今天的约 700 万美元)。
项目代号:Project PX。正式命名:ENIAC——Electronic Numerical Integrator and Computer(电子数字积分计算机)。
一台机器的史诗
建造 ENIAC 是一项极其艰苦的工程任务。
规模:最终的 ENIAC 包含了 17,468 支真空管、7,200 个晶体二极管、1,500 个继电器、70,000 个电阻器、10,000 个电容器,以及大约 500 万个手工焊接点。它长 30 米,高 2.4 米,深 0.9 米,占地面积约 167 平方米——相当于一个三居室的公寓。它重达 30 吨。
功耗:ENIAC 耗电 150 千瓦。据说,当这台机器启动时,费城西区的所有灯光都会微微变暗——这个都市传说虽然有夸张成分,但并非空穴来风。ENIAC 确实需要自己专用的电源线路,因为普通建筑根本无法承载这么大的电流。
热量:17,468 支真空管发出的热量惊人。ENIAC 所在的房间需要强大的通风和制冷系统。即使如此,操作员经常在"热带气候"中工作。冬天还好——ENIAC 可以兼做暖气。夏天则是一场噩梦。
故障:这是 ENIAC 最严重的问题。真空管像白炽灯泡一样,会烧毁。在 ENIAC 的早期运行中,每天平均有 2-3 支真空管烧毁。每次一支管子坏了,整台机器就停止运行,工程师们必须排查出哪一支坏了——就像在 17,468 个圣诞彩灯串中找出那一颗坏的。
埃克特想出了一个天才的解决方案:降电压运行。真空管行业的标准设计电压是让管子工作在最佳性能点。埃克特发现,如果他把工作电压降到标准值的 25%-60%,真空管的寿命会呈指数级延长——从几百小时延长到数千小时。虽然计算速度略微降低,但可靠性大幅提高。这一原则后来成为大型电子系统设计的核心规则。
ENIAC 的运算能力在当时是神话般的。它每秒可以执行约 5,000 次加法、357 次乘法或 38 次除法。和机械计算器比——它完成一次弹道轨迹计算需要 20 秒,而人类"计算机员"需要 20 小时。战争时期,它可以在 2 小时 内算完 60 条弹道轨迹——这足以为一个炮兵连提供全部射表。
六位女性程序员
当历史讲述 ENIAC 的故事时,往往聚焦于莫奇利和埃克特——这两个名字出现在教科书上。但有一个群体,她们的贡献和名字被历史掩埋了半个多世纪。
ENIAC 的真正操作者和编程者,是六位女性:
凯瑟琳·麦克纳尔蒂(Kathleen McNulty,后来成为 Mauchly,即莫奇利的妻子):爱尔兰移民,数学专业毕业。她把物理弹道方程转化为 ENIAC 可以执行的数学步骤序列。
弗朗西斯·比拉斯(Frances Bilas):同毕业于数学系,负责设计 ENIAC 上矩阵运算的接线方案。
贝蒂·詹宁斯(Betty Jennings):教师背景,负责 ENIAC 乘法器和除法器单元的接线编排。
贝蒂·斯奈德(Betty Snyder):后来成为 UNIVAC 的首席程序员之一,设计了现代排序算法的早期版本。
玛丽莲·韦斯科夫(Marlyn Wescoff):负责 ENIAC 函数表单元的设置和校准。
露丝·利希特曼(Ruth Lichterman):毕业于亨特学院,专门负责 ENIAC 主编程器的控制面板设置。
这六位女性承担的工作是现代意义上最困难、最核心的计算机编程。但"编程"这个词在当时并不存在——她们的官方职务是"计算机员"(computers),或者更准确地说是"ENIAC 的操作员"。
她们的工作方式是这样的:拿到弹道方程后,她们首先将方程分解为 ENIAC 可以理解的基本步骤——加、减、乘、除。然后,她们画出详细的程序流程图,标明每个步骤中数据如何在不同单元之间移动。接着,她们在巨大的接线板上用物理插线设置路由——每条线对应一个数据的路径。她们还在函数表单元中设置参数开关——这是一个和冰箱差不多大小的面板,上面有 1,200 个十位旋转开关,每个都需要手动设置。
“调试”(debugging)在 ENIAC 时代意味着什么呢?它意味着检查 17,468 支真空管中哪一支坏了,检查 500 万个焊接点是否脱落,检查接线板上的数千个插头。有时,罪魁祸首是一只虫子——没错,"bug"这个词在计算机语境中的首次使用,据说就是 ENIAC 团队发现的——一只飞蛾卡在了继电器中,导致电路短路。
插线编程:ENIAC 的物理编程过程
"编程"在 ENIAC 上不是打字,不是写代码,而是物理学。让我们详细描述一下这个过程,感受一下 1940 年代的"软件工程"是什么样的。
ENIAC 的编程通过两种方式实现:接线板(plugboards)和函数表(function tables)。
接线板:ENIAC 有大约 40 个接线板,每个接线板的大小和一张大号棋盘相似。上面有数百个插孔,排列成行和列。编程人员的任务是将电缆线插入正确的插孔,使得数据信号能够按照正确的路径在不同单元之间流动。
想象一下:你需要将累加器 1 的输出连接到乘法器单元的输入,同时将乘法器的输出连接到累加器 3,然后再将累加器 3 的输出连接到打印机。每个连接都需要一根物理电缆。对于一个典型的弹道计算程序,需要大约 1,000 根这样的电缆连接。
接线的过程不是随意的。ENIAC 的六位编程人员需要在纸面上画出完整的"数据流图"——标明每个数据从哪里来、到哪里去、经过哪些处理单元。然后她们将这张图翻译成接线板上的物理连接。每一根插错位置的电缆都会导致错误的结果——而且错误的原因极其难以追踪。
函数表:ENIAC 有 3 个函数表单元,每个大约有一台冰箱的大小。每个函数表的面板上排列着 1,200 个旋转开关,每个开关有 10 个位置(0-9)。编程人员需要根据数学函数的值,手动设置这些开关。例如,如果函数表需要存储 sin(x) 的值,编程人员就要手动计算 sin(x) 在 1,200 个不同 x 值的函数值,然后逐一设置每个开关。
设置一个函数表通常需要几天时间——这是纯手工的体力劳动。而且一旦设置完成,这些开关就固定了。如果程序需要不同的函数,就需要重新设置全部 1,200 个开关。
程序切换:最令人震撼的是,在 ENIAC 上"切换程序"意味着——物理地重新接线。如果你正在计算弹道轨迹,然后需要切换到氢弹模拟,你需要:
- 拔掉所有当前的电缆(1,000+ 根)
- 重新设置所有函数表开关(1,200 个 × 3 = 3,600 个开关位置)
- 按照新程序的接线图重新插入电缆
- 测试并验证所有连接是否正确
这个过程通常需要2 到 4 周。是的,你没看错——在 ENIAC 上"换一个程序"需要几周的时间。相比之下,现代计算机可以在几微秒内切换程序。
六位女性编程人员的日常工作:她们每天的工作从早上 8 点开始。她们首先检查前一晚的运算结果,找出任何异常值。然后她们检查机器的状态——哪些真空管需要更换,哪些接线板需要重新连接。上午的大部分时间花在物理接线和函数表设置上。下午她们运行测试程序,然后逐步增加数据量,直到运行完整的计算任务。如果一切顺利,她们在晚上 8 点左右结束工作。如果出现故障——这是常态——她们可能要工作到深夜。
一位 ENIAC 编程人员后来回忆道:“我们不是系着围裙在办公楼里喝茶的秘书。我们爬进机器内部,拉出烧坏的真空管,用焊枪修复焊接点,然后擦掉脸上的油污,继续接线。我们比任何男人都更了解这台机器的每一个角落。”
番外篇:第一个计算机 Bug 的真实故事
“bug”(虫子)和"debug"(调试)这两个词现在已经成为计算机行业最基本的术语,但它们的起源故事——一只真正的飞蛾——却经常被简化和曲解。
1947 年 9 月 9 日,ENIAC 的继任者——Harvard Mark II 计算机——突然停止运行。操作员开始排查问题,最终在继电器的一个触点之间发现了一只被电死的飞蛾。操作员格蕾丝·霍珀(Grace Hopper,她将在第三章中占据重要位置)将这只飞蛾用胶带贴在操作日志上,并在旁边写道:“First actual case of bug being found.”(“发现 bug 的第一个实际案例。”)
这只飞蛾今天保存在美国国家历史博物馆的档案中,胶带和日志纸已经泛黄,但依然清晰可见。
但"bug"这个词在工程领域的使用远早于此。托马斯·爱迪生在 1870 年代就在他的笔记中使用了"bug"来描述电路故障——"所有发明中都有’bugs’——即小的故障和困难…“所以霍珀并不是发明了"bug"这个词,但她的团队创造了"debugging”(调试)这个特定用法——即从物理上移除导致计算机故障的虫子。
这个"第一个 bug"的真实故事提醒我们,计算机的早期历史充满了我们今天无法想象的物理现实。在 2020 年代,一个"bug"是代码中的一个逻辑错误。在 1940 年代,它可能是一只真正的昆虫。
1946 年 2 月 14 日,ENIAC 在宾夕法尼亚大学向公众揭幕。莫奇利、埃克特和军方代表是台上的明星。六位女性程序员在台下操作机器,但在新闻照片中,她们被称为"模特"——因为记者想当然地认为女性在数学实验室里只能是装饰性的存在。
直到 1997 年,她们才被正式列入"计算机历史博物馆"的名人堂。2010 年的纪录片《绝密编程》(Top Secret Rosies: The Female Computers of WWII)第一次向大众讲述了她们的故事。凯瑟琳·麦克纳尔蒂的话最令人心酸:“我们做完了一切的工作,而男人们得到了所有的荣誉。这就是当时的生活方式。”
相同的模式在计算机史的不同阶段重复出现——艾达·洛夫莱斯被遗忘了一个世纪,ENIAC 的女性程序员被忽视了五十年。历史告诫我们,科技的进步从来不是少数天才孤军奋战的结果。总有那些在正式记录之外的贡献者,在他们坚持不懈的努力下,人类才得以向着智能化迈进。
六位 ENIAC 女性程序员的详细传记
凯瑟琳·“凯”·麦克纳尔蒂(Kathleen “Kay” McNulty,1921-2006)
凯瑟琳出生在爱尔兰多尼戈尔郡的一个小村庄。1924 年,她的父亲为了寻求更好的生活,带着全家移民到美国费城。凯瑟琳在费城的天主教学校中表现出色,尤其在数学方面。她从切斯纳特山学院(Chestnut Hill College)数学专业毕业时,是全班最优秀的学生之一——全班 312 名女生中只有 3 人选了数学专业。
1942 年,美国陆军在费城各大报纸上刊登广告,招募"具有数学学位的女性"从事"国防计算工作"。凯瑟琳应聘并被录用,加入了弹道研究实验室。当 ENIAC 项目启动时,她和另外五位女性被选中接受训练,成为这台机器的首批操作员。
凯瑟琳后来嫁给了约翰·莫奇利——ENIAC 的设计者之一——但他们的婚姻发生在 ENIAC 项目结束后。她晚年接受采访时说:“约翰总是说’你们六个女孩完成了最困难的工作’。但公众从来不知道。”
弗朗西斯·“弗兰”·比拉斯(Frances “Fran” Bilas,1922-2012)
弗兰来自费城南部的一个工人家庭,是六位女性中最低调的一位。她同样毕业于切斯纳特山学院数学系。在 ENIAC 团队中,她专门负责矩阵运算的接线方案——这是弹道计算中最复杂的数学部分。
弗兰的数学才华在团队中极为突出。同事回忆说,她可以在脑海中完成复杂的矩阵乘法,并直接翻译成接线板的布局。她不需要画图——她可以直接告诉其他人"第三行第五列的插孔应该连接到累加器 7 的第二个输入"。
战后,弗兰离开了计算机行业,像当时大多数女性一样回归家庭。她很少谈论在 ENIAC 上的工作——部分原因是保密协议,部分原因是她认为那"只是战时的工作"。
贝蒂·“简”·詹宁斯(Betty “Jean” Jennings,1924-2011)
贝蒂来自密苏里州的一个农场家庭。她从小就是"假小子"——喜欢爬树、修理拖拉机、和哥哥们比赛数学。她在州立师范学院毕业后,看到弹道研究实验室的招聘广告,决定"去费城看看外面的世界"。
在 ENIAC 团队中,贝蒂专门负责乘法器和除法器单元的接线编排——这是 ENIAC 最复杂的子系统之一。她也是六位女性中性格最外向的——在 ENIAC 揭幕当天,她负责向媒体演示机器的操作(尽管媒体后来在报道中称她为"模特")。
贝蒂在战后继续在计算机行业工作,成为早期软件开发的先驱之一。她是唯一一位参加了 ENIAC 50 周年纪念活动(1996 年)的原始团队成员。
贝蒂·斯奈德(Betty Snyder,1917-2001)
贝蒂·斯奈德是六位女性中技术能力最强的。她后来成为 UNIVAC I 的首席程序员之一,并设计了现代排序算法的一个早期版本。在 ENIAC 团队中,她负责整体的程序流程设计——将复杂的弹道方程分解为 ENIAC 可以执行的基本操作序列。
贝蒂有一种罕见的能力:她可以在脑海中"运行"整个程序,在接线之前就发现逻辑错误。同事称她为"人类计算机"——她可以手动模拟 ENIAC 的运算过程,预测每一步的结果。这种能力在接线板时代极其宝贵,因为一旦接线完成,发现错误并修正的成本极高。
贝蒂在战后参与了 UNIVAC I 的软件开发,并设计了可能是历史上第一个排序程序——在 UNIVAC 上实现了数据记录的自动排序,这比后来著名的"冒泡排序"算法论文早了近十年。
玛丽莲·韦斯科夫(Marlyn Wescoff,1922-2021)
玛丽莲来自费城的一个中产阶级家庭,从天普大学(Temple University)数学系毕业。在 ENIAC 团队中,她负责函数表单元的设置和校准——这是 ENIAC 编程中最繁琐、最耗时的环节。
函数表编程需要极度的耐心和精确性。玛丽莲需要手动计算每一组函数值,然后逐一设置 1,200 个旋转开关。一个错误——哪怕是一个开关位置错了一位——都会导致整个程序输出错误的结果。她在战后回忆说:“那是我做过的最枯燥的工作。但我知道,如果我犯了一个错误,前线可能会有人因此丧命。这个念头让我的手指从不出错。”
玛丽莲是六位女性中最后一位去世的,享年 99 岁。她几乎活到了可以看到自己那一代人的工作被重新评价的时代。
露丝·利希特曼(Ruth Lichterman,1924-1986)
露丝毕业于亨特学院(Hunter College)数学系,是六位女性中唯一来自纽约的。她专门负责 ENIAC 主编程器的控制面板设置——这是整个 ENIAC 的"指挥中心",相当于现代计算机的 CPU 控制单元。
主编程器负责协调 ENIAC 各个单元之间的时序和同步——什么时候累加器开始运算、什么时候乘法器接收数据、什么时候打印机输出结果。设置主编程器需要理解整个机器的工作流程,而不仅仅是某一个单元的操作。露丝的工作是保证整个"交响乐团"的各个部分在正确的时间做正确的事。
战后,露丝离开了计算机行业,搬到了纽约从事教育工作。她在 1986 年去世时,ENIAC 女性程序员的贡献仍然未被公众所知。
表2-9:ENIAC 六位女性程序员贡献对照表
| 姓名 | 出生-去世 | 教育背景 | ENIAC 上的核心职责 | 战后去向 | 技术贡献 | 获得认可 |
|---|---|---|---|---|---|---|
| 凯瑟琳·麦克纳尔蒂 | 1921-2006 | 切斯纳特山学院数学系 | 弹道方程分解与整体流程 | 家庭(嫁给莫奇利) | 将物理方程转化为ENIAC操作序列 | 1997年计算机历史博物馆名人堂 |
| 弗朗西斯·比拉斯 | 1922-2012 | 切斯纳特山学院数学系 | 矩阵运算接线方案 | 家庭 | 设计了ENIAC上矩阵运算的接线方案 | 1997年计算机历史博物馆名人堂 |
| 贝蒂·詹宁斯 | 1924-2011 | 密苏里州立师范学院 | 乘法器/除法器单元接线 | 计算机行业持续工作 | ENIAC最复杂子系统的操控 | 参加1996年ENIAC 50周年纪念 |
| 贝蒂·斯奈德 | 1917-2001 | 宾夕法尼亚大学 | 整体程序流程设计 | UNIVAC I首席程序员 | 设计了可能是第一个排序程序 | 被公认为早期软件开发的先驱 |
| 玛丽莲·韦斯科夫 | 1922-2021 | 天普大学数学系 | 函数表设置与校准 | 家庭 | 管理ENIAC最繁琐的编程环节 | 最后一位去世的ENIAC程序员 |
| 露丝·利希特曼 | 1924-1986 | 亨特学院数学系 | 主编程器控制面板 | 教育行业 | 负责ENIAC的"指挥中心" | 去世时贡献仍未获公认 |
第一道题:氢弹
ENIAC 的第一道真正的计算题目——不是为了测试,而是为了解决实际问题——不是弹道轨迹。
1945 年,二战接近尾声,但另一个更恐怖的项目正在进行中:氢弹的可行性研究。
在洛斯阿拉莫斯国家实验室,科学家爱德华·泰勒(Edward Teller)和他的团队正在试图回答一个问题:能否制造出一种威力是原子弹千倍的超级炸弹?这个问题的答案需要求解极其复杂的流体动力学方程——精确预测氢等离子体在巨大压强和温度下的行为。这些方程是无法通过解析方法求解的,只能用数值方法近似。
泰勒的小组面临的计算量是天文数字级的。手工计算根本不可能在合理时间内完成。
这时候,赫尔曼·戈德斯坦——弹道研究实验室和洛斯阿拉莫斯之间的联络人——建议使用 ENIAC。这台机器还在最后的测试阶段,但它已经是人类拥有的最强大的计算机。
泰勒将他的数据——数以万计的打孔卡——从洛斯阿拉莫斯送到了费城。1945 年 11 月,ENIAC 开始运行氢弹模拟计算。程序由 ENIAC 团队(包括六位女性程序员)精心设计,以处理数百万个中间步骤。
ENIAC 运行了好几个星期——这是有史以来运行时间最长的超级计算机任务之一。它输出的结果打印成了一张张满是数字的表格,被送回洛斯阿拉莫斯。泰勒和他的同事们分析了这些数字,得出了他们的结论:
氢弹在理论上是可行的。
这不是 ENIAC 唯一有贡献的重大科学项目。在 1946 年到 1955 年间,ENIAC 被用于:
- 气象预测(莫奇利的原始专业)
- 原子核物理计算
- 宇宙射线研究
- 风洞数据分析
- 随机数生成和蒙特卡洛模拟
- 密码学分析
几乎所有二战后早期的重要科学研究,都或多或少地与 ENIAC 有过交集。
从 ENIAC 到 UNIVAC:商业化之路
1946 年,莫奇利和埃克特面临一个选择:继续留在学术界,还是创业?
宾夕法尼亚大学希望他们签署一份专利转让协议,将 ENIAC 相关的所有发明权转让给大学。莫奇利和埃克特拒绝了这个要求。他们认为,计算机技术有着巨大的商业潜力,他们应该自己来开发这个市场。
这场争议导致两人离开了宾夕法尼亚大学,并于 1946 年创立了Eckert-Mauchly Computer Corporation(EMCC)——世界上第一家计算机公司。
但 EMCC 很快陷入了财务困境。当时,没有几个人相信"计算机"是一件可以卖出去的商品。大型企业认为计算机是政府或大学的科研工具。风险投资家从未见过这样的东西——"计算机公司"不属于任何已知的投资类别。
更糟的是,莫奇利和埃克特在寻求资金时,接触了多家潜在投资者,分享了他们的设计方案。这些方案后来辗转流入了 IBM 和其他公司的手中——许多年后,这成为了无数专利诉讼的源头。
到了 1950 年,EMCC 濒临破产。这时,一个意想不到的买家出现了:雷明顿·兰德公司——一家以打字机和电动剃须刀闻名的办公设备制造商。兰德收购了 EMCC,莫奇利和埃克特继续领导计算机开发。
这场收购的产物是 UNIVAC I——Universal Automatic Computer。它于 1951 年 3 月 30 日交付给了美国人口普查局。
UNIVAC I 在计算机历史上具有里程碑意义——它是第一台大规模生产并销售给客户的商用计算机。虽然首台售价高达 159,000 美元,但在 1950 年代早期,兰德卖出了 46 台 UNIVAC I,标志着计算机从"政府科研工具"转变为"商业数据处理机器"的开始。
1952 年的美国大选见证了 UNIVAC I 最著名的一刻。在一档 CBS 新闻直播节目中,UNIVAC 在只有 7% 的选票被统计后,就准确地预测了艾森豪威尔将击败史蒂文森赢得总统大选。新闻主持人原本不相信机器的预测,拒绝在直播中宣读这个结果。但当最终的大选结果与 UNIVAC 的预测几乎完全一致时,公众第一次意识到:计算机可以比人类更准确地分析数据。
专利之争与历史定位
莫奇利和埃克特的结局比他们的许多前辈要好得多——他们没有像巴贝奇那样郁郁而终,也没有像阿塔纳索夫那样被遗忘了半个世纪。他们确实获得了商业上的成功,并且被写入了计算机历史教科书。
但他们也留下了一个巨大的争议——这个争议至今仍在计算机史学界回荡。
ENIAC 最初的专利是在 1947 年申请的,专利号 3,120,606,于 1964 年才正式颁发(专利局花了 17 年审核)。但在 1973 年的 Honeywell v. Sperry Rand 诉讼中,这个专利被宣布无效,因为法院认定 ENIAC 的核心概念来自阿塔纳索夫的 ABC。
从此,莫奇利-埃克特在历史上的定位就带上了些许不光彩的色彩。一些研究者指控莫奇利在爱荷华访问时"剽窃"了阿塔纳索夫的创意。莫奇利的辩护者则说,任何发明都是在前人工作的基础上进行的——艾萨克·牛顿说过"如果我看得更远,那是因为我站在巨人的肩膀上"——但牛顿确实发明了微积分,正如莫奇利和埃克特确实建造了 ENIAC,这是 ABC 所没有达到的工程成就。
从 2020 年代的视角看,也许最公允的说法是:阿塔纳索夫和贝瑞证明了电子数字计算的技术可行性,而莫奇利和埃克特证明了电子数字计算的工程可行性和实际价值。前者是在黑暗中的第一次闪光,后者是把它变成耀眼灯塔的人。
莫奇利于 1980 年 1 月 8 日去世,享年 72 岁。埃克特于 1995 年 6 月 3 日去世,享年 76 岁。在他们去世时,艾伦·图灵已被追认为"计算机科学之父",冯·诺依曼被称为"计算机体系结构之父",而莫奇利和埃克特——ENIAC 的真正建造者——在公众记忆中最著名的身份却是"那场著名专利诉讼的失败方"。
历史有时就是如此残酷。
技术深入:ENIAC 的十进制累加器
让我们打开 ENIAC 的核心计算单元——累加器——看看它是如何工作的。
ENIAC 使用十进制而非二进制进行运算——这是一个经常令现代读者惊讶的设计选择。莫奇利和埃克特选择十进制的原因是实用性的:ENIAC 需要频繁地输出和展示结果,十进制输出更直观、更易于人类阅读,避免了二进制-十进制转换的额外开销。
ENIAC 包含 20 个累加器(Accumulators),每一个都相当于一个独立的存储-计算单元。每个累加器可以存储一个 10 位十进制有符号数,同时可以执行加法和减法运算。
一个累加器内部的电路是如何实现加法的?
ENIAC 使用了一种称为"环形计数器"(ring counter)的巧妙设计。想象一个有 10 个位置的电路环,每个位置代表一个数字(0-9)。当前的位置由一对"触发器"真空管对来指示和执行——回看第 2.5 节 ABC 计算机的设计,阿塔纳索夫将电子管用于信号操作,而 ENIAC 将真空管扩展到了更复杂的数字逻辑。
实际上,每个累加器包含 10 列环形计数器,每一列代表一个十进制位(个位、十位、百位…)。每个环形计数器的 10 个位置对应 0-9 十个数字。加法运算时,累加器接收脉冲信号——加 3 就是发 3 个脉冲——环形计数器前进 3 个位置。如果从 9 再前进 1 个位置,环形计数器归零并向高位进位。
时钟脉冲以每秒约 100,000 个脉冲(100 kHz)的频率产生。一次简单的加法大约需要 200 微秒(约 5 个脉冲周期,包括进位传播),所以每秒可以执行约 5,000 次加法——与 ENIAC 团队宣称的性能一致。
乘法则是通过重复加法来实现的。如果要计算 123 × 45,ENIAC 会将 123 加 5 次(个位),然后将 123 向左偏移一位再加 4 次(十位)。整个过程由乘法器单元中的专用硬件控制——本质上是一个硬连线的乘法状态机。
这个十进制累加器的设计虽然在现代计算机中已被二进制取代,但它代表了当时电子工程水平的极限。在 1940 年代中期,用真空管实现可靠的十进制运算是一项极其困难的工程成就。
番外篇:费城灯光暗下来的真相
ENIAC 启动时费城全城灯光变暗的传说,是计算机史上最著名的都市传奇之一。事实到底是什么?
首先,ENIAC 确实消耗 150 千瓦的功率。作为对比,一台现代游戏 PC 的功耗约 300-800 瓦。所以 ENIAC 的功耗大约等同于 200-500 台现代游戏 PC 同时以最高负载运行。
但 150 千瓦对于一个城市的电网来说并不是什么大数字。以 1946 年的费城标准,一根标准的城市供电线路可以承载 1000 千瓦以上。ENIAC 所在的宾夕法尼亚大学摩尔学院拥有自己的配电系统,可以轻松处理这种负载。
那么,为什么会有这个传说呢?
一种解释是,ENIAC 不是"持续"消耗 150 千瓦。当机器执行某些特别密集的操作时——比如启动、大量累加器同时重置或大矩阵运算——功率会瞬间飙升(称为"inrush current",浪涌电流)。这种瞬时的功率尖峰可能会导致局部电网的微微抖动,使灯光闪烁——但绝对不可能影响整个费城。
另一种解释更简单:费城的电力供应在 1940 年代仍然不稳定。二战期间,城市经常进行能源配给和限电。可能 ENIAC 的一次大型测试恰巧遇上了一次全市性的电压波动,旁观者将两者联系起来,于是"喋喋不休的传说"就这样诞生了。
埃克特本人后来澄清了这个传说。他在一次采访中说:“ENIAC 不可能让全费城的灯都暗下来。但如果有人在 ENIAC 所在的那栋楼——摩尔大楼——的测试之前不小心在同一建筑楼层安插了咖啡机…那么,一个较为微弱的灯光闪烁是可能的。”
这一集的寓意是:都市传说往往在内核中存在一丝真相,但真相已被好故事的需求夸张到面目全非。二十世纪曾有人类发明巨型机器、它的启动影响了整个城市的繁荣灯光——这样的故事激发了不止一位工程师和科幻作家的想象力。
核心要点总结
- ENIAC 是工程奇迹的巅峰:17,468 支真空管、500 万个焊接点、30 吨重量——它是人类历史上最复杂的电子设备,证明了"大规模电子系统"在工程上是可行的
- "插线编程"是计算机史上一个独特的过渡阶段:在纸带和键盘之前,程序员用物理电缆和旋转开关来"写"程序——切换一个程序需要 2-4 周,这让我们重新思考"软件"的本质
- 六位女性程序员是现代软件工程的奠基者:她们设计并实现了第一个大型程序的开发流程——需求分析、模块分解、编码实现、测试验证——这些步骤至今仍是软件开发的标准范式
- ENIAC 的第一道题是氢弹模拟:这个事实提醒我们,计算机技术从诞生之初就与人类最宏大的建设性和最恐怖的破坏性紧密相连
- 降电压运行原则是"可靠性工程"的起源:埃克特发现降低 25-60% 的工作电压能极大地延长真空管寿命——这个简单而深刻的洞察,奠定了所有大型电子系统可靠性设计的基础
- "第一个 bug"的故事是程序员的共同遗产:一只飞蛾、一卷胶带、一本操作日志——这个简单的轶事提醒我们,计算机的早期历史充满了我们今天无法想象的物理现实
2.7 人生启示录
从巴贝奇到埃克特,从 1821 年到 1946 年,计算机硬件走过了一条漫长而崎岖的道路。让我们透过这些故事,挖掘更深层的智慧。
启示一:时机重于天才
查尔斯·巴贝奇在 1837 年设计的分析机包含了现代计算机所拥有的核心元素——存储、运算、条件判断、循环、输入输出。他的每张设计图纸都是完美无缺的——1991 年复制的差分机、以及后续的分析机部分部件,都证明了这一点。
但巴贝奇失败了。不是因为他的设计有缺陷,而是因为时代不成熟。19 世纪早期的精密制造技术无法实现他的愿景,政府无法理解他的远见,工业体系不足以支持他的雄心。
整整一百年后,当同样的思想在 1940 年代的电子工程中重获新生时,计算机——几乎是按照巴贝奇一个世纪前的蓝图——取得了成功。
教训:技术创新的成功不仅取决于想法的正确性,还取决于与时代条件的匹配度。一个完美的想法如果诞生在错误的时间,就像一粒被风雪掩埋的种子——它在另一个季节定会开花结果。作为创新者,我们需要追求正确的方向,但也需要对时代脉搏有一个清醒的判断:现在的技术基础设施是否可以让这个想法生根?
现代案例:苹果公司的 Newton 平板电脑(1993 年)是巴贝奇故事的完美现代翻版。Newton 的设计理念——触摸屏、手写识别、移动计算——在概念上完全正确。但 1993 年的技术条件(处理器性能、电池容量、触摸屏精度、移动网络)完全无法支撑这个愿景。Newton 失败了。17 年后,当同样的理念在 iPad(2010 年)中重获新生时,它改变了整个计算产业。乔布斯和巴贝奇之间的区别不是愿景的质量——而是前者出生在技术条件成熟的时刻。
行动建议:当你有一个创新的想法时,问自己三个问题:(1)这个想法依赖的关键技术是否已经成熟?(2)用户/市场是否准备好接受这个想法?(3)如果现在不是正确的时机,我应该等待还是转向?巴贝奇没有选择等待——他耗尽了一生去强行推动一个未成熟的想法。但现代创新者可以更聪明地选择:把想法记录下来,等待技术成熟,在正确的时机全力出击。
启示二:跨界思维的力量
这章出现的最重要的创新者中,有多少人一开始就是"计算机科学家"?
- 巴贝奇是数学家
- 霍勒里斯是采矿工程师
- 楚泽是土木工程师
- 阿塔纳索夫是物理学教授
- 莫奇利是物理学家和气象学家
- 六位 ENIAC 女性程序员中,只有少数几位有正式的数学学位,其他人是教师、统计员、计算员
没有人是从"计算机系"毕业的——因为在那个时代,"计算机科学"还不存在。
这个观察令人深思。最革命性的创新往往来自跨界者——那些将一个领域的思维方式迁移到另一个领域的人。霍勒里斯把检票员的打孔票用在人口普查中,创造了数据处理产业。楚泽把土木工程中的结构分析经验应用到计算机架构中,发明了浮点数表示法。阿塔纳索夫把一个物理学家的电路实验思维与数值计算结合,创造了二进制电子计算的范式。
从这些故事中可以抽象出一个更深刻的结论:最重要的创新通常发生在领域边界。当一个领域的方法论——一系列特定的假设、工具、经验线索——被迁移到一个全新的领域时,结果往往不是小幅改进,而是一种革命。
所以,如果你是一个感到格格不入的工程师、一个对编程有兴趣的建筑师、一个有统计学爱好的艺术家——你所在的位置可能正是最具创造力的位置。不要试图只属于一个领域。拥抱你的两个世界,发展你的混合语言,在边界上寻找没人想得到的问题。
现代案例:詹姆斯·西蒙斯(James Simons)是当代跨界思维的最佳典范。他是一位获得过国际数学大奖的几何学家,40 岁时转行做金融,创立了文艺复兴科技公司(Renaissance Technologies)。西蒙斯将数学中的概率论、统计学和模式识别应用到金融交易中,创造了人类历史上最成功的量化对冲基金——大奖章基金(Medallion Fund),30 年年化回报率超过 66%。这个惊人的数字不是来自"更好的金融分析",而是来自将数学家的思维方式迁移到金融领域。西蒙斯自己说:“我从来没有学过金融。我雇了物理学家、统计学家、天文学家——唯独没有雇过传统的金融分析师。我们只是用数学方法来看待数据。”
行动建议:在你的简历中,最不值钱的是"我学了什么专业",最值钱的是"我同时精通两个领域,并且知道如何将它们连接起来"。如果你是一个程序员,去学一门完全无关的学科——生物学、语言学、建筑设计。如果你是一个设计师,去学编程。不是浅尝辄止——而是深入到足以理解那个领域的核心思维方式。跨界创新的黄金法则是:在两个领域都达到前 25% 的水平,它们的交集就是前 5% 的独特价值。
启示三:团队协作战胜单打独斗
这章有一个清晰的对比模式:单独工作的创新者与协作团队。
巴贝奇几乎是一个人在战斗。他有助手(比如克莱门特),但本质上是单打独斗。当克莱门特离开、政府撤资后,巴贝奇身后一无所有。
楚泽是另一个孤独的天才。他在自己的客厅里做出了 Z1 到 Z3,没有大型团队,没有政府支持,没有商业伙伴。当战争摧毁了他的工作成果时,没有人能帮他重建。
对比之下,莫奇利和埃克特是一个团队。莫奇利是理论家,埃克特是工程师。他们互补的技能集合使得 ENIAC 成为可能。ENIAC 团队还包括六位女性程序员、数十名技术人员、一位管理支持者(戈德斯坦)。这不是一个人的胜利,是一支团队的胜利。
同样的对比也存在于莫奇利-埃克特与阿塔纳索夫-贝瑞之间。阿塔纳索夫和贝瑞做出了第一个数字电子计算机的原型,但他们的组合在战争爆发后就解散了——项目也随之死亡。莫奇利和埃克特,同样面临战争环境,却凭借着更大的团队、更多的支持者和更明确的管理,走得更远。
教训:个人天赋和努力是创新的必要条件,但不是充分条件。技术创新——特别是那些需要大规模制造和跨学科专业知识的创新——依赖于协作。发明者不仅是设计大师,还必须是"团队建造者"。一个创新者的高度往往不是由他的个人技术有多精湛决定的,而是由他在危机中能够找到并留住多少个关键合作者决定。
现代案例:史蒂夫·乔布斯和史蒂夫·沃兹尼亚克的故事是莫奇利-埃克特二人组在现代的完美复现。沃兹尼亚克是天才工程师,独自设计了 Apple I 和 Apple II 的电路板。但如果没有乔布斯——他不懂电路设计,但他懂得如何找到零部件供应商、如何营销、如何设计令人过目不忘的产品外壳、如何融资、如何组建团队——苹果永远只是一个计算机爱好者俱乐部里的一个项目。乔布斯后来说:"我做的事情不是设计电路——我的事情是确保沃兹设计出来的东西能够被制造、被销售、被全世界的人使用。"这正是莫奇利(理论家)和埃克特(工程师)关系的翻版。
另一个值得注意的现代案例是 OpenAI。ChatGPT 的技术基础——Transformer 架构——是由 Google 的研究人员在 2017 年发明的。但 Google 没有一个团队能够将这些技术转化为一个面向消费者的产品。OpenAI 的团队——由 Sam Altman(产品战略家)、Greg Brockman(技术领导者)、Ilya Sutskever(深度学习先驱)等人组成——将 Transformer 从一个研究论文变成了一个改变世界的产品。Google 有技术,但 OpenAI 有团队。
行动建议:当你评估一个项目或一个创业公司时,不要只关注"想法有多好"或"创始人有多聪明"。要看团队。问自己:(1)团队是否包含互补的技能组合?(2)团队成员是否在之前的项目中合作过?(3)当遇到危机时,谁来处理技术问题,谁来处理人和钱的问题?如果你发现自己和巴贝奇一样——一个人在战斗——那么你的首要任务不是把产品做得更好,而是找到你的"埃克特"。
启示四:被遗忘的贡献者
第二个令人不安的规律贯穿整个计算机硬件史:许多真正重要的贡献者系统地、持续地被历史边缘化了。
艾达·洛夫莱斯写了人类第一个完整的计算机程序,却被简单地标记为"巴贝奇的翻译者"。ENIAC 的六位女性程序员设计了并实现了现代编程的最初实践,被称为"模特"和"操作员"。康拉德·楚泽在二战中独立建造了第一台可编程计算机,他的工作被战争抹去,四十年后才被认真审视。阿塔纳索夫和贝瑞建造了第一台数字电子计算机,却在大学的地下室里被当作废铁拆解。
这些故事中有一个共同的元素:历史偏爱既成事实的权力者。能维持住资源、获得媒体关注、争取到主流历史叙述的,是处在权力交汇点上的少数人——莫奇利和埃克特,相对于阿塔纳索夫和贝瑞;男性工程负责人,相对于女性程序员;英文世界的发明家,相对于德国的楚泽。
这对于当前正在发生的技术变革——AI 编程助手、自动代码生成、低代码平台——有着深刻的警示意义。当技术话语被限定在少数公司的叙事框架中,那些正在构建底层工具、开发基础设施组件、或为开源项目贡献代码的万"无名英雄",他们的贡献也许不会出现在未来的历史教科书中。
我们能做什么? 至少有两点。第一,在评估一个技术时,不要只关注它的"最响亮的声音"——去深入了解它的真正创造者、他们面临的具体挑战、以及他们怎么解决的具体问题。第二,当我们自己站在权力位置上时——例如作为团队的负责人、项目的管理者、或技术社区的发言人时——我们有责任确保所有的贡献者获得正确的认可,包括那些不善于自我推销的人。
现代案例:在开源软件社区中,“被遗忘的贡献者"模式每天都在重演。Linux 内核有超过 20,000 名贡献者,但在公众认知中,“Linux = Linus Torvalds”。Python 有超过 3,000 名贡献者,但"Python = Guido van Rossum”。React 是一个由数百名工程师维护的项目,但"React = Jordan Walke"。这些"单一创始人叙事"抹去了绝大多数贡献者的姓名,但他们编写的代码同样运行在数十亿台设备上。
更近的例子是 AI 时代的"被遗忘的贡献者"。当 ChatGPT 在 2022 年 11 月引爆全球时,媒体将聚光灯对准了 Sam Altman。但 GPT 模型的能力来自于数十位研究科学家在 Transformer、RLHF(基于人类反馈的强化学习)、数据策展等领域的多年积累。这些人的名字——Alec Radford、Ilya Sutskever、Dario Amodei、Paul Christiano——在主流媒体中几乎不存在,但他们写的每一行代码、设计的每一个实验,都是 ChatGPT 能力的基础。
行动建议:作为技术团队的管理者,建立"贡献记录"的文化。在项目文档中列出所有贡献者,不仅仅是核心开发者。在发布公告中提及幕后团队。在面试和晋升中,将"认可他人贡献"作为评估标准之一。作为个人,定期检查一个项目的 CONTRIBUTORS 文件或 AUTHORS 文件——你会惊讶于那些你从未听说过但做出了关键贡献的人。
启示五:战争的悖论
计算机硬件的早期发展与战争之间存在着一种深刻的、令人不舒服的关系。
ENIAC 由美国军方资助,其第一个非正式任务是氢弹可行性计算。Z3 如果被纳粹重视,也许能破解盟军密码,改变战争进程。打孔卡技术成为了大规模军队管理和战争后勤的基础。巴贝奇之所以能说服政府资助差分机,部分理由是"这对海军导航表很重要"——也就是说,这台机器的军事应用前景从一开始就存在。
战争是一个可怕的、吞噬生命和人性的机器。它生产暴行和破坏。但在 20 世纪,战争机器也成了一位不情愿的助产士——帮助科技分娩。没有二战的紧迫感和无限预算,ENIAC 可能需要多花 20 年才能问世。没有冷战对武器设计的计算需求,第一代商用计算机也许不会那么快发展到一个可投资的市场。
那么,我们如何评价这个事实?
这是一个没有完美答案的悖论。但有一个看待方式可以帮助我们理解:战争创造了一种异常紧急状态——在这种状态下,资金变得无限,技术与否的决策阈值史无前例地低,所有社会进程都被压缩到数周和数月内完成,正常情况下的渐进式累积变为跳跃式迭代。
这种"紧急压缩技术"的效果意味着:我们社会目前正在处理的一切缓慢危机——气候危机、医疗系统压力、能源转型——实际上是在缺乏"紧急压缩"的正常社会状态下发展。当人类面对气候变化时,我们无法等待全民动员的战争消除;我们需要在没有战争的情况下创造与战争时期同等的技术加速。
能够做到这一点的社会,将是能够应对 21 世纪挑战的社会。计算机的历史告诉我们,当人类的集体意志集中于一个目标时,我们能在数年时间内改变整个技术范式。现在的问题不是"这可能吗"——ENIAC 在一个三居室大小的地方就做出了答案——现在的问题是"还有什么不能"。
现代案例:COVID-19 疫苗的研发是"战争紧急状态"在和平时期最接近的现代案例。在 2020 年之前,疫苗研发的平均周期是 10-15 年。最快的疫苗(腮腺炎疫苗)也花了 4 年。2020 年 1 月,中国科学家公布了新冠病毒的基因序列。2020 年 12 月——不到 12 个月后——第一种 mRNA 疫苗获得了紧急使用授权。这不是奇迹——这是"紧急压缩技术"的现代演示。全球科学界以前所未有的方式共享数据,监管机构加速了审批流程,政府投入了数百亿美元消解了经济风险,制药公司同时进行原本应该按顺序进行的研发阶段。当人类的集体意志集中于一个目标时,10 年的工作可以在 10 个月内完成。
另一个正在发生的案例是清洁能源转型。太阳能电池的成本在过去 15 年中下降了 90% 以上。这不是因为发现了任何新的物理定律——太阳能电池的基本原理自 1950 年代以来就没有改变。成本下降来自制造规模、供应链优化和持续工程改进——这些是"战争动员"式资源投入的结果。如果全球在气候技术上的投资能达到二战时期军工生产的动员水平,气候危机的技术解决方案可能已经在手边了。
行动建议:当你面对一个看似"不可能在短期内完成"的大项目时,回想 ENIAC 的故事。问自己:(1)这个目标的障碍是技术性的还是资源性的?(2)如果资源不受限制,这个目标可以在多短时间内完成?(3)"紧急状态"的缺失是否才是真正的障碍?有时候,阻碍进步的不是技术的极限,而是我们集体想象力的极限。
尾声:火种
1946 年 2 月 14 日,ENIAC 揭幕的那一天,费城的天气很冷。来宾中包括将领、科学家、记者、政客。他们聚集在宾夕法尼亚大学摩尔电气工程学院的地下室,看一台巨大的机器发出的嗡嗡声。
没人知道他们在见证什么。
在那一天,计算机是一个需要专用建筑、专用电源、专用通风系统的钢铁巨兽。它需要数十人昼夜照料才能运行。它编程的方式是物理重新接线,每次"换软件"需要几周的时间和几位数学家的协同劳动。
没有人能预见到这台 30 吨的庞然大物会演变成可以戴在手腕上的设备。没有人会想到电子管的时代那么快就被晶体管取代,而集成电路——成千上万支晶体管被蚀刻在指甲大小的硅片上——即将诞生。
那些在地下室中看着 17,468 支真空管闪烁的人们,正在看着人类历史上最深刻的技术革命的火种。
从这一刻起,世界再也不会是原来的样子了。
第二章 完
下一章预告:第三章「存储程序的革命」——冯·诺依曼体系结构的诞生、EDVAC 报告草案的流变、以及"计算机之母"格蕾丝·霍珀与第一台编译器的故事。
378

被折叠的 条评论
为什么被折叠?



