贝尔实验室的克劳德·香农和乔治·斯蒂比兹

1937年还出现了另外一项意义重大的理论突破。与图灵的成果类似,这项突破也只是一个思维实验。麻省理工学院的研究生克劳德·香农(Claude Shannon)在这一年提交了有史以来最具影响力的一篇硕士论文,《科学美国人》(Scientific American )杂志后来更将其称为“信息时代的大宪章”。13

香农在密歇根州的一个小镇长大,他从小就喜欢制作飞机模型和业余无线电,后来更进入密歇根大学攻读电气工程和数学专业。他在大四的时候应征了一份贴在学校公告栏的招聘启事,这份工作的内容是前往麻省理工学院帮助万尼瓦尔·布什运作微分分析机。在得到这份工作之后,香农彻底被这台机器迷住了——跟组成模拟部件的转轴和滑轮相比,更让香农着迷的是控制电路中的电磁继电器开关。这些开关可以根据电流信号接通和断开,从而形成不同的电路形式。

1937年夏季,香农暂时离开了麻省理工学院,前往贝尔实验室工作,这是一家由AT&T(美国电话电报公司)运营的研究机构。当时的贝尔实验室位于曼哈顿哈德孙河畔的格林尼治村,它是一个可以将想法变成发明的摇篮。抽象的理论和实际的问题在这里交汇;这里的走廊上、餐厅里聚集了许多偏执的理论家、亲力亲为的工程师、脾气暴躁的机械师和高效的问题解决者,他们共同促进了理论和工程之间的交流。这点让贝尔实验室成为数字时代最为重要的创新支柱之一,哈佛大学的科学历史学家彼得·盖利森把它称为“贸易区”(trading zone)。当这些实践者和理论家聚在一起的时候,他们学会了如何找出一种共同语言来交换各自的想法和信息。14

在贝尔实验室里,香农亲眼看到了电话系统电路的强大功能,这些电路会使用电子开关来安排通话线路和平衡通话负载。他开始在脑海中将这些电路的工作原理和另外一项自己感兴趣的课题结合起来——英国数学家乔治·布尔在90年前制定的逻辑系统。布尔引入了使用符号和等式表达逻辑命题的方式,此举使得逻辑学出现了颠覆性的变化。他将真命题设为数值1,假命题设为数值0,然后这些命题可以用于进行一系列的逻辑运算——例如“与”(and)、“或”(or)、“非”(not)、“或者……或者”(either/or)和“如果……则……”(if/then)——就像是数学方程一样。

香农发现电路可以使用不同的通断开关组合来执行这些逻辑运算。举个例子,如果要实现一个“与”运算,可以将两个开关串联,这样它们需要同时闭合才能接通电路;如果要实现一个“或”运算,可以将两个开关并联,这样它们只需闭合其中一个就能接通电路。更为通用的逻辑开关被称为逻辑门,它们可以简化上面的流程。换句话说,你可以设计一个含有多个继电器和逻辑门的电路,它可以按照步骤执行一系列的逻辑任务。

“继电器”是一种利用电流控制通断的开关,例如电磁继电器。在开关时会发出响声的继电器有时会被称为机电继电器,因为它们含有活动的部件。真空管和晶体管也可以作为电路中的继电器,它们被称为电子继电器,因为它们在控制电流的过程中无须移动电子元件。“逻辑门”是一种可以处理一个或多个输入的开关。例如,在带有两个输入的电路中,“与”门在两个输入均为高电平时才能输出高电平,“或”门在其中一个输入高电平时即可输出高电平。香农的想法是这些逻辑门可以集成在电路当中,这样就可以执行布尔逻辑代数的运算。

香农在同年秋季返回麻省理工学院。布什对香农的想法大为欣赏,并鼓励他将这些内容加入自己的硕士论文当中。这篇题为《继电器与开关电路的符号分析》的论文展示了执行布尔代数的各种运算的方法。“利用继电器电路执行复杂的数学运算是可能的。”他在论文的结尾总结道。15 这篇论文成为所有数字计算机的基础概念。

香农的想法也引起了图灵的兴趣,因为这跟他刚刚提出的通用型机器概念密切相关——图灵机也可以使用简单的二进制编码指令解决数学和逻辑学的问题。而且由于逻辑学和人类大脑的推理方式有关,所以从理论上来说,一台可以执行逻辑任务的机器也可以模仿人类的思考方式。

数学家乔治·斯蒂比兹(George Stibitz)当时也在贝尔实验室工作。他的职责是研究出新的计算方式,帮助电话工程师处理日益复杂的计算工作。斯蒂比兹当时可以使用的工具只有桌面机械加法机,于是他决定按照香农的想法发明一种更高效的计算工具,也就是利用电路执行数学和逻辑的运算。在11月的一天晚上,他从实验室的仓库中带了一些用过的电磁继电器和灯泡回家。他在厨房的桌子上将这些零件安装到一个烟草罐子里面,然后再连接几个开关,这样就做出了一个可以计算二进制加法的简单逻辑电路。其中点亮的灯泡表示“1”,熄灭的灯泡表示“0”。他的妻子把它叫作“K模型”。他第二天向办公室的同事展示了这个模型,并试图让他们相信只要有足够多的继电器,他就可以制造出一台计算机器。

贝尔实验室的一个重要任务是研究如何放大远距离传输的电话信号,同时排除信号传输过程中的静电干扰。实验室的工程师们会使用一些专门的公式来处理信号的波幅和相位,但是这些方程有时会求出带有复数的解(复数是指含有表示负数平方根的虚数单位的数)。斯蒂比兹的主管问他这台机器能否处理复数,在得到了肯定的回答之后,这位主管安排了一支工程师团队协助他完成制造。他们在1939年制成了这台机器,并把它命名为“复数计算器”。它含有超过400个继电器,每个继电器的开关频率达到每秒20次。这点让它的计算速度可以远远超过机械计算器,但是跟当时正在研发的全电子真空管电路相比,它又显得过于臃肿。虽然斯蒂比兹的计算器不能进行编程,但它证明了继电器电路可以用于处理二进制计算、信息和逻辑程序。16

《创新者:一群技术狂人和鬼才程序员如何改变世界》