莫里斯·威尔克斯:为计算机注入灵魂的工程师

在浩瀚的科技星空中,有些名字如同恒星,定义了我们仰望的整个星座。莫里斯·威尔克斯 (Maurice Wilkes) 就是这样一颗星辰。他或许不像艾伦·图灵那样充满传奇悲情,也不像约翰·冯·诺依曼那样拥有横跨多领域的赫赫声名,但他是一位脚踏实地的工程师、一位远见卓识的领航员。威尔克斯的故事,是关于如何将一个充满巨大潜能却笨拙无比的“电子大脑”,驯化成一个有条不紊、听从指令、并能为人类服务的可靠工具的故事。他不是计算机的发明者,但他可以说是第一位赋予计算机“实用灵魂”的人。他建造了世界上第一台投入日常使用的存储程序计算机——EDSAC,开创了软件程序库的先河,并用“微程序”这一天才构想,为计算机硬件的设计谱写了优雅的内在乐章。

莫里斯·威尔克斯的生命史诗,始于1913年的英格兰工业城镇达德利。与那个时代许多对未来充满好奇的男孩一样,他最初的梦想并非编织逻辑的丝线,而是捕捉空中飘渺的电波。他对无线电的痴迷,引领他走进了科学的殿堂——剑桥大学。在那里,他沉浸在数学与物理学的严谨世界中,尤其是在著名的卡文迪什实验室,那里的空气中不仅弥漫着物理粒子的轨迹,更漂浮着一种追求精确、崇尚实证的科学精神。这段经历,为他日后面对冰冷的电子元件和复杂的逻辑线路时,那份超乎寻常的耐心与务实埋下了伏笔。 然而,真正将威尔克斯从理论物理的轨道推向一个全新宇宙的,是第二次世界大战的烽火。战争,这台巨大而残酷的创新加速器,将他送入了英国的电信研究机构 (TRE),一个汇集了顶尖才智为战争服务的秘密基地。他的任务是研发和改进radar系统。在这里,他不再是象牙塔中与公式打交道的学者,而是一位必须让复杂电子设备在严苛环境下稳定工作的工程师。 日复一日,他与成千上万的真空管、错综复杂的线路和脉冲信号搏斗。这段经历对他而言是一场深刻的洗礼。他亲身体会到,一个宏大的系统工程,其成败不仅取决于理论设计的精妙,更取决于每一个元件的可靠性、每一个连接的稳固性,以及整套系统是否具备可维护性。他学会了如何将一个庞大的难题分解成可以管理的小块,如何进行系统化的测试与调试。战争结束后,当威尔克斯回到宁静的剑桥时,他已经不再是原来那个物理学家了。他的双手触摸过电子脉搏,他的大脑思考着系统构建的宏伟蓝图。他已经为即将到来的计算革命,完成了至关重要的知识与思想上的准备。

战争的硝烟散去,剑桥大学决心拥抱一个崭新的未来。1946年,大学任命威尔克斯为“数学实验室”的新负责人,并交给他一个颇具前瞻性的任务:为大学的研究人员提供计算服务。在那个年代,“计算”主要还依赖于机械式的计算器和人工的“计算员”大军。威尔克斯明白,他需要的是一台前所未有的机器。 命运的指引,将他带向了大西洋彼岸的美利坚。在那里,宾夕法尼亚大学的摩尔电气工程学院正在举办一系列关于“自动计算机器”的讲座。这趟旅程,成为了威尔克斯乃至整个计算机历史上的一次关键转折。在讲座上,他第一次系统地了解了当时世界上最先进的电子计算机——ENIAC的构造。ENIAC是一头令人敬畏的钢铁巨兽,它的计算速度无与伦比,但它有一个致命的缺陷:它的“程序”是固化在硬件里的。要让它执行新的任务,工程师们必须像电话接线员一样,手动拔插成百上千根电缆,重新连接电路,整个过程耗时数天甚至数周。它更像一个一次性的超级计算器,而非一个通用的思想工具。 然而,在这次旅程中,威尔克斯收获了一份比ENIAC本身更宝贵的财富——一份文件的草稿。这份名为《关于EDVAC的报告初稿》的文件,由天才数学家约翰·冯·诺依曼撰写,它石破天惊地提出了一个革命性的概念:“存储程序”(Stored-Program)。 这个概念的精髓在于:计算机的指令(程序)和它要处理的数据,可以不加区分地存储在同一个高速的内部存储器中。这意味着,改变计算机的任务,不再需要去修改它的物理线路,而仅仅需要像加载数据一样,将一套新的指令加载到存储器中。这轻轻的一笔,仿佛普罗米修斯盗来的火种,瞬间将计算机从一个笨拙的、专用的“机器”,提升为了一个灵活的、通用的“大脑”。计算机从此可以根据存储的程序,自动地执行一系列复杂的逻辑判断和运算,真正实现了“自动化”。 威尔克斯带着这份报告的副本返回英国,内心充满了前所未有的激动。他看到的不仅仅是一份技术蓝图,更是一条通往未来的清晰路径。许多人还在争论这种机器是否可行,还在理论的海洋中徘徊,而经历过雷达工程洗礼的威尔克斯,脑海中只有一个念头:“我必须立刻把它造出来,让它成为一个可以日常使用的服务工具。” 他的目标非常明确,不是为了创造一个工程奇迹来炫耀,而是要为剑桥的科学家们提供一个强大而可靠的计算引擎。这份务实的精神,将定义他毕生的事业。

回到剑桥,威尔克斯带领他的团队,以前所未有的速度和决心投入到了新机器的建造中。这台机器被命名为EDSAC,即“电子延迟存储自动计算机”(Electronic Delay Storage Automatic Calculator)。建造EDSAC的过程,是一场与时间、技术和资源的赛跑。 当时,最大的技术挑战是“存储器”。冯·诺依曼的蓝图需要一个足够大、足够快的存储器来存放程序和数据。在那个没有晶体管和集成电路的年代,这是一个巨大的难题。威尔克斯选择了当时一种前沿但极不稳定的技术——汞延迟线存储器。 我们可以用一个简单的比喻来理解它:想象一根长长的、装满了水银的金属管,管子的一端有一个小锤子(晶体振荡器),另一端有一个麦克风(传感器)。当需要存储一个二进制“1”时,小锤子就敲击一下管子,产生一个声波脉冲。这个脉冲以固定的速度在水银中传播,当它到达另一端的麦克风时,信号被接收、放大、整形,然后再次送回到小锤子那里,形成一个循环。只要这个脉冲在管子里不断地循环,这个“1”就被“记住”了。如果没有脉冲,就代表“0”。一根汞延迟线管可以存储一串(例如32个)这样的脉冲,形成一个“字”的数据。EDSAC最终使用了32根这样的“水银管”,构成了它宝贵的、仅有1024个“字”容量的内存。这项技术对温度和振动极为敏感,调试过程充满了艰辛,但威尔克斯的团队凭借着精湛的工程技艺,最终驯服了它。 1949年5月6日,这是一个值得被永远铭记的日子。在剑桥大学数学实验室里,EDSAC成功运行了它的第一个程序——一个计算平方数的程序。当穿孔纸带上的指令被读入内存,机器开始自动执行,并最终在电传打字机上准确无误地打印出结果时,整个房间都沸腾了。这一刻,标志着世界上第一台功能完善、投入日常运行的存储程序计算机正式诞生。虽然美国的EDVAC项目启动更早,但威尔克斯的团队以惊人的效率率先冲过了终点线。 更重要的是,威尔克斯在设计EDSAC时,还加入了一个看似微小却影响深远的创新——“初始指令”(Initial Orders)。这是一组固化在硬件里的、最基本的指令,它们的作用就像计算机的“原始本能”。当机器启动时,这组指令会自动执行,它的唯一任务就是从外部的纸带读取器上加载用户编写的程序。这相当于发明了最原始的“操作系统引导程序”(bootstrap loader)。正是这个设计,让EDSAC的操作变得异常简单,使得没有深厚电子学背景的科学家也能方便地使用它。 威尔克斯的愿景实现了。EDSAC没有被锁在实验室里成为少数人的玩具,而是立刻作为一种“计算服务”向整个大学开放。物理学家、化学家、生物学家、天文学家们排着队,带着他们的计算难题前来。EDSAC帮助他们解决了从天体物理到分子结构等一系列复杂的科学问题。一个围绕着EDSAC的、世界上最早的计算机用户社区形成了,而这一切的中心,正是那个务实、严谨而又富有远见的莫里斯·威尔克斯。

EDSAC的成功运行,仅仅是故事的开始。威尔克斯很快就意识到,拥有强大的硬件,就像拥有了一匹力大无穷的野马,而真正困难的部分,是如何有效地驾驭它。早期的编程工作是一场噩梦。程序员必须用纯粹的二进制机器码(一连串的0和1)来编写指令,这个过程不仅极度繁琐、枯燥,而且极易出错。一个微小的错误就可能导致整个程序崩溃,而寻找这个错误的过程,无异于大海捞针。 面对这个新的挑战,威尔克斯的焦点开始从硬件转向了一个当时还不存在的领域——软件。他和他的杰出团队,特别是年轻的博士生大卫·惠勒 (David Wheeler) 和斯坦利·吉尔 (Stanley Gill),开始系统地思考如何让编程变得更高效、更可靠。 他们的第一个伟大创举是“子程序”(Subroutine)和“子程序库”(Subroutine Library)的概念。这个思想在今天看来是理所当然的,但在当时却是革命性的。它的核心理念是:在许多不同的程序中,我们经常需要执行一些相同的、通用的计算任务,比如计算一个数的平方根、对数,或者对一组数字进行排序。与其每次都重新编写这些代码,为什么不把它们写成一个标准的、可重用的“模块”呢? 于是,他们将这些常用功能编写成独立的程序段,即“子程序”,并为每个子程序分配一个唯一的调用代码。当程序员在自己的主程序中需要执行某个功能时,他只需要插入一条简单的“调用”指令,计算机就会自动跳转到相应的子程序,执行完毕后再返回主程序继续运行。他们将这些精心编写和调试过的子程序收集起来,存储在纸带上,形成了一个“库”。任何EDSAC的用户都可以从这个库中调用他们需要的模块。 这不仅仅是节省了时间和精力,它从根本上改变了编程的范式。

  • 模块化: 它将一个大问题分解成了许多小而美的模块,大大降低了程序的复杂性。
  • 可靠性: 程序库中的子程序都经过了严格的测试,程序员可以放心使用,从而减少了自己程序中的错误。
  • 协作: 它促进了知识的共享与协作,整个社区的智慧可以沉淀在这个不断丰富的程序库中。

可以说,这是现代软件工程的第一次伟大实践。为了将这些宝贵的经验推广出去,1951年,威尔克斯、惠勒和吉尔合著了《电子数字计算机程序的准备》(The Preparation of Programs for an Electronic Digital Computer)一书。这本书系统地阐述了程序设计的方法、子程序的概念和调试的技巧,成为了世界上第一本关于计算机编程的教科书。它就像一本“驯兽指南”,教会了第一代程序员如何驾驭这头强大的数字猛兽。威尔克斯再次证明,他的兴趣不仅在于“建造”机器,更在于建立一套使用机器的“方法论”。他正在从一名硬件工程师,蜕变为一名软件思想的奠基人。

当软件的世界初现曙光之时,威尔克斯的思绪又回到了硬件的深处。随着计算机的功能越来越强大,其核心部件——中央处理器 (CPU) 的设计也变得日益复杂。CPU的“控制单元”是整个计算机的神经中枢,它负责解释程序指令(比如“加法”、“存储”、“跳转”),并将其转化为一系列底层的、控制各个硬件部件(如算术逻辑单元、寄存器、总线)的微操作信号。 在当时,控制单元的逻辑是“硬连线”(hard-wired)的。这意味着,它的功能是由成千上万根导线和逻辑门的物理连接方式唯一确定的。这种设计方式不仅僵化,而且给设计、制造和调试带来了巨大的麻烦。修改一个指令的功能,或者添加一条新的指令,都意味着要对硬件进行伤筋动骨的重新设计和布线。 1951年,在一次从剑桥回家的火车上,威尔克斯的脑海中闪过一个天才般的想法。他思考道:控制单元本身的工作,不就是执行一套固定的、预设的“程序”来协调硬件吗?只不过这套“程序”是用线路的连接来实现的。那么,为什么不把这套“硬件线路程序”,也用一种存储程序的方式来实现呢? 这个想法,就是“微程序设计”(Microprogramming)的诞生。 我们可以用一个交响乐团来做类比:

  • 程序指令 (Machine Instruction): 就像是乐谱上的一段旋律,例如“演奏一段激昂的快板”。这是给整个乐团(CPU)的指令。
  • 硬连线控制 (Hard-wired Control): 就像是乐团指挥用一套固定的、机械的手势来指挥。每个手势对应一种固定的乐器组合和节奏,非常僵硬。要改变风格,就需要重新训练指挥。
  • 微程序控制 (Microprogrammed Control): 则像是指挥手中有一本“指挥手册”(微程序存储器)。当他看到“演奏快板”的指令时,他会翻到手册中“快板”那一页,上面详细记录了每一步动作:何时让小提琴拉高音,何时让铜管吹响,何时让鼓手敲击。这本手册就是“微码”(microcode)。如果想改变乐曲的诠释方式,或者指挥一首新风格的乐曲,只需要更换或修改这本“指挥手册”,而无需更换指挥本人。

微程序设计,本质上是在CPU内部构建了一个更小、更快、更简单的“微型计算机”。这个微型计算机执行的程序,就是“微程序”,而微程序的目的,是去解释和执行外部程序员编写的“宏程序”(即我们通常所说的机器指令)。 这一构想的优美之处在于:

  • 设计的系统化: 它将复杂混乱的控制逻辑设计,转变成了更有序、更像软件编程的微程序编写工作。
  • 灵活性和可扩展性: 添加或修改一条机器指令,不再需要重新布线,只需要修改微码即可。这使得为不同的应用定制不同的指令集(即计算机的“语言”)成为可能。
  • 调试和维护的简化: 诊断硬件错误变得更加容易。

威尔克斯将这一思想发表在了论文中,并在EDSAC的继任者EDSAC 2上进行了实践。尽管这个想法在当时过于超前,并未立即引起广泛关注,但它的深远影响在十多年后才完全显现。1960年代,当IBM公司在开发其划时代的System/360系列计算机时,面临着要在一个产品线中提供性能和成本各不相同但软件互相兼容的多种型号的巨大挑战。他们最终采纳了威尔克斯的微程序设计思想,这使得他们可以用同样的软件架构,通过编写不同的微码,来驱动不同成本和配置的硬件。微程序设计从此成为计算机体系结构的主流思想,并统治了数十年之久。威尔克斯再一次用他优雅而务实的工程思想,为计算机的骨骼注入了灵活的灵魂。

威尔克斯的创新脚步并未停歇。在EDSAC和微程序之后,他继续引领着剑桥大学计算机实验室走在世界前沿。他主持开发了世界上最早的“分时操作系统”之一,让多个用户可以同时共享一台计算机的资源;他还领导团队设计了“剑桥环”(Cambridge Ring),一种早期的高速局域网技术,为网络的未来播下了种子。 他的贡献为他赢得了无数荣誉。1967年,他被授予计算机科学领域的最高荣誉——图灵奖。授奖词精准地概括了他的功绩:“威尔克斯教授以其在EDSAC中的设计和建造而闻名……他也因与惠勒和吉尔共同发展的程序库概念而闻名。1951年,他发表了关于微程序的最佳介绍。” 2000年,他被英国女王册封为骑士。 当我们在21世纪回望莫里斯·威尔克斯的一生时,我们看到的不只是一个发明家,更是一位伟大的奠基人。他的遗产,深刻地烙印在今天我们所使用的每一台计算机中:

  • 他是务实的先驱: 他将冯·诺依曼的理论火花,变成了第一团为人类服务的、熊熊燃烧的实用火焰。他建立的“计算服务”模式,是今天云计算和IT服务的雏形。
  • 他是软件的先知: 在人们还普遍认为计算机就是硬件的代名词时,他已经洞察到软件、程序库和编程方法论的重要性,为软件工程这门学科铺下了第一块基石。
  • 他是优雅的建筑师: 他用微程序设计这一精巧的构想,为复杂的硬件世界带来了秩序和灵活性,深刻影响了计算机体系结构的发展。

莫里斯·威尔克斯的故事,是一个关于“如何让想法落地”的伟大范本。他的一生都在致力于弥合理论与实践之间的鸿沟,将抽象的逻辑转化为可靠的工具。他为冰冷的机器注入了条理、方法和灵魂,从而将计算机从一个令人生畏的庞然大物,变成了一个真正能够延伸人类智慧、改变世界的伙伴。在数字文明的宏伟殿堂中,他正是那位沉默而坚定的奠基者。