第一章:起源——从算盘到电子管
第一章:起源——从算盘到电子管
在开始讲述“计算机是如何变成今天这个样子的”之前,我们需要先回答一个更根本的问题:计算机这个东西,到底是从哪儿来的?
我们今天所理解的“计算机”——一台摆在桌上、有屏幕键盘、能上网、能装软件的设备——并不是一夜之间被发明出来的。它是一个漫长的、充满偶然性的演化过程。在这个过程中,无数条技术路线被尝试,无数个“可能的世界”被打开后又关闭。
本章的任务是:追溯计算机的“前史”——从人类最早的计算工具,到第一台电子计算机的诞生——并解释这一过程中哪些选择被固定了下来,哪些可能性被放弃了。
这不是一个单纯的编年史,而是一次对“起源时刻”的考察。我们会发现:早在计算机还只是一堆齿轮和电子管的时候,一些根本性的设计逻辑就已经被写入了它的基因。
让我们从一个更宏观的视角开始。在计算机的整个发展历程中,硬件经历了五个代际的跨越,每一代都决定了软件能够做什么。这个框架会贯穿整个系列,值得先记在脑子里:
-
第一代(1940s-1950s):电子管。 计算机是房间大小的庞然大物,每秒只能做几千次运算,只有政府和军队用得起。操作系统还不存在,程序靠插线来“编写”。
-
第二代(1950s-1960s):晶体管。 体积缩小、功耗降低、可靠性提升,计算机可以连续运行数小时而不故障。这让“操作系统”这种常驻软件成为可能。
-
第三代(1960s-1970s):集成电路。 多个晶体管集成在一片硅片上,成本大幅下降。计算机进入大学和大型企业,分时系统让多人可以同时使用一台机器。
-
第四代(1970s-1990s):微处理器。 整个CPU集成在一片芯片上,计算机成本降到几千美元。个人计算机时代开启,图形界面、操作系统开始走向大众。
-
第五代(1990s至今):多核与异构。 性能不再靠频率提升,而是靠并行和专用加速(GPU、NPU)。互联网、云计算、人工智能成为可能。
记住这个框架。每一章讲到软件突破时,你都会看到:那个突破只有在特定的硬件代际上才有可能。没有硬件性能的突破,软件的一切想象都是空中楼阁。
现在,让我们从头说起。
一、前电子时代
在电子元件出现之前,人类已经尝试了各种方式让机器帮我们计算。这一阶段的核心成果是:专用计算器(算盘、机械计算器)和通用计算机的设计蓝图(巴贝奇的分析机)。其中,最值得记住的不是具体机器,而是两个超越时代的洞见:二进制(莱布尼茨)和“通用计算”的理念(巴贝奇 + 阿达·洛夫莱斯)。
这一时期的详细发展脉络,请参见番外一:前电子时代——从算盘到分析机
二、电气时代的到来:从继电器到电子管
时间进入20世纪。电气时代的到来,为计算机提供了一种全新的、比齿轮快得多的“开关”元件。齿轮每分钟转几十圈,而电子开关一秒钟可以开合成千上万次。这个速度差距,决定了机械计算器的天花板,也打开了电子计算机的大门。
1. 继电器:机械开关的电气化
1944年,IBM与哈佛大学合作,在霍华德·艾肯的领导下制造了马克一号。这台机器使用了3500多个继电器,全长15米,重5吨。它每秒可以进行3次加减法——现在看来慢得像乌龟,但在当时已是惊人成就。
继电器的工作原理很简单:通过电磁铁控制金属触点的通断。它本质上是“用电流控制机械”。但这种设计有一个致命的弱点:继电器是机械触点,弹片在反复弹跳中会金属疲劳,用着用着就坏了。而且,触点的闭合张开有物理惯性和回弹抖动,响应速度上限很低。
继电器的故事告诉我们:在计算机的发展中,“开关速度”始终是最大的瓶颈。只有找到一种更快、更可靠的开关元件,计算机才能真正起飞。
2. 电子管:电子开关的革命
这个瓶颈的突破来自于电子管。
1904年,英国物理学家约翰·安布罗斯·弗莱明发明了二极管——可以单向导电,像是一个电流的“单向阀门”。1907年,美国发明家李·德·福雷斯特在二极管中加入了一个栅极,发明了三极管——用一个小电压控制一个大电压的通断,这就是“开关”的本质。
与继电器相比,电子管的优势是压倒性的:电子在真空中移动,没有机械惯性,开关速度比继电器快成千上万倍;没有物理触点,不会磨损。但电子管也有自己的问题:它像一个大灯泡,体积大、发热高、耗电多。一台使用一万多个电子管的计算机,一开机就能让整个街区的灯光都暗一下。
电子管的问题预示了后来计算机发展的一个基本矛盾:计算能力要靠堆叠元件数量来提升,但元件越多,体积、功耗、散热问题就越严重。这个矛盾直到晶体管的发明才得到缓解——那是我们后面章节要讲的故事。
三、ENIAC:电子计算机时代的开启
1946年,二战刚刚结束。美国宾夕法尼亚大学在约翰·莫奇利和约翰·埃克特的领导下,成功制造了ENIAC——世界上第一台通用电子计算机。
ENIAC的参数让人瞠目结舌:占地170平方米,重30吨,用了18000个电子管、70000个电阻器、10000个电容器。每秒可以进行5000次加减法,比马克一号快了上千倍。当时的人们用“电子的大脑”来形容它,它确实配得上这个称号。
从技术指标上看,ENIAC是革命性的。但从使用方式上看,它有一个巨大的问题:编程靠“插线”。为了计算一个新问题,工程师们要像接线员一样,在ENIAC的面板上插拔电线、拨弄开关,改一次程序需要几周时间。ENIAC不是“存储程序”的计算机——它的程序是靠硬件连接来“固化”的。
这正是巴贝奇的分析机与ENIAC的根本区别:巴贝奇虽然用的是齿轮,但他的设计是“可编程”的——程序放在打孔卡上,可以随时更换。ENIAC虽然是电子的,但它的程序是靠物理连线决定的——改一次程序等于重新配置一遍机器。
ENIAC的“接线编程”方式,很快就被历史淘汰了。1945年,冯·诺依曼提出了“存储程序”的概念——把程序和数据都放在内存里,让计算机自己读取指令。这个后来被称为“冯·诺依曼架构”的设计,成为几乎所有现代计算机的模板。
ENIAC之所以被载入史册,不是因为它是最好的设计,而是因为它是“第一个”。它证明了电子计算机是可行的。但它的具体实现方式——接线编程——是一个被迅速抛弃的岔路。下一章我们会详细讲冯·诺依曼是怎么把这个弯转过来的。
四、一个平行叙事:苏联的“不落后”开局
在讲述计算机起源的时候,大多数教科书只讲西方——帕斯卡、莱布尼茨、巴贝奇、ENIAC。但苏联在计算机领域的起点,其实并不晚。
早在1939年,苏联数学家谢尔盖·索博列夫就开始了电子计算机的理论探索。1948年,在谢尔盖·列别捷夫院士的领导下,苏联研制出了MESM——欧洲大陆第一台可编程电子计算机。它使用了约6000个电子管,每秒可进行约3000次运算。
随后,苏联又推出了BESM系列。BESM-6在1960年代是世界上最顶级的计算机之一,在苏联科学计算和军事系统中服役了二十余年。苏联还造出了世界上唯一量产的三进制计算机Setun——这个我们会在番外篇详细讲。
苏联的计算机发展之所以没有进入主流叙述,不是因为它“技术落后”。苏联在数学和算法理论方面拥有世界级的实力,安德烈·叶尔绍夫等学者的贡献在学术界享有盛誉。苏联没有“输”在技术上,而是“消失”在历史中——因为它所服务的那个封闭的、自给自足的系统,随着冷战结束而瓦解了。当铁幕落下、国门打开时,西方兼容机和TCP/IP协议如潮水般涌入,而苏联本土的计算机产业——不走IBM兼容路线,不走TCP/IP路线——几乎没有任何还手之力。
计算机的起源,不是一条单线,而是多条平行线。我们今天所熟知的这条线——从巴贝奇到ENIAC到冯·诺依曼——只是其中一条成为了主流。苏联的那条线,三进制计算机的那条线,分析机的那条线……它们都没有“消失”,它们只是“没有成为现实”。考察这些“没有成为现实”的可能性,恰恰能帮助我们更清醒地认识到:我们今天认为“理所当然”的数字世界,其实是特定历史条件下的产物。
五、早期计算机为何如此“笨重”?——一个技术约束的总结
在离开“起源”这个章节之前,我们需要回答一个直观的问题:为什么早期的计算机都长得那么笨重?
答案可以归结为三个技术约束:
第一,元器件的物理尺寸。电子管本身就很大——一个有拳头大小,甚至更大——加上配套的电阻、电容、散热装置,一万多个电子管堆在一起,不占地才怪。你可以想象一下:把一万多个灯泡塞进一个房间,这个房间能小到哪里去?
第二,散热和供电需求。电子管发热量极大,必须留出空隙散热,甚至要加装巨型空调。耗电量更是惊人——ENIAC一开机,当地电网都会受到明显影响,据说费城的灯光都会暗一下。这不是夸张,是物理定律。
第三,输入输出方式的限制。没有键盘、没有鼠标、没有显示器。工程师通过旋钮、拨杆、插孔来控制机器,这些物理控件本身也需要占用大量面板空间。
这些约束在今天看来是荒谬的,但在当时是“合理的”。每一个时代的工程师,都是在给定的技术条件下做最优选择。我们今天觉得早期计算机笨重,是因为我们已经习惯了晶体管的微型化、多核处理器、云计算。但在电子管时代,那种“笨重”是唯一可能的形态。
这给我们一个重要的启示:计算机的每一次进化,都是被硬件突破推着走的。没有晶体管,就没有小巧的计算机;没有集成电路,就没有个人电脑;没有微处理器,就没有你手里的这部手机。硬件突破了,软件才能跟上;软件成熟了,应用才能繁荣。这个链条,贯穿了整个计算机发展史。
六、但是——还没有操作系统呢
讲到这里,你可能已经发现了一个问题:
我们讲了算盘、讲了巴贝奇、讲了ENIAC、讲了苏联的MESM。但所有这些机器,都没有我们今天所说的“操作系统”。
在计算机的“起源”阶段,根本没有操作系统这个概念。你想让ENIAC干活?请先去学电工,把控制板上的线接对了,它才开始计算。你想让MESM运行程序?请先通过打孔卡输入指令,然后手动启动它。硬件是有了,但“管家”还没有出生——没有文件管理、没有内存分配、没有进程调度。工程师既是程序员,又是操作员,还是电工。
这种“裸机”状态在当时不是问题,因为计算机的使用者本身就是专家。但当计算机从军队和实验室走向大学、走向企业、走向千家万户时,人们开始意识到:不能让每个用户都去学插线。我们需要一个软件——一个常驻在机器里的“管家”——来替用户管理硬件、调度任务、处理输入输出。
这个空缺,后来被一批批程序员和计算机科学家填补。而操作系统的诞生,正是计算机从“实验室里的庞然大物”走向“普通人也能用的工具”的关键一步。那是下一章要讲的故事。
本章小结:哪些选择被固定了,哪些可能性被放弃了?
让我们回到本章开头的那个问题:在计算机的“起源”阶段,哪些根本性的设计逻辑被写入了它的基因?
第一,二进制的胜利。 莱布尼茨提出的二进制,在电子管时代被证明是最容易物理实现的记数系统——开/关、通/断、高/低电平,晶体管天然就是二态的。三进制虽然在理论上更高效(信息密度更高、加减法可统一处理),但需要三稳态物理器件,工业成本太高。这一选择不是“理论最优”,而是“工程最优”和“路径依赖”的结果。一旦二进制形成了产业规模,后来的“理论更优”方案就很难撼动它了。
第二,通用计算机 vs 专用计算器。 巴贝奇的分析机走的是“通用”路线——通过改变程序来改变功能。算盘和早期的机械计算器走的是“专用”路线——功能固化在硬件中。最终,通用路线赢了,因为通用计算机可以通过软件模拟任何专用计算器。但需要记住的是:在某些场景下(如苏联的军用系统),专用路线仍然非常有效,因为它不需要考虑兼容性和扩展性,只需要把单一任务做到极致。
第三,存储程序 vs 接线编程。 ENIAC是接线编程的最后一个高峰。冯·诺依曼提出的“存储程序”概念——程序和数据都放在内存里,让计算机自己读取指令——很快就取代了它。这一选择奠定了“软件”作为独立产业的地位,因为程序不再等于硬件连接,程序变成了可以独立复制、分发、修改、销售的文本。没有这个选择,就不会有微软、不会有软件公司、不会有你今天用的任何一个App。
第四,电子管 vs 晶体管。 在起源阶段,电子管是唯一的选择。但电子管的问题——体积大、功耗高、发热严重——预示着它必然被取代。至于被什么取代?晶体管。晶体管不仅更小、更快、更省电,而且可以集成——成千上万个晶体管可以刻在一片硅片上。这个“集成”的能力,才是计算机从庞然大物变成桌上设备、再变成口袋设备的根本原因。
第五,苏联的“另类路径”。 苏联在计算机的起源阶段并不落后。但它的发展逻辑——服务于封闭的、自给自足的系统——与西方服务于开放的、商业化的市场不同。这种差异不是“技术高低”的问题,而是“目标不同”的问题。苏联的计算机产业在“专用工具”领域做得相当出色,但今天被写入教科书的,恰恰是“通用平台”的历史。苏联的贡献之所以“失踪”,不是因为它技术不行,而是因为它所服务的那个世界已经不存在了。
这些选择,塑造了计算机的“硬件形态”。但计算机要成为我们今天所熟知的“个人电脑”,还需要另一个东西的诞生——操作系统。从裸机到有操作系统的机器,人类经历了什么?为什么我们需要一个“管家”来管理硬件?批处理系统、分时系统、Multics的失败与遗产——这些是下一章要讲的故事。
下一章预告: 《架构之争:冯·诺依曼的胜利》。我们将详细讲述存储程序的概念是如何诞生的,冯·诺依曼架构为什么能打败哈佛架构成为主流,以及这个选择如何影响了后来几十年的计算机设计。