Medium Archive

个人文章存档 · 从 Medium 导出

《创新者》:第三章 编程

::: {#f1e7 .section .section .section—body .section—first .section—last} ::: section-divider


:::

::: section-content ::: {.section-inner .sectionLayout—insetColumn}

《创新者》:第三章 编程 {#08ab .graf .graf—h3 .graf—leading .graf—title name=“08ab”}

(沃尔特·艾萨克森) {#f7b8 .graf .graf—h4 .graf-after—h3 .graf—subtitle name=“f7b8”}

现代计算机的发展还需要经过另外一个重要的步骤。所有在”二战”时期出现的计算机(至少在刚开始构思的时候)都是为了完成某项专门的任务而建造的,例如用于求解方程和破解密码。一台真正的计算机,比如埃达·洛夫莱斯和艾伦·图灵所构想的计算机,是应该能够快速流畅地执行任何逻辑运算的。这种机器的操作不仅由它们的硬件决定,而且还取决于软件,也就是它们可以运行的程序。图灵再次明确解释了这种机器的概念:“我们不需要使用无限种类的机器来完成不同的任务,“他在1948年写道,“只需一台机器就足够了。为不同的任务制造多种机器的工程问题将会被’编程’这种文书工作取代,经过编程的通用型机器可以完成这些任务。”

从理论上来说,诸如ENIAC这样的机器是可以进行编程的,它们甚至可以被认为是通用型机器。但是在实际操作中,向这种机器导入新程序是一项非常烦琐的工作 --- --- 通常需要手动重新插拔连接计算机不同组件的线缆。这些在战争时期建造的计算机在切换程序的时候难以达到电子速度。实现快速切换程序的能力将取决于现代计算机诞生历程的下一个重要步骤:找出在机器的电子存储器中保存程序的方式。

格雷斯·霍珀 {#b7f5 .graf .graf—h4 .graf-after—p name=“b7f5”}

从查尔斯·巴贝奇开始,发明计算机的男性都将主要的精力放在了机器的硬件上。然而,率先看到编程的重要性的却是在”二战”期间参与计算机工作的女性 --- --- 就像是曾经的埃达·洛夫莱斯一样。她们研究出了编码计算机指令的方法,这些指令可以控制硬件执行的操作。这种软件内含的神奇配方可以让计算机实现一些令人意想不到的功能。

格雷斯·霍珀

最具传奇色彩的一位编程先驱当属格雷斯·霍珀,一位勇敢、果断而且富有人格魅力的美国海军军官。她曾经在哈佛大学为霍华德·艾肯工作,后来进入了普雷斯伯·埃克特和约翰·莫奇利创办的公司。格雷斯·霍珀的本名是格雷斯·布鲁斯特·穆雷(Grace Brewster Murray{.markup—anchor .markup—p-anchor data-href=“https://en.wikipedia.org/wiki/Grace_Hopper” rel=“noopener” target=“_blank”}),于1906年出生于一个位于曼哈顿上西区的富裕家庭。她的祖父是一位土木工程师,他经常会带她到纽约各处进行实地考察。她的母亲是一位数学家,父亲是一位保险经理。她大学毕业于瓦萨学院(Vassar),并取得了数学和物理学的双学位,随后进入耶鲁大学继续深造,于1934年取得数学博士学位。

不过她的教育经历可能并没有你想象中的那么不同寻常。她是毕业于耶鲁大学的第十一位数学女博士,第一位是在1895年毕业的。女性在20世纪30年代取得数学博士学位其实不算是一件特别罕见的事情,尤其是对于一位家庭条件优越的女性来说。事实上,下一个时代的女性反而更难取得数学博士学位。在20世纪30年代,获得数学博士学位的美国女性数量为113人,占美国同期数学博士毕业生总数的15%。到了20世纪50年代,获得数学博士学位的美国女性只有106人,仅占总数的4%(这种情况到了21世纪的前10年大为改观,总共有1 600位女性在此期间获得数学博士学位,相当于总数的30%)。

在嫁给了一位比较文学教授文森特·霍珀(Vincent Hopper)之后,格雷斯回到了瓦萨学院任教。她的教学方式跟大部分的数学教授都不一样,她非常着重培养学生的写作能力。在概率论课程的第一课上,她讲解了一道自己最喜欢的数学公式,并要求学生们写出一篇关于这条公式的文章。她会根据文章内容的清晰度和写作风格进行评分。“我在给这些文章打分的时候会看到一些反对的意见,说他们上的是数学课,而不是英语课,“她回忆道,“然后我就会跟他们解释,如果无法和其他人进行交流,那么他们学习到的数学知识将没有用武之地。“她一直都擅长于将科学问题(例如弹道、流体流动、爆炸和天气模式)转化为数学公式,然后用平实的语言表达出来。这项天赋对她日后成为一位优秀的程序员起到了很大的帮助。

到了1940年的时候,格雷斯·霍珀开始对自己的生活感到厌倦。她没有生小孩,婚姻生活也日渐平淡,而且数学教师的工作也没有她想象中的充实。她从瓦萨学院请假来到纽约大学,与那里的知名数学家理查德·科朗特一起研究偏微分方程的求解方法。这项研究一直持续到1941年12月日本袭击珍珠港的时候。美国的参战为霍珀带来了一个改变人生的机会。在接下来的18个月里,她辞去了瓦萨学院的教职,与自己的丈夫离了婚,并以36岁的年龄加入了美国海军。在入伍之后,她被派到位于马萨诸塞州的史密斯学院的海军预备军官学校进行学习。她在1944年6月以全班第一的成绩毕业,并得到了少尉的军衔。

她以为自己会被分配到负责加密和解密的部门服役,但没想到自己接到的竟然是前往哈佛大学报到的命令,她的任务是进行与马克一号相关的工作。正如上文提到的,马克一号(Harvard Mark I{.markup—anchor .markup—p-anchor data-href=“https://en.wikipedia.org/wiki/Harvard_Mark_I” rel=“noopener” target=“_blank”})是由霍华德·艾肯在1937年设计的大型数字计算机,它使用笨重的机电继电器和电动马达驱动的转轴来建造。当霍珀被分配到这项任务的时候,美国海军已经接管了马克一号。这个项目的负责人仍然是艾肯,但他当时的身份是海军中校,而不是哈佛大学的教员。

霍珀在1944年7月来到哈佛大学报到,这时艾肯给了她一份巴贝奇备忘录的副本,并带她参观了马克一号。“这是一台计算机器。“他向她介绍道。霍珀默默地盯着它看了一会儿。“那里放着一台正在隆隆作响的巨大机械装置,“她回忆道,“它完全没有被遮盖起来,而且非常吵闹。“她意识到自己需要透彻了解这台机器才能正确地使用它,因此她花了几个晚上的时间来研究它的设计蓝图。她的一项长处是能够将现实世界的问题转化为数学公式(这是她在瓦萨学院任教的时候就拥有的能力),然后使用机器能够理解的指令表达出来。“我曾经学习过关于海洋学、扫雷、雷管、近炸引信和生物医药等各个领域的词汇。“她解释道,“如果要解决某个领域的问题,我们必须学习相关的专业词汇。我可以随意转换自己的用词,例如我可以和程序员进行非常技术性的交流,然后在几个小时之后使用另外一套完全不同的用词向上级陈述同样的内容。“创新需要清晰的表达能力。

由于霍珀拥有准确表达信息的能力,所以艾肯委派给她一项任务 --- --- 编写世界上第一本编程手册。“你要写一本书。“有一天他站在她的桌子旁边说道。

“我不会写书,“她回复道,“我从来没有写过书。”

“既然你现在已经是海军的一员了,“他说道,“你就要写这本书。”

霍珀最终写成了一本多达500页的书籍,这本书不仅记录了马克一号的建造历史,而且还是一本针对这台计算机的编程指南。霍珀在书的第一章讲述了一些早期发明的计算机器,其中重点介绍了帕斯卡、莱布尼茨和巴贝奇的机器。这本书的卷首插图是艾肯在办公室组装的巴贝奇差分机部分模型,她还引用了巴贝奇说过的一句话作为卷首语。跟埃达·洛夫莱斯一样,霍珀也能够理解巴贝奇分析机的独特之处,她和艾肯都认为这个特性将会是哈佛马克一号和同时代的其他计算机之间的区别所在。艾肯的马克一号与巴贝奇未完成的机器一样,也是通过打孔纸带接收操作指令的,而且可以使用新的指令进行重新编程。

每天晚上,霍珀都会向艾肯朗读她在当天写成的内容,这个过程让她学习到了成为优秀作家的一个简单技巧:**“他指出如果你在大声朗读的时候发现有不顺畅的地方,那你最好修改一下这个句子。我每天都要朗读自己完成的5页内容。“**在经过了这样的训练之后,她的文笔开始变得简洁利落、条理清晰。霍珀和艾肯的紧密合作关系就像是一个世纪之前的洛夫莱斯和巴贝奇一样。在不断深入了解埃达·洛夫莱斯的过程中,霍珀对她的认同感也变得越来越强烈。“她编写了第一个循环程序,“霍珀说道,“我永远不会忘记这点,我们都不会。”

霍珀将历史部分的重点放在了历史人物上,也就是说她的书强调的是个人的作用。在霍珀的作品完稿后不久,IBM的管理层也聘请专人编写了另外一份关于马克一号的历史。相比之下,IBM版本的历史的主角是位于纽约恩迪科特的IBM工程团队,他们才是真正建成这台机器的人。“利用组织的历史取代个人的历史是最符合IBM利益的做法,“历史学家库尔特·拜尔(Kurt Beyer)在一份关于格雷斯·霍珀的研究中写道,“按照IBM的说法,企业是技术创新的中心。发明家在实验室或地下室中孤军奋战的神话已经不合时宜,取而代之的是平凡的工程师团队在企业中参与渐进式创新的现实。“在IBM版本的历史中,马克一号是多项微创新成果的集合,例如棘轮式计数器和双层卡片馈送装置。IBM书写的历史所歌颂的是一群在恩迪科特互相协作的不知名工程师。

从表面上来看,霍珀和IBM所编写的历史是在争论谁对马克一号的贡献最大,但是它们之间其实有着更深一层的区别。这两段历史的差异表明了人们会以两种截然不同的观点来看待创新的历史。某些关于技术和科学的研究会强调实现创造性飞跃的发明家的作用,也就是霍珀所采用的研究方式。另外一些研究则强调团队和机构的作用,例如在贝尔实验室和IBM恩迪科特实验室进行的团队合作。后一种方式想要证明的是,所谓的创造性飞跃(灵光一闪的瞬间)其实是一个渐进过程的结果,当思想、概念、技术和工程手段都成熟的时候,创新就会随之出现。然而这两种看待技术发展的观点都是不够全面的。数字时代的多数伟大创新都是个人和团队相互作用的结果,即使是富有创意的个人(莫奇利、图灵、冯·诺依曼、艾肯),他们的想法也需要通过团队合作来实现。

和霍珀一起操作马克一号的搭档是理查德·布洛赫(Richard Bloch),后者是哈佛大学数学专业的毕业生,曾经在大学的一个喜欢恶作剧的乐队中担任长笛手,还参与过海军的外勤任务。在霍珀到任之前,布洛赫少尉已经为艾肯工作了三个月的时间,所以他负责为霍珀提供指导。“我记得我们一起坐下仔细研究这台机器的工作原理,讨论如何对它进行编程,一直聊到深夜。“他说道。他和霍珀需要每天12小时轮班管理马克一号,同时还要听候与这台机器一样喜怒无常的长官 --- --- 艾肯的差遣。“有时他会在凌晨四点出现,“布洛赫说道,“他在视察我们的工作时会问:‘我们有在计算数字吗?‘他在机器停止运作的时候会感到非常不安。”

霍珀采用了非常系统化的编程方式。她会将每个物理学问题或者数学方程分解成简单的计算步骤。“你只需要告诉计算机每一步要怎么做,“她解释道,“比如说将这两个数字加起来,然后将结果放在这里;接着将另外两个数字相乘,将下一个结果放在那里。” 12 每次到了要测试记录程序的打孔纸带的时候,马克一号的团队成员都会拿出一张跪垫,一起面朝东方祈祷他们的程序可以运行起来 --- --- 这本来只是一次玩笑,不过后来就变成了一个固定的仪式。

布洛赫有时会在深夜对马克一号的硬件电路进行调整,这样做会导致霍珀编写的软件程序出现问题。这时年轻气盛的霍珀会以自己在军官学校学到的用语狠狠地训斥布洛赫一顿,而身材瘦长的布洛赫通常只是对这些责备一笑置之。他们两人之间的关系成为硬件工程师和软件工程师之间的对抗和友谊的典型。“每次当我完成了一个可行的程序之后,他都会在晚上改动计算机内部的电路,导致程序在第二天早上无法运行,“她抱怨道,“更糟糕的是,他在这个时候已经回家睡觉了,所以我也无法知道他做了些什么。“布洛赫表示出现这种情况的时候,他就知道自己又要遭殃了。“艾肯不会以乐观的心态来看待这些事情。”

这样的事件让霍珀得到了为人傲慢无礼的名声。她的确是这样的一个人,但她能够将自己的傲慢和协作精神结合在一起,这是软件黑客特有的一种能力。这种犹如海盗和船员之间的共事关系(霍珀和后来一代接一代的程序员所共有的)实际上解放了她的能力。正如拜尔所写的,“为她的独立思想和行动创造空间的不是叛逆的性格,而是她的协作能力。”

事实上,与盛气凌人的霍珀相比,沉着冷静的布洛赫反而更容易与艾肯中校发生争执。“布洛赫总是在闯祸,“霍珀说道,“我试着向他解释艾肯本人就像是一台计算机一样。他可以说是用电线连接而成的,如果你要和他共事的话,你必须知道他的电线是怎么排布的。” 艾肯本来对于让一位女性军官加入自己的部队是有所顾虑的,但是他在不久之后就把霍珀任命为自己的首席程序员和第一副官。多年以后,艾肯深情地回忆起了霍珀对计算机编程的诞生所做的贡献。“格雷斯是一个好人。“他称赞道。

在哈佛大学工作期间,霍珀对多种编程方式进行了完善,其中包括子程序的编写。子程序指的是专门用于特定任务的代码块,它们只需要储存一次就可以按照需求在主程序的不同位置调用。“子程序是一种明确定义、容易符号化和经常重复的程序,“她写道,“哈佛马克一号含有用于求解sin x、lg10 x和10x的子程序,每个子程序都通过单个操作码调用。“这是埃达·洛夫莱斯最初在分析机论文的”注解”中描述的概念。霍珀将这些子程序收集到一个不断增补的程序库当中。她在为马克一号编程的时候还发明了编译器的概念,编译器是一种用于为多台机器编写相同程序的工具,它可以将程序的源代码翻译为不同计算机处理器使用的机器语言。

此外,她的团队还提出了程序故障(bug)和调试排错(debugging)这两个术语。哈佛马克二号(Mark II)计算机被放置在一座没有安装纱窗的大楼里面。一天晚上,这台机器突然出现故障,工作人员马上开始查找问题的所在。他们发现有一只翼展达4英寸的蛾子卡在了机器的一个机电继电器里面。他们将这只蛾子取了出来,并用胶带把它黏贴在工作日志上面。“面板F(蛾子)在继电器中,“日志上的记录写道,“这是首次发现虫子(bug)的情况。” 18 从此以后,他们就将排除故障的工作称为”为机器除虫”(debugging the machine)。

到了1945年,哈佛马克一号已经是世界上最容易编程的大型计算机,这点主要归功于霍珀的贡献。它只需输入打孔纸带上的新指令就可以切换任务,不需要对机器的硬件或线路进行重新配置。然而,这个优点无论在当时还是在历史上都没有得到什么关注,因为马克一号(即使是在1947年制成的后继机型马克二号)采用的是操作缓慢而噪声巨大的机电继电器,而不是像真空管这样的电子元件。“当时任何一个对她有所了解的人,“霍珀对马克二号评价道,“都认为她已经毫无希望了,所有人都在追捧电子技术。”

计算机的创新者和其他领域的先驱一样,如果在前进的道路上止步不前的话,他们就会被其他人超越。他们的性格当中有着诸如固执和专注这样的特点,虽然这些特点是他们的创造力的来源,但有时候也会让他们难以接受新鲜的想法。史蒂夫·乔布斯正是一个以固执和专注著称的创新者,然而当他意识到自己需要”不同凡想”(think different)的时候,他就会突然改变自己的主意,这点经常让他的同事们感到措手不及。艾肯缺乏这种灵活应变的能力,所以他无法实现优雅的转身。身为海军中校的他对中央权威有着本能一样的执着,因此他的部下不能像莫奇利和埃克特在宾夕法尼亚大学的团队那样不受拘束地工作。艾肯还将可靠性的优先级放在了速度之上,所以即使宾夕法尼亚大学和布莱切利园的团队都已经清楚认识到了真空管是未来的潮流,他仍然坚持使用久经考验和可靠性更高的机电继电器。他的马克一号每秒只能执行三个指令,而正在宾夕法尼亚大学建造的ENIAC可以在同样的时间内执行5 000个指令。

艾肯后来前往宾夕法尼亚大学视察ENIAC,并参加了几场讲座。“艾肯完全沉浸在了自己的行事方式当中,“当时的一份会议记录写道,“看来他还没有意识到这些新的电子机器的重要性。“霍珀在1945年参观ENIAC的时候也出现了同样的情况。她似乎认为马克一号比ENIAC更加高级,因为它的编程操作十分简便。她对ENIAC的评价是:“你们连接各个组件的做法实际上是为每项任务制作一台专门的计算机。我们已经习惯了编程的概念,而且会利用自己编写的程序来控制计算机。“为ENIAC重新编程可能需要花费一整天的时间,这样一来它在处理速度上的优势就被抹平了,除非它一直被用于重复完成同样的任务。

但是跟艾肯不一样的是,思想开放的霍珀很快就改变了她的看法。当年出现了一些编程方式上的进步,使得ENIAC可以更加快速地实现重新编程。令霍珀感到欣慰的是,站在这场编程革命的最前沿的人都是女性。

ENIAC的女程序员 {#f9f0 .graf .graf—h4 .graf-after—p name=“f9f0”}

所有负责建造ENIAC硬件的工程师都是男性。然而有这么一群女性,准确来说是六位女性,她们在现代计算机技术的发展历程中也起到了同样重要的作用,不过历史对她们的重视却不如那些男性工程师。当ENIAC于1945年在宾夕法尼亚大学进行建造的时候,设计者认为它会用于进行不断重复的特定计算,例如利用不同的变量来确定导弹的轨道。但是战争的结束意味着这台机器将要用于其他类型的计算(声波、天气模式和新型原子弹的爆炸威力等),ENIAC需要经常进行重新编程才能完成这些任务。

重新编程ENIAC的工作需要手动切换凌乱不堪的线缆和重置各种开关。编程最初被认为是一项例行公事,甚至是低等的工作,也许这就是为什么这种编程工作会交给女性负责的原因,因为当时的思想并不鼓励女性成为工程师。然而这群为ENIAC编程的女性很快就证明了计算机的编程工作可以达到和硬件设计同等重要的地位,这是男性工程师们在后来才逐渐认识到的一个事实。

琼·詹宁斯的故事很好地说明了早期女性计算机程序员的情况。她出生于密苏里州Alanthus Grove(只有104位居民)郊外的一个农场。她的家庭虽然一贫如洗,但是非常重视孩子的教育。她的父亲在一所只有一间教室的学校教书,这所学校有一支棒球队,詹宁斯不仅是这支球队里面唯一的女孩,而且还是一位明星投手。她的母亲在八年级的时候就辍学了,不过她会在学校中帮忙辅导学生的代数和几何功课。詹宁斯在家里七个孩子中排行老六,他们最后都上了大学。当时美国各州的政府都开始重视教育,并且认识到了降低教育收费为经济和社会带来的价值。詹宁斯入读的大学是位于马里维尔的西北密苏里州立教育学院,学费是每年76美元(它在2013年面向本州学生的学费约为每年14 000美元,在考虑通货膨胀之后仍然比当年高出12倍)。她刚开始选择的专业是新闻学,但她不喜欢自己的导师,所以她后来转到了自己感兴趣的数学专业。

詹宁斯在1945年1月大学毕业,这时她的微积分老师给她看了一份招募女性数学家前往宾夕法尼亚大学工作的传单。这些被招募的女性将会成为”计算员”(进行程序化计算工作的人员),主要负责为美国陆军计算火炮的弹道表。其中一则招聘启事是这样写的:

招聘:拥有数学学位的女性…从前优先录用男性的科学和工程学相关岗位已经面向女性提供。现在是你考虑加入科学和工程学事业的大好机会…你在各处都可以看到”招聘女性”的口号。

从来没有离开过密苏里州的詹宁斯申请了这份工作。在接到求职申请通过的电报之后,她在当天半夜就乘上了东行的沃巴什列车,一路颠簸40个小时来到宾夕法尼亚大学。“当然,他们对我这么快到达都感到非常惊讶。“她回忆道。

20岁的詹宁斯在1945年3月来到宾夕法尼亚大学工作,当时这里已经有大约70位女性工作人员,她们的工作是操作桌面加法机,并将计算得出的结果填写在大幅的纸张上。赫尔曼·戈德斯坦上尉的妻子阿黛尔负责她们的招聘和培训工作。“我永远不会忘记自己第一次看到阿黛尔的情景,“詹宁斯说道,“她从容地走进教室,嘴角还叼着一支烟。在走到一张桌子后面之后,她一脚踩在桌子上,然后用她稍微纠正过的布鲁克林口音开始讲课。“詹宁斯从小就是一个活跃好动的假小子,所以她对自己遭遇过的无数性别歧视现象都心怀不忿,遇到阿黛尔对她来说是一次观念改变的经历。“我知道自己已经离马里维尔很远了,那里的女人只能偷偷躲到温室里面抽烟。”

在她来到宾夕法尼亚大学的几个月之后,有一份通知在这群女性计算员之间传阅,通知的内容是一台被紧锁在摩尔工程学院首层的神秘机器需要招募六位工作人员。“我对这份工作和ENIAC本身都一无所知,“詹宁斯回忆道,“我只知道自己将会进入一个全新领域的起点,而且我相信自己的学习和工作能力可以跟其他人一样好。“另外,她也希望做一些比计算弹道表更有意思的事情。

在面试的时候,戈德斯坦问她对电学的了解有多少。“我说自己上过物理学的课程,知道E = IR的公式。“她回忆道,这个公式指的是欧姆定律,它定义了电路中的电流、电压和电阻之间的关系。“不对,“戈德斯坦回应道,“我不在乎这个,我想问的是你会不会害怕它?“他解释这份工作需要接通各种电线和操作大量的开关。她说她不害怕。在她面试的过程中,阿黛尔·戈德斯坦走了进来,然后看着她点了点头。詹宁斯最终入选获得了这份工作。

除了琼·詹宁斯(后从夫姓巴尔提克 --- --- Bartik)之外,其他通过面试的人选还包括马琳·韦斯科夫(Marlyn Wescoff,后从夫姓梅尔策 --- --- Meltzer)、露丝·里克特曼(Ruth Lichterman,后从夫姓泰特鲍姆 --- --- Teitelbaum)、贝蒂·斯奈德(Betty Snyder,后从夫姓霍伯顿 --- --- Holberton)、弗朗西斯·比拉斯(Frances Bilas,后从夫姓斯宾塞 --- --- Spence)和凯·麦克纳尔蒂(后来嫁给了约翰·莫奇利)。她们是在战争的号召下聚集在一起的典型组合:韦斯科夫和里克特曼都是犹太教教徒;斯奈德是贵格会教徒;麦克纳尔蒂是爱尔兰裔的天主教教徒;而詹宁斯是基督新教的教友。“我们在一起的时间都过得非常开心,主要是因为我们之前都没有跟信仰其他宗教的朋友亲密接触过,“詹宁斯说道,“我们曾经就关于宗教真理和信仰的问题进行过一些大的争论。尽管我们之间存在不一样的地方,或者说正因为有了这些不同,我们都非常喜欢彼此。”

1945年夏,她们6人被送到了阿伯丁试验场学习如何使用IBM打孔卡片和操作接线板。“我们深入地讨论了宗教、家庭、政治和工作的话题,“麦克纳尔蒂回忆道,“我们之间从来不缺可聊的东西。“詹宁斯通常都是打开话匣子的人:“我们一起工作、生活、吃饭,还会通宵畅谈各种各样的话题。“由于她们当时都没有男友,加上她们身边也有很多单身的士兵,因此许多令人难忘的爱情故事就在鸡尾酒的作用下发生在军官酒吧的隔间里。韦斯科夫找到了一位”高大英俊”的海军陆战队军官。詹宁斯的对象是一位叫作皮特的陆军中士,“他非常有吸引力,但是长得不算特别帅气”。他来自密西西比州。詹宁斯是一个强烈反对种族隔离的人,而且她会对这种看法直言不讳:“皮特有一次告诉我,他一定不会带我到比洛克西去,因为那里的人听到我对种族歧视的观点之后会把我杀掉的。”

在经过了6个星期的训练之后,这6位女程序员告别了她们短暂相处的男友,带着一段美好的回忆启程离开。在回到宾夕法尼亚大学之后,她们拿到了一些海报大小的图表,它们都是关于ENIAC的资料。“有人给了我们一大堆设计蓝图,里面有全部控制板的布线图。他们说:‘你们先看看这台机器的工作原理,然后想出怎么给它编程。‘“麦克纳尔蒂如是说。这项工作需要分析微分方程,然后确定如何将电线连接到正确的电路。“利用图表学习ENIAC工作原理的最大好处是,我们开始理解它能做和不能做的事情,“詹宁斯说道,“因此我们就有能力判断机器出现故障的位置,几乎可以精确到具体某一个真空管的问题。“她和斯奈德设计了一个检测系统,它可以在18 000个真空管当中找出烧坏的一个。“因为我们对这台机器和它的应用都了如指掌,所以我们检测故障的能力可以达到工程师的水平,甚至超过他们。我敢说那些工程师也喜欢这样,因为他们可以将调试排错的工作交给我们。”

斯奈德提到,她们会小心翼翼地为新的线路和开关配置制作图表。“我们当时所做的只是一个程序的开头。“她说道,不过她们当时还没有开始使用”程序”一词。为了保险起见,她们会将每条新的序列写在纸上。“我们都觉得如果把控制板弄坏的话,我们肯定要被扒掉一层皮。“詹宁斯说道。

有一天,詹宁斯和斯奈德坐在由教室改造而成的二楼工作间里面,对着铺在桌面上的图表研究ENIAC的各个部件。这时有一位男士进来检查建筑的结构情况。“你们好,我叫约翰·莫奇利,“他说道,“我只是来看看这里的天花板有没有出现下陷。“尽管她们两个在之前都没有见过这位ENIAC设计师,但是她们当时一点都没有感到胆怯。“我们正好有问题要请教您,“詹宁斯镇定地说道,“我们想知道这个复杂的累加器是怎么运作的?“莫奇利悉心地回答了她们提出的一些问题。他在解答完她们的问题之后说道:“我的办公室就在隔壁。所以只要我在办公室的时候,你们都可以过来请教问题。”

她们几乎在每个下午都会这样做。根据詹宁斯的评价,“他是一位非常优秀的老师”。莫奇利会鼓励这些女程序员设想除了计算火炮弹道以外,ENIAC以后还可以用来执行什么任务。他知道如果要将ENIAC变成一台真正通用型的计算机,他将需要启发程序员耐心地完成除了操作硬件以外的工作。“他经常会尝试鼓励我们思考不同的问题,“詹宁斯说道,“他总是希望我们可以做一些像求逆矩阵这样的运算。”

正当霍珀在哈佛大学研究子程序的应用时,ENIAC的女程序员也在做同样的事情。她们当时在为逻辑电路无法计算某些弹道而感到烦恼。后来麦克纳尔蒂为此想出了一个解决方法。“啊!我想到了!“她兴奋地说道,“我们可以使用一个主编程器来重复代码。“在经过尝试之后,她们发现这种做法是可行的。“我们开始思考如何做出子程序和嵌套子程序这些东西,“詹宁斯回忆道,“这种方法对于这个弹道问题来说是非常实用的,因为这样做不需要重复完整的程序,只需要通过主编程器重复程序的某些部分。在学会了这种方法之后,你就会知道如何按照模块来设计程序。程序模块化和子程序开发对于编程学习来说是非常重要的。”

时至2011年,琼·詹宁斯·巴尔提克在去世前不久还自豪地回顾了她们的成就 --- --- 创造出第一台通用型计算机的程序员都是女性:“尽管我们那个时代的女性通常只有非常有限的就业机会,但我们还是帮助开创了计算机的时代。“她们之所以能够做到这点是因为当时有许多女性都具备数学知识,而且计算机的发展需要她们的技能。不过这其实也是一个挺有讽刺意味的事实:负责硬件工程的大男孩们认为组装硬件是最为重要的任务,所以这应该是男人的工作。“当年美国的科学和工程学领域的性别歧视比现在还要严重,“詹宁斯说道,“如果ENIAC项目的领导们事先知道编程工作的重要性以及它可以达到的复杂性,他们可能不会如此放心地将这项重要工作交给女性完成。“

存储程序 {#f842 .graf .graf—h4 .graf-after—p name=“f842”}

莫奇利和埃克特从一开始就知道ENIAC可以采用更加简单的重新编程方式,但是他们没有尝试这么做,因为实现这项功能需要制作出更为复杂的硬件,这对于他们原来设想的用途来说是不必要的。“我们一直都没有尝试为自动设置问题做准备,“他们在1943年的ENIAC年度工作进度报告中写道,“这是为了保持硬件的简易性,而且ENIAC的主要预计用途是解决某一类型的问题。在更换求解的问题之前,它的每个配置都可以多次使用。”

不过在ENIAC建成的一年多之前,也就是在1944年年初的时候,莫奇利和埃克特已经认识到了一种简便的计算机重新编程方法:将程序保存在计算机的存储器当中,这样就不需要在每次编程的时候都重新输入程序。他们认为这将会是计算机发展历程的下一个重大进步。“存储程序”(stored-program)这种结构意味着计算机可以实现接近即时的任务切换,无须手动重新配置线缆和开关。

为了在计算机内部保存程序,他们需要制作大容量的存储器。埃克特为此思考过多种实现方式。“这种程序可以临时储存在合金圆盘上或者永久储存在蚀刻圆盘上。“他在一份1944年1月的备忘录中写道。由于这种圆盘在当时的造价过于高昂,因此他建议ENIAC的下一代计算机采用另一种更为廉价的存储方式 --- --- 声波延迟线。这种技术是由一位叫作威廉·肖克利(William Shockley{.markup—anchor .markup—p-anchor data-href=“https://en.wikipedia.org/wiki/William_Shockley” rel=“noopener” target=“_blank”},本书后面的章节将会对他进行详细的介绍)的工程师在贝尔实验室首先提出的,并在麻省理工学院研制成功。声波延迟线的工作原理是将数据以脉冲的形式保存在一个装满黏稠液体(例如水银)的存储管中。携带数据流的电信号会在存储管的其中一端被石英栓转换为脉冲,经过转换的脉冲会在存储管中来回波动一段时间。这些机械波可以利用电力维持任意长度的时间。当需要恢复数据的时候,石英栓会将机械波重新转换成电信号。每个存储管可以处理大约1 000个字节,但是它的成本仅为真空管电路的百分之一。埃克特和莫奇利在一份写于1944年夏天的备忘录中提到,ENIAC的后继机型应该采用多个这样的水银延迟线存储管,将数据和初步的程序信息以数字的形式保存。

约翰·冯·诺依曼 {#f136 .graf .graf—h4 .graf-after—p name=“f136”}

就在这个时候,计算机历史上的另外一位关键人物 --- --- 约翰·冯·诺依曼再次发挥了他的作用。这位来自匈牙利的数学家曾经是图灵在普林斯顿大学研究期间的导师,他还向图灵提供过一份研究助理的工作。身为一位充满热情的博学大师和温文尔雅的知识分子,他在统计学、集合论、几何学、量子力学、核武器设计、流体力学、博弈论和计算机结构学等领域都做出过重大的贡献。他最终会对存储程序结构(埃克特、莫奇利和他们的同事刚开始思考的技术)进行大幅改进。由于他对存储程序结构的发明居功至伟,这种结构也被称为”冯·诺依曼结构”。

1903年,冯·诺依曼出生在布达佩斯的一个富裕犹太家庭之中,当时奥匈帝国已经废除了制裁犹太人的法律,所以冯·诺依曼得以在犹太人的辉煌时期成长。1913年,弗朗茨·约瑟夫国王以”在金融领域的卓越功绩”为由向身为银行家的麦克斯·诺依曼(Max Neumann)授予了一个世袭的爵位,此后诺依曼家族的姓氏之前就加上了表示贵族的词缀”margittai”,这个姓氏在德语中则变成了冯·诺依曼(von Neumann)。亚诺什(János,又名Jancsi,他在来到美国之后被称为约翰或约翰尼)是家中三兄弟的老大,在父亲逝世之后,他们三人都皈依了天主教(其中一人承认”这是出于便利的原因”)。

冯·诺依曼是另外一位站在人文和科学交叉口的创新者。“父亲是一个业余诗人,他认为诗歌不仅可以表达情感,还可以诠释哲学思想,“约翰的弟弟尼古拉斯回忆道,“他将诗歌看成是一种存在于语言当中的语言,这种想法也许引起了约翰后来对计算机和大脑语言的思考。“他对母亲的印象是,“她认为音乐、艺术和其他相关的审美享受都在我们的生活中占据重要的地位,高雅是一种值得推崇的品质。”

冯·诺依曼从小就展现出了过人的天赋,外界流传着不少关于他童年的故事,其中有些也许是真的。据说他在6岁的时候已经可以用古希腊语和父亲闲谈,他还可以心算出两个8位数的除法。作为一项在聚会上表演的拿手好戏,他会记住电话本其中一页的内容,然后背诵出上面的人名和电话号码。他还能一字不差地回忆起自己读过的5种不同语言的小说或文章。“如果以后进化出了一种超高智商的人类,“氢弹之父爱德华·泰勒(Edward Teller{.markup—anchor .markup—p-anchor data-href=“https://en.wikipedia.org/wiki/Edward_Teller” rel=“noopener” target=“_blank”})曾经说过,“那么这个种族的成员应该会像约翰尼·冯·诺依曼那样。”

除了在学校学习之外,他还有专门的数学和外语家教,他在15岁的时候已经完全掌握了高等微积分。冯·诺依曼在1919年举家搬迁到了维也纳和阿德里亚海沿岸的一个旅游城市,他后来前往位于苏黎世的瑞士联邦理工学院(爱因斯坦曾经就读的大学)攻读化学,同时在柏林和布达佩斯两地攻读数学,并在1926年获得博士学位。1930年,他前往普林斯顿大学教授量子物理学,在被任命为高等研究院的首批成员(其他成员包括爱因斯坦和哥德尔)之后,他继续留在普林斯顿大学任教。

冯·诺依曼和图灵两人在普林斯顿大学相遇,虽然他们后来都成为通用型计算机的重要理论家,但是他们有着完全对立的个性和气质。图灵的生活非常简朴,他长期居住在宿舍和旅馆当中,而且通常都是独来独往。冯·诺依曼是一个讲究生活享受的人,他每周都会和妻子在普林斯顿大学的大宅中举办一到两次聚会。图灵是一个长跑运动员;虽然冯·诺依曼的兴趣相当广泛,但是长跑(甚至是短跑)显然不在此列。“他在衣着和习惯方面比较不修边幅。“这是图灵的母亲对自己儿子的看法。相比之下,冯·诺依曼几乎在任何时候都会穿着整齐的西装三件套,连在骑驴游览大峡谷的时候也不例外。他在学生时代的衣着已经十分讲究,据说数学家大卫·希尔伯特在第一次看见他的时候只问了一个问题:他的裁缝是谁?

在自己举办的聚会上,冯·诺依曼喜欢用各种不同的语言来讲笑话和背诵低俗的打油诗。他非常热衷于享受食物,有一次他的妻子甚至说他可以计算除了卡路里之外的任何东西。他在开车的时候总是横冲直撞,所以他时常会把车子撞坏,他还对新款的凯迪拉克轿车情有独钟。“他每年至少都会买一辆新的凯迪拉克,不管之前那一辆有没有被他撞坏。“科学历史学家乔治·戴森(George Dyson{.markup—anchor .markup—p-anchor data-href=“https://en.wikipedia.org/wiki/George_Dyson_(science_historian)” rel=“noopener” target=“_blank”})这样写道。

20世纪30年代后期,身处高等研究院的冯·诺依曼开始将研究兴趣转向利用数学方式建模爆炸的冲击波。凭借这方面的研究经验,他在1943年加入了曼哈顿计划。作为曼哈顿计划的成员,他需要经常前往位于新墨西哥州洛斯阿拉莫斯的秘密设施,参与那里的原子弹研发工作。由于当时可用的铀—235只足够制造一个原子弹,所以洛斯阿拉莫斯的科学家们也在尝试设计一种使用钚—239的原子弹。冯·诺依曼的主要工作是研制能够将钚核装料压缩至临界质量的炸药透镜。

这种内爆式设计的评估需要求解大量的方程,用于计算爆炸产生的空气或其他物质的压缩流速。于是冯·诺依曼开始前往各地了解高速计算机的发展前景。

1944年夏,他来到贝尔实验室观摩多台经过改进的乔治·斯蒂比兹复数计算器。其中最新型的复数计算器有一项令他印象特别深刻的创新:用于为每项任务输入指令的打孔纸带同时会含有数据,也就是说指令和数据会混合在一起。他也在哈佛大学访问了一段时间,研究霍华德·艾肯的马克一号能否帮助原子弹的计算工作。在当年的夏天和秋天,他多次来回穿梭于哈佛大学、普林斯顿大学、贝尔实验室和阿伯丁之间,他就像是一只蜜蜂一样将自己在各个地方采集到的想法传播给不同的团队。约翰·莫奇利曾经利用自己在四处访问期间收集的想法创造了第一台可行的电子计算机,同样,冯·诺依曼也在不同的地方吸收到设计存储程序的计算机结构所需的资料和概念。

哈佛大学的格雷斯·霍珀和她的编程搭档理查德·布洛赫将马克一号旁边的会议室布置成冯·诺依曼的办公室。冯·诺依曼和布洛赫会在黑板上写下公式,将它们输入到机器中,然后霍珀会大声读出机器计算得出的中间结果。霍珀说当这台机器正在”生成数字”的时候,冯·诺依曼经常会从办公室突然冲进来给出自己对计算结果的预测。“我永远都不会忘记他在两个房间来回奔波,然后将预测的结果都写在黑板上的情景,而且令人感到惊叹的是,冯·诺依曼预测的结果可以达到99%的准确率,“霍珀兴奋地说道,“他似乎清楚知道它的计算流程,或者说他能够感受到它是如何运作的。”

冯·诺依曼的协作能力给哈佛大学的团队留下了深刻的印象。他吸收了他们的想法,也贡献了一些自己的想法,但他明确表示任何概念都不应该被任何人据为己有。在他们需要编写一份工作报告的时候,冯·诺依曼坚持要把布洛赫的名字放在第一位。“我确实觉得自己受之有愧,不过最终的结果就是如此,所以我非常珍视这份报告。”

布洛赫说道。艾肯对于分享的想法也同样抱有开放的态度。“不用担心其他人窃取你的想法,“他曾经对一位学生说过,“如果这是原创的想法,你肯定可以让别人接受它。“尽管如此,冯·诺依曼漫不经心地对待想法原创者的态度仍然让艾肯感到惊讶和一丝不快。“他不会在意自己谈论的想法是来自哪里的。“艾肯说道。

冯·诺依曼在哈佛大学研究期间遇到了一个问题 --- --- 马克一号采用的机电开关的运作速度非常缓慢。如果要在这台机器上完成原子弹相关的计算工作将需要花费数月的时间。虽然它可以通过纸带输入指令进行重新编程,但是每次调用子程序的时候都需要手动更换纸带。冯·诺依曼开始确信如果要实现他的计算目标,唯一的解决方法是建造一台达到电子速度,并且可以内置存储器保存和调整程序的计算机。

这时他已经准备好投身于推动计算机技术的下一个重大进步:研制一台存储程序计算机。这项研究的契机出现在1944年8月底,他在阿伯丁试验场火车站的月台上迎来了一场意外的相遇。

冯·诺依曼在宾夕法尼亚大学 {#09a1 .graf .graf—h4 .graf-after—p name=“09a1”}

与莫奇利和埃克特共同研发ENIAC的陆军联络官赫尔曼·戈德斯坦上尉恰好也在阿伯丁火车站的月台上,正在等候搭乘一列北行的火车。虽然他之前从来没有见过冯·诺依曼,但他还是马上认出了对方。戈德斯坦向来都非常仰慕天才人物,因此能够遇到这位数学领域的明星确实让他感到兴奋不已。“于是我走向了这位世界闻名的人物,先做了一下自我介绍,然后开始与他攀谈,我知道这样做是相当失礼的,“他回忆道,“不过幸好冯·诺依曼是一个热情友善的人,他会尽量让身边的人感到放松。“当冯·诺依曼了解到戈德斯坦正在做的事情之后,双方交谈的气氛开始变得紧张起来。“当冯·诺依曼知道我的工作内容是研发一台能够在每秒完成333次乘法运算的电子计算机之后,我们本来轻松愉快的对话气氛变得更像是一场数学博士学位的论文答辩。”

在戈德斯坦的邀请下,冯·诺依曼在几天之后来到宾夕法尼亚大学观摩正在建造的ENIAC。普雷斯伯·埃克特迫不及待想要见到这位著名数学家,而且他已经想好了一个测试来看看他是不是一个”名副其实的天才”:他的第一个问题会是关于这台机器的逻辑结构的吗?事实上这正是冯·诺依曼提出的第一个问题,因此他也赢得了埃克特的尊重。

ENIAC可以在一个小时之内求解一道偏微分方程,而哈佛马克一号则需要花费80个小时。这点深深地打动了冯·诺依曼。然而,为不同的任务重新编程ENIAC将需要数个小时的时间,冯·诺依曼意识到当需要处理大量各不相同的任务时,这将会是一个严重的缺点。在1944年,莫奇利和埃克特一直在全力思考在计算机内部储存程序的方法。在吸收了来自哈佛大学和贝尔实验室等各个地方的想法之后,冯·诺依曼可以帮助他们以全新的高度来思考存储程序计算机。

冯·诺依曼后来成为ENIAC团队的顾问,他坚持计算机程序应该与数据保存在同一个存储器中的想法,因为这样可以在程序运行的过程中轻易地对其进行调整。他的研究工作开始于1944年9月的第一个星期,当时莫奇利和埃克特详细地向他介绍了这台机器,并分享了他们打算在下一代机器中采用”带有可寻址位置的存储设备”的想法,这种设备可以同时作为数据和编程指令的存储器。戈德斯坦在这周写给上级军官的信中汇报道:“我们计划制作一种集中式的编程设备,常规程序会以编码的形式保存在上文提到的储存设备中。”

冯·诺依曼与ENIAC团队进行了一系列的会议,其中有四场正式的研讨会在1945年春季举行。他在这些会议当中起到了相当重要的作用,以至于它们的会议记录上都写着”冯·诺依曼会议”这个标题。在会议上,他会在黑板前面来回踱步,并采用苏格拉底式的问答方法引导讨论。他会将吸收到的想法加以完善,然后将它们写在黑板上面。“他会像一位教授那样站在会议室前面和我们一起讨论,“琼·詹宁斯回忆道,“我们会向他指出我们现有的问题,而且我们总是非常谨慎地确保我们提出的是一些根本性的问题,而不只是机械方面的问题。”

虽然冯·诺依曼乐于接纳新的观点,但是他的聪明才智总是让人不敢反驳他的看法,不过詹宁斯有时会这样做。有一天,她对冯·诺依曼的其中一个观点提出了异议,他用难以置信的目光看着她,不过他在稍作思考之后还是接受了她的观点。冯·诺依曼会认真听取别人的意见,同时非常擅长让自己表现得谦逊,这点体现了他的个人魅力。“他是一个非常聪明和自信的人,但同时他在向其他人提出自己的想法时会表现得十分谦逊和腼腆,这确实是一种奇特的性格组合,“詹宁斯说道,“他会焦躁地在房间里来回走动,然而他在展示想法的时候会给人这样一种感觉,他就像是在为自己提出的异议或者更好的想法而向对方道歉。”

冯·诺依曼特别擅长构思计算机编程的基本原理。计算机编程在当时仍然是一项含义模糊的技术,自从埃达·洛夫莱斯在一个世纪之前为分析机写下伯努利数的生成步骤以来,这项技术一直都没有取得明显的进步。他意识到建立一个简洁的指令集需要严谨的逻辑和准确的表达。“他非常透彻地解释了为什么我们需要或者不需要某个特定的指令,“詹宁斯说道,“这是我第一次真正认识到指令代码的重要性,并了解到它们背后的逻辑和指令集必须含有的要素。“这点正是他博学多识的明证,这种天赋让他能够抓住一个新想法的本质。“冯·诺依曼拥有在问题中找出重点的能力,我在其他天才身上也注意到了这个特点。”

冯·诺依曼意识到他们所做的不仅仅是提升ENIAC的重新编程效率,更重要的是他们正在实现埃达的愿景 --- --- 创造一台可以根据任意符号集执行任意逻辑任务的机器。“由艾伦·图灵构思,并由约翰·冯·诺依曼实现的存储程序计算机打破了表达意义的数字和执行任务的数字之间的区别,“乔治·戴森写道,“我们的宇宙也因此被彻底改写。”

另外,对于将数据和编程指令混合在相同存储器的方式,冯·诺依曼比其他同事更快地领会到它的一个重要特性:这种存储器应该是可擦写的,也就是我们现在所说的读写存储器。这就意味着存储程序的指令不是只能在程序运行结束之后才能更改,而是可以在程序运行过程的任意时刻进行调整。这种计算机可以根据中间得出的结果调整自己的程序。为了实现这点,冯·诺依曼设计了一种可变地址(variable-address)的程序语言,它能够在程序运行的过程中轻易地切换子程序指令。

宾夕法尼亚大学的团队提议美国陆军按照这些思路建造一台改进版的ENIAC。它原来的十进制系统将会被二进制取代,同时会采用水银延迟线存储器,而且它的大部分结构都符合后来定义的”冯·诺依曼结构”。在上呈美国陆军的计划书中,这台新型机器被命名为电子离散变量自动计算器(Electronic Discrete Variable Automatic Calculator)。不过这支团队越来越多地把它称为计算机,因为它的功能要远远超出一台计算器的能力范围。其实采用哪种说法都不重要,因为大家都把它简称为EDVAC。

对于在1944年到1945年年初形成的存储程序计算机概念,后来的专利审判、学术大会、书籍和相互矛盾的历史文献都在激烈争论谁是它的最主要贡献者。例如,上文提到的说法将构思存储程序概念的功劳主要归于埃克特和莫奇利,而冯·诺依曼的贡献则在于认识到计算机在运行过程中调整存储程序的重要性,以及创造出一种可变地址的编程功能来实现这种能力。然而,比追寻想法的出处更重要的是认识到在宾夕法尼亚大学出现的创新是另外一个协作创造的例子。冯·诺依曼、莫奇利、戈德斯坦和詹宁斯等人在这里共同探讨各种想法,并从这里的工程师、电子学专家、材料科学家和程序员身上得到了宝贵的意见。

我们大多数人都曾经在小组头脑风暴会议中讨论过创造性的想法。也许在讨论结束的几天之后,会议的参加者已经记不清谁是第一个提出某个想法的人了,这时我们可以体会到想法的形成更多是来自团队成员之间的相互影响,而不是依靠某位成员给出一个完全原创的概念。创意的火花并非源自突如其来的灵感,而是多种想法相互碰撞的结果。来自贝尔实验室、洛斯阿拉莫斯、布莱切利园和宾夕法尼亚大学的创新都是通过这种方式诞生的。冯·诺依曼的一个长处是拥有主导这种协作创新流程的天赋 --- --- 他善于提问和聆听,他会温和地提出试探性的建议,清晰地表达自己的观点,最后对各人的想法进行汇总整理。

冯·诺依曼习惯于收集和整理想法,而且不太在意这些想法的准确来源。这种做法虽然有助于他构思和完善EDVAC沿用的概念,但有时也会惹怒那些更加关心功劳(或者知识产权)归属的人。他曾经宣称通过团队讨论得出的想法是不可能确定归属的。据说埃克特在听到这番话之后的回应是:“真的吗?”

冯·诺依曼的做法带来的好处和弊端在1945年6月开始显现出来。在宾夕法尼亚大学忙碌工作了10个月之后,他主动提出将他们的讨论内容以书面形式汇总起来。他在开往洛斯阿拉莫斯的长途列车上开始撰写这份报告。

冯·诺依曼将这份手写的报告寄给了宾夕法尼亚大学的戈德斯坦。他在报告中以翔实的计算数据描述了存储程序计算机的结构和逻辑控制方式,以及”将所有存储器看成是单个组件”的好处。埃克特对冯·诺依曼的做法产生了质疑,觉得这似乎是在利用其他人帮助完善的想法来完成一篇论文。戈德斯坦安慰道:“他只是想在自己的头脑中理清这些思路,而他采取的做法是向我写信,然后让我们在回信中向他提出理解不当的地方。”

冯·诺依曼在报告中留出了空白的位置,用于插入来自其他人的引用内容,而且他的文字中从来没有出现过”EDVAC”这个缩写。不过当戈德斯坦将这份报告打印成文的时候(最终长度达到101页),他将自己的偶像列为报告的唯一作者。他在这份报告的标题页上写着:“关于EDVAC的报告初稿,由约翰·冯·诺依曼所作”。戈德斯坦使用油印机印出了24份报告副本,并在1945年6月底分发了这些副本。

这份”报告初稿”具有非常高的使用价值,它引领了未来至少10年的计算机发展。冯·诺依曼决定撰写这份报告,并允许戈德斯坦发布它的做法反映了学术型科学家(尤其是数学家)的开放性,他们更倾向于发表和宣传研究成果,而不是尝试占有知识产权。“我当然希望尽自己最大的努力将这方面的内容保留在公共领域(从专利的角度来看)。“冯·诺依曼向一位同事解释道。他后来提到了自己之所以要写这份报告的两个目的:“帮助阐明和整合EDVAC研发团队的想法”,以及”促进高速计算机制造技术的发展”。他说自己并非试图占有这些概念的所有权,他从来没有为它们申请过专利。

埃克特和莫奇利却不这么认为。“要知道我们最后已经把冯·诺依曼看成是一个倒卖想法的贩子,他的首席推销员正是戈德斯坦,“埃克特后来说道,“冯·诺依曼所做的是窃取他人的创意,并且试图将(宾夕法尼亚大学)摩尔学院的工作成果据为己有。“琼·詹宁斯也同意这种看法,她后来抱怨戈德斯坦”热心地支持冯·诺依曼的错误主张,他实际上是在帮助这个人夺取埃克特、莫奇利和摩尔学院团队其他成员的工作成果”。

莫奇利和埃克特曾经尝试为ENIAC和EDVAC背后的多项概念申请专利,但是令他们感到气馁的是,冯·诺依曼之前分发报告的做法在法律上已经将这些概念纳入了公共领域。他们在为存储程序计算机结构申请专利的过程中也遇到了重重困难,这是因为冯·诺依曼的报告被认为是这些想法的”在先发表”(美国陆军的律师和法院最终都做出了这样的裁定)。

ENIAC的公开亮相 {#0c59 .graf .graf—h4 .graf-after—p name=“0c59”}

1945年秋,宾夕法尼亚大学团队已经投入到EDVAC的设计工作当中,但他们在这个时候仍然在忙碌地维持着它的前辈ENIAC的正常运转。

当时”二战”已经结束,所以ENIAC不再需要计算火炮弹道表,但是它在战后接到的首个计算任务仍然与武器有关。这项秘密任务来自洛斯阿拉莫斯 --- --- 位于新墨西哥州的核武器实验室,来自匈牙利的理论物理学家爱德华·泰勒在当时已经设计出了一种叫作”超级”(the Super)的氢弹。“超级”氢弹的内部含有一个用于触发聚变反应的核裂变装置。为了确定这个设计的实际效果,科学家们需要计算出这些核反应在每千万分之一秒内的强度。

虽然这个问题本身属于高度机密,但是它涉及的大量方程在当年10月被移交到位于宾夕法尼亚大学的ENIAC进行计算。这项工作需要使用接近100万张打孔卡片来输入数据,詹宁斯和她的几位同事都被召集到了ENIAC的房间,戈德斯坦负责向她们给出设置ENIAC的指示。ENIAC最终完成了这些方程的求解,并证明了泰勒的设计是有缺陷的。从波兰来到美国避难的数学家斯塔尼斯拉夫·乌拉姆(Stanislaw Ulam)后来与泰勒一起根据ENIAC的计算结果修改了氢弹的设计,使得它可以产生大规模的热核反应(克劳斯·富赫斯也参与了这项工作,此人最终被证实是一名苏联间谍)。

在这些机密任务完成之前,ENIAC一直都是一个对外保密的项目,直到1946年2月15日才得到公开展示。当时美国陆军和宾夕法尼亚大学准备举行一场盛大的展示活动,并安排了一些媒体发布会。戈德斯坦上尉认为这次展示活动的重点环节是导弹轨道的计算演示,因此他提前两周邀请了琼·詹宁斯和贝蒂·斯奈德到他的公寓做客。正当阿黛尔为她们奉茶的时候,戈德斯坦问她们能否及时完成这次的ENIAC编程工作。“我们当然可以做到。“詹宁斯保证道。她为此感到十分兴奋,因为这项工作可以让她们亲手操作这台机器,而这种机会是相当少有的。她们的工作是将ENIAC的存储器总线接入到正确的组件,并安排好放置程序的托盘。

负责ENIAC项目的男性都深知这场演示的成败就掌握在这两位女性的手中。莫奇利在一个周六带着一瓶杏子白兰地酒前往慰劳她们。“它的味道非常棒,“詹宁斯回忆道,“从那天开始,我的橱柜总会放着一瓶杏子白兰地。“几天之后,工程学院的院长也给她们带去了一瓶用纸袋装着的威士忌。“请继续好好工作。“他对她们说道。虽然斯奈德和詹宁斯的酒量都不大,但是这些礼物确实发挥出了它们应有的作用。“它让我们深刻感受到了这场演示的重要性。“詹宁斯说道。

这场演示的前一天晚上刚好是情人节,虽然斯奈德和詹宁斯平常都热衷于参加社交活动,但是她们没有在这天外出庆祝。“相反,我们留守在了ENIAC这台神奇的机器旁边,忙碌地对它的程序进行最后的修改和检查。“詹宁斯叙述道。她们在这个过程当中遇到了一个难以解决的问题:她们的程序可以顺利地输出炮弹的弹道数据,但它不知道应该在什么时候停止计算。在炮弹击中地面之后,程序仍然会继续计算它的轨道。“就像是有一枚想象中的炮弹,它会以在空气中运行时同样的速度钻入地面,“詹宁斯描述道,“我们知道如果这个问题没有得到解决的话,这项演示只会是一场笑话,ENIAC的发明者和工程师也会因此蒙羞。”

在媒体发布会的前夕,詹宁斯和斯奈德一直都在尝试修复这个问题,但是她们始终都找不到头绪。她们最终在午夜时分放弃了尝试,因为斯奈德需要赶上最后一趟火车返回市郊的公寓。然而斯奈德就在上床睡觉之后想出了问题的所在:“我在半夜突然醒来,开始思考究竟是哪里出错了…我最终想到了可能出错的地方,于是我在第二天清晨专程搭上早班列车返回检查某条电线的情况。“原来程序的问题出在某个”循环语句”的末尾,那里有一个出错的数位。在接通了对应的开关之后,她就把这个错误修复了。“贝蒂在睡梦中的逻辑思维能力比大多数清醒的人都要好,“詹宁斯后来称赞道,“当她在睡觉的时候,她的潜意识解开了让她在清醒时束手无策的难题。”

在正式的演示上,ENIAC能够在15秒之内输出一组导弹轨道计算结果。即使在微分分析机的协助下,同样的工作如果交给计算员完成也需要花费数周的时间。现场的演示效果非常生动有趣。跟其他优秀的创新者一样,莫奇利和埃克特都知道怎样做好一场演出。ENIAC的累加器里面的真空管组成了多个10×10的网格,这些真空管的顶端会通过机器前面板的小孔露出来。不过作为指示灯的氖管只能发出微弱的光线,这种亮度在正常情况下几乎看不见。于是埃克特找来了一些乒乓球,把它们切成一半,然后在上面标上数字,最后把它们安放到氖管的前面。会场的灯光在计算机开始处理数据的时候被关掉了,在看到这些不停闪烁的乒乓球之后,观众们都感到大为惊叹,这个景象后来成为电影和电视节目的一个常见桥段。“在计算弹道的时候,累加器中的数字会不断增加,然后在不同的元件之间转移,机器的灯光也会像拉斯韦加斯的广告牌那样不停地闪烁,“詹宁斯说道,“我们已经完成了自己的任务。我们编制了ENIAC的程序。“这是一句值得复述的话:她们编制了ENIAC的程序。

ENIAC的公开亮相成为《纽约时报》的头版新闻,这篇题为《电子计算机如闪电般求出答案,或可加速工程技术发展》{.markup—anchor .markup—p-anchor data-href=“http://www.computerhistory.org/revolution/birth-of-the-computer/4/78/323” rel=“noopener” target=“_blank”}的报道在开篇写道:“作为战争时期的一项最高机密,美国陆军部在今晚正式对外公布了一台神奇的机器,它能够以电子速度完成长期无法解决的烦琐计算工作,这是有史以来第一台能够实现这点的机器。“这篇报道的篇幅还占据了《纽约时报》内页的一整版内容,其中展示了莫奇利、埃克特以及如房间般大小的ENIAC的照片。莫奇利表示这台机器可以用于更准确的天气预测(他最初的研究兴趣)、飞机设计和”超高速的制导操作”。美联社的报道则提出了一个更为宏大的愿景:“这台机器将通过数学方式提升全人类的生活水平。“作为”提升生活水平”的一个例子,莫奇利断言计算机的服务成本总有一天会低于一块面包的价格。虽然他没有解释这个预言将会如何实现,但事实上有无数个类似的理想最终都成了现实。

詹宁斯后来抱怨许多新闻报道都过分地夸大ENIAC的能力,并把它称为”巨型的大脑”,她认为这是在暗示其拥有思考的能力。在看待机器的思考能力方面,詹宁斯沿袭了埃达·洛夫莱斯的观点。“ENIAC无论如何都不会是一个大脑,“她强调,“它没有思考的能力,目前的计算机都没有这种能力,不过它确实能够为人类的思考提供更多可利用的数据。”

詹宁斯还有另外一个更为私人的抱怨:“在这场演示过后,贝蒂和我都被忽视和遗忘了。我们的感觉就像是参演了一部故事情节急转直下的电影。在拼命工作了两个星期之后,我们终于做出了一些惊人的成果,然后我们的名字却从剧本中去掉了。“当天晚上,演示活动的主办方在历史悠久的宾夕法尼亚大学休斯敦礼堂举行了一场烛光晚宴。出席这场晚宴的包括科学泰斗、军队高层以及大部分曾经参与ENIAC相关工作的男性,但是琼·詹宁斯和贝蒂·斯奈德却不在其中,其他的女程序员也被排除在外。“贝蒂和我都没有得到邀请,“詹宁斯说道,“这多少会让我们感到心寒。“当这些男人和贵宾们大肆庆祝的时候,詹宁斯和斯奈德却在这个寒冷的冬夜里孤独地走在回家的路上。

最初的存储程序计算机 {#ddd2 .graf .graf—h4 .graf-after—p name=“ddd2”}

莫奇利和埃克特希望为他们参与发明的成果申请专利(并从中获利),但是他们难以在宾夕法尼亚大学实现这种想法,因为该校当时还没有明确的知识产权划分政策。虽然他们可以申请ENIAC相关的专利,但是宾夕法尼亚大学坚持要得到这些专利的免费授权,以及转让所有相关设计的权利。此外,双方在EDVAC的发明所有权归属方面也无法达成一致。这场相持不下的争执最终让莫奇利和埃克特在1946年3月底离开了宾夕法尼亚大学。

他们在费城成立了埃克特—莫奇利计算机公司的前身,他们是将学术领域的计算机技术投入商用的先驱(他们的公司以及申请中的专利在1950年被雷明顿·兰德收购,后者在经过多次并购之后先后更名为斯佩里·兰德和优利系统)。UNIVAC是他们在创业期间研制的一款计算机,购买这款计算机的客户包括美国人口普查局和通用电气公司。

在1952年的美国总统大选之夜上,如同电影明星一般的UNIVAC在CBS(哥伦比亚广播公司)电视网的大选专题报道中出尽风头。CBS的年轻主持人沃尔特·克朗凯特(Walter Cronkite{.markup—anchor .markup—p-anchor data-href=“https://en.wikipedia.org/wiki/Walter_Cronkite” rel=“noopener” target=“_blank”})不确定这台巨型机器的可靠程度能否比得上他们的专业特派记者,但他认为这也许可以为观众带来一些有趣的看点。莫奇利和埃克特从宾夕法尼亚大学请来了一位统计学家,他们共同为UNIVAC制作了一个程序,它可以将部分样本选区的早期投票情况和往届的大选结果进行比较。到了美国东部时间晚上8点30分的时候,全美大部分的投票站都还没有截止投票,而这时UNIVAC已经以100∶1的确定性预测出德怀特·艾森豪威尔将会轻松击败阿德莱·斯蒂文森(Adlai Stevenson)。CBS起初没有公布UNIVAC的预测结果,克朗凯特只是告诉观众们计算机还没有完成计算。不过随后的计票结果表明艾森豪威尔果然以悬殊的差距在大选中胜出,这时克朗凯特将直播信号转到特派记者查尔斯·科林伍德(Charles Collingwood{.markup—anchor .markup—p-anchor data-href=“https://en.wikipedia.org/wiki/Charles_Collingwood_(journalist)” rel=“noopener” target=“_blank”}),后者向观众承认,UNIVAC其实在当晚早些时候就已经预测出了这个结果,只是CBS没有将其对外公开。UNIVAC从此成为以后每届大选之夜的明星和保留节目。

虽然在宾夕法尼亚大学工作的女程序员没有被邀请参加ENIAC的庆功宴,但是埃克特和莫奇利没有忘记她们的贡献。他们聘请了贝蒂·斯奈德和琼·詹宁斯加入他们的公司。斯奈德在婚后的名字是贝蒂·霍伯顿,她继续走在了编程领域的最前端,先后参与了COBOL和Fortran编程语言的开发工作;詹宁斯则嫁给了一位工程师,并改名为琼·詹宁斯·巴尔提克。莫奇利本来也想聘请凯·麦克纳尔蒂,然而他在妻子溺水身亡之后,转而向麦克纳尔蒂求婚。他们在婚后育有5个孩子,莫奇利也继续投身到了UNIVAC的软件设计工作当中。

莫奇利还请来了这些女程序员的前辈 --- --- 格雷斯·霍珀。“他会让其他人去尝试不同的东西,“当被问到自己为什么会被说服加入埃克特—莫奇利计算机公司时,霍珀回应道,“他鼓励创新。“她在1952年开发了世界上第一个可行的编译器”A—0系统”,它可以将符号化的数学编码转换成机器语言,从而降低普通人编写程序的难度。

霍珀有着像船员一样的行事风格,所以她更加看重”同舟共济”的协作方式。她促进了开源创新方式的发展,她曾将初期版本的编译器发给编程领域的好友和熟人,请求他们协助改进这些编译器。她在担任COBOL语言(世界上最早的跨平台标准化商用计算机语言)开发项目的技术主管时也采用了这种开放式的方法。她的直觉认为编程应该是独立于机器本身的存在,这点反映了她对共治(collegiality)的偏好,她相信即使是机器也应该高效地协同工作。这同时也说明她已经提前洞察到了计算机时代的一个决定性的本质:硬件将会被商品化,而编程才是真正的价值所在。直到比尔·盖茨出现之前,大多数男性都没有这样的远见。

冯·诺依曼不屑于埃克特和莫奇利唯利是图的做法。“埃克特和莫奇利是一个商业团队,他们满脑子都是商业专利的策略,“他向一位朋友抱怨道,“我们不能采用学术团队的开放方式直接或间接地与他们共事。“作风正派的冯·诺依曼也不介意利用自己的想法来赚钱。他在1945年与IBM签订了一份个人顾问合约,为其提供自己所有发明的使用权。尽管这是一份完全合法正当的协议,但他的做法还是激怒了埃克特和莫奇利。“他将我们的想法出卖给了IBM,“埃克特指责道,“他满嘴都是骗人的假话。他是个说一套做一套的人,不值得他人的信任。”

在莫奇利和埃克特离开之后,宾夕法尼亚大学很快就丧失了作为创新中心的地位。冯·诺依曼也回到了普林斯顿大学的高等研究院,跟随他一同前往高等研究院的还有赫尔曼·戈德斯坦和阿黛尔·戈德斯坦,以及包括亚瑟·伯克斯(Arthur Burks{.markup—anchor .markup—p-anchor data-href=“https://en.wikipedia.org/wiki/Arthur_Burks” rel=“noopener” target=“_blank”})在内的多位关键工程师。“也许研究机构也会像人一样出现疲劳。“赫尔曼·戈德斯坦后来对宾夕法尼亚大学作为计算机研发中心的衰落做出了这样的反思。计算机在当时被认为是一种工具,而不是一个学术研究的对象。在学术界,几乎没有人能够预想到计算机科学将会成为一个比电气工程更为重要的学科。

尽管宾夕法尼亚大学出现了大批人才的流失,但它仍然能够在计算机发展历程当中起到一个更为重要的作用。1946年6月,计算机领域的大部分专家(包括冯·诺依曼、戈德斯坦、埃克特、莫奇利和其他几位素有嫌隙的人物)齐聚宾夕法尼亚大学参加一个叫作”摩尔学院讲座”的系列演讲和研讨会,这是他们传播计算机知识的平台。这个持续8周的系列活动还吸引了霍华德·艾肯、乔治·斯蒂比兹、曼彻斯特大学的道格拉斯·哈特里和剑桥大学的莫里斯·威尔克斯等人的参与。他们的讨论焦点是存储程序计算机结构,以及它对实现图灵所构想的通用型机器的价值。作为讨论的成果,莫奇利、埃克特和冯·诺依曼等人在宾夕法尼亚大学共同制定的设计概念成为日后大部分计算机的基础。

最初的存储程序计算机其实有两台,它们几乎同时在1948年的夏天制成。其中一台是经过改进的ENIAC。在工程师尼克·梅特罗波利斯和理查德·克利平格的协助下,冯·诺依曼和戈德斯坦研究出了一种利用ENIAC其中三个转换装置来储存基本指令集的方式。这些转换装置本来是用于储存炮弹阻力相关的数据的,不过由于这台机器不再需要计算弹道表,所以这部分的存储空间就可以用作其他用途。这次的实际编程工作也是由女性完成的,她们分别是:阿黛尔·戈德斯坦、克拉拉·冯·诺依曼(Klára von Neumann)和琼·詹宁斯·巴尔提克。“我与阿黛尔等人再度合作,我们这次的工作是为ENIAC编写一些原始代码,使得它的转换装置可以用于储存代码指令,从而将ENIAC转变成一台存储程序计算机。“巴尔提克回忆道。

重新配置的ENIAC在1948年4月投入使用,它带有一个只读存储器,这点意味着它难以在运行的过程中调整程序。此外,它的水银延迟线存储器的性能欠佳,而且需要精密的工程技术才能制作出来。一台来自英国曼彻斯特大学的小型计算机能够避免上述两个缺点,这台被称为”曼彻斯特宝贝”(the Manchester Baby{.markup—anchor .markup—p-anchor data-href=“https://en.wikipedia.org/wiki/Manchester_Baby” rel=“noopener” target=“_blank”})的机器是按照存储程序计算机的功能重新设计的,它在1948年6月开始运作。

曼彻斯特大学计算机实验室的主管是图灵的导师麦克斯·纽曼,而这台新型计算机的研发工作主要由弗雷德里克·卡兰德·威廉姆斯(Frederic Calland Williams{.markup—anchor .markup—p-anchor data-href=“https://en.wikipedia.org/wiki/Frederic_Calland_Williams” rel=“noopener” target=“_blank”})和托马斯·基尔伯恩(Thomas Kilburn{.markup—anchor .markup—p-anchor data-href=“https://en.wikipedia.org/wiki/Tom_Kilburn” rel=“noopener” target=“_blank”})完成。威廉姆斯发明了一种利用阴极射线管的存储方式,与水银延迟线相比,这种方式可以使计算机速度更快、结构更简单。这台机器的成功也促进了另外两台计算机的研发,它们分别是性能更为强大的曼彻斯特马克一号(Manchester Mark I),它在1949年4月投入使用;以及莫里斯·威尔克斯在同年5月与剑桥大学团队共同完成的EDSAC。

当这些机器的研发工作在进行的时候,图灵也在尝试制造一台存储程序计算机。在离开布莱切利园之后,他进入了英国国家物理实验室工作,这是一所位于伦敦的高级研究机构。他在这里设计了一台名为自动计算机(Automatic Computing Engine)的机器,这是向巴贝奇的两台机器致敬的作品。然而,这台自动计算机的研发工作一直无法顺利进行。到了1948年,图灵已经不能忍受这种断断续续的开发进度,而且他的同事也没有兴趣推动机器学习和人工智能的发展,对此感到失望的他决定离开国家物理实验室,转而加入麦克斯·纽曼在曼彻斯特大学的团队。

同样,当冯·诺依曼在1946年回到普林斯顿大学高等研究院之后,他马上就开展了存储程序计算机的研发工作。乔治·戴森在《图灵的大教堂》(Turing’s Cathedral{.markup—anchor .markup—p-anchor data-href=“https://books.google.com/books/about/Turing_s_Cathedral.html?id=XyzstMs30GYC&source=kp_book_description” rel=“noopener” target=“_blank”})一书当中详尽记录了这项工作的历程。这台研发中的计算机被称为”IAS机”(IAS Machine),时任高等研究院院长弗兰克·艾德洛特(Frank Aydelotte)以及德高望重的研究院理事奥斯瓦尔德·维布伦都是这个项目的坚定支持者。他们竭力抵御了其他研究员对这个项目的批评 --- --- 后者认为计算机器的研发项目将有辱高等研究院作为理论思维殿堂的使命。“他公开表明了自己对黑板和粉笔之外的数学工具的浓厚兴趣,这种做法显然让他的一些最为饱学多识的同事感到愕然,甚至是惊恐,“冯·诺依曼的妻子克拉拉回忆道,“他希望制造一台电子计算机器,然而这个计划在高等研究院的神圣穹顶之下至少是不被赞赏的。”

高等研究院本来为逻辑学家库尔特·哥德尔的秘书安排了一个办公室,但由于哥德尔本人不需要秘书,所以这里就成为冯·诺依曼和他的团队成员的秘密研发基地。他们在1946年发表了多篇论文,这些论文详细地描述了他们的计算机设计。他们把这些论文分别寄给了美国国会图书馆和美国专利局,他们这样做并不是为了申请专利,而是为了声明他们想要将这些研究成果纳入公共领域。

他们的机器在1952年开始完全投入运作,然而,在冯·诺依曼前往华盛顿加入原子能委员会之后,这台机器也被逐渐废弃了。“我们的计算机团队的衰落无论对于普林斯顿大学还是整个科学界来说都是一场灾难,“高等研究院成员及物理学家弗里曼·戴森(Freeman Dyson,乔治·戴森的父亲)如是说,“这意味着在20世纪50年代这个关键时期,我们竟然没有一个可以聚集最高水平的计算机人才的学术中心。“相反,从20世纪50年代开始,计算机技术的创新阵地已经转移到了企业领域,引领这些创新的正是费兰蒂(Ferranti)、IBM、雷明顿·兰德和霍尼韦尔这样的公司。

计算机创新阵地的转移将我们重新带回了专利保护的话题。如果当时冯·诺依曼和他的团队没有离开计算机技术创新的最前沿,并把他们的创新成果继续留在公共领域,这种开源的创新方式会不会为计算机带来更加迅速的发展呢?抑或市场竞争和知识产权带来的资本回报可以刺激更多的创新出现呢?对于互联网、万维网和某些类型的软件来说,开放模式被证明是更加可行的。但是对于硬件来说,比如计算机和微型芯片,专利保护制度正是在20世纪50年代涌现的大量硬件创新的源头。专利化的创新方式能够行之有效(尤其是在计算机领域)的原因在于,大型企业可以更好地完成计算机的研发、制造和营销工作,而它们需要通过专利制度来筹集运营的资金。此外,在20世纪90年代中期以前,硬件一直要比软件更容易得到专利保护。然而,这种专利保护制度也对硬件创新产生了负面的影响:专利化的经营模式会使企业变得故步自封,这点让它们错过了在20世纪70年代初出现的个人电脑革命。

机器可以思考吗? {#d669 .graf .graf—h4 .graf-after—p name=“d669”}

在研究如何制造存储程序计算机的过程中,艾伦·图灵将注意力转向了埃达·洛夫莱斯在一个世纪之前所做出的断言。埃达在巴贝奇分析机论文的最后一条”注解”中提出”机器不可能真正地思考”这一观点。图灵对此产生了这样的疑问:如果一台机器可以根据已处理的数据调整自己的程序,难道这不是某种形式的学习吗?这种方式可以发展成为人工智能吗?

关于人工智能和人类意识的问题都可以追溯到非常久远的历史。对于这个领域的大多数问题,笛卡儿都能够运用现代的语言进行表述。“我思故我在”这个著名的哲学观点正是出自他在1637年出版的《谈谈方法》(Discourse on the Method{.markup—anchor .markup—p-anchor data-href=“https://en.wikipedia.org/wiki/Discourse_on_the_Method” rel=“noopener” target=“_blank”})一书中。笛卡儿在这本书中写道:

如果存在一些跟我们的身体类似的机器,它们能够在各个方面尽可能接近地模仿我们的动作,我们还是可以利用两条非常可靠的标准来判明它们并不是真正的人类。第一条是…这种机器绝不能对自己接收到的任何内容都做出条理清晰的回应,而这是最愚蠢的人都能办到的。第二条是,虽然某些机器在完成某些工作的时候可以做得跟我们一样好,甚至可以做得更好,但是它们肯定做不好其他的事情,这点表明它们的行为并非建立在理解的基础上。

图灵长期以来都醉心于思考计算机可以如何模仿人类大脑的活动,在参与了加密文字破解机器的研发工作之后,他对这方面的兴趣变得更加浓厚。1943年年初,正当巨人计算机在布莱切利园进行设计的时候,图灵远渡重洋来到位于下曼哈顿区的贝尔实验室。这次访问的目的是与一支研究电子语音加密技术的团队进行交流,这项技术可以利用电子方式对电话通话内容进行加密和解密。

图灵在那里遇到了一位为人风趣的天才克劳德·香农。这位曾经的麻省理工学院研究生在1937年完成了一篇影响深远的硕士论文,他在这篇论文当中展示了利用电子电路执行布尔代数(由逻辑命题转换而成的代数方程)的方式。香农和图灵开始在下午茶的时候聚在一起进行长时间的讨论。他们两位都对脑科学很感兴趣,而且他们发现各自在1937年发表的论文之间存在一个共同点:它们都证明了采用简单二进制指令操作的机器不仅可以用于解决数学问题,同时也适用于所有的逻辑问题。由于逻辑是人脑思维的基础,因此机器在理论上可以模仿人类的智能。

“香农不仅想(向机器)输入数据,他还想输入文艺的东西!“图灵在一天吃午饭的时候向贝尔实验室的同事们说道,“他想对机器放音乐!“在另一天的午餐时,图灵继续滔滔不绝地发表自己的言论,他高亢的声线让餐厅里的高管人员都听得一清二楚:“不对,我没有兴趣做出一个超级大脑。我所追求的只是一个平庸的大脑,就像是美国电话电报公司(AT&T)的总裁一样。”

图灵在1943年4月返回布莱切利园,这时他与一位叫作唐纳德·米基(Donald Michie{.markup—anchor .markup—p-anchor data-href=“https://en.wikipedia.org/wiki/Donald_Michie” rel=“noopener” target=“_blank”})的同事成为好友,他们经常会在晚上到附近的一家酒吧下象棋。他们讨论了制作一台会下象棋的计算机的可能性。图灵没有打算利用强大的处理能力来计算出每一步棋可能的走法,他关注的焦点是能否让机器通过不断重复的练习”学会”如何下象棋。换句话说,机器也许可以尝试不同的开局走法,然后从每次的胜利或失败中完善自己的策略。如果这种方法是可行的话,这将会是一个足以令埃达·洛夫莱斯感到震惊的重大飞跃:机器不仅可以按照人类给出的指令进行工作,还可以从经验中学习,同时不断完善自己的指令。

“人们一直都说计算机器只能用于执行指令,“图灵在1947年2月的一场演讲中向伦敦数学学会的成员讲解道,“但是它们必须按照这种方式使用吗?“然后他谈论到了能够调整自身指令表的新型存储程序计算机的前景。“它就像是一个学徒一样,不仅掌握了师傅的大部分技艺,还在其中加入了更多自己的心得。我认为当这种情况出现的时候,我们应当把它看成是机器拥有智能的表现。”

在听完图灵的演讲之后,在座的听众陷入了一片沉默,他们都被图灵的想法震惊了。图灵当时在英国国家物理实验室工作,他的同事也无法理解他对制作会思考的机器的执着。国家物理实验室的主管查尔斯·达尔文爵士(Sir Charles Darwin,进化生物学家达尔文的孙子)在1947年向图灵的上司写信道:“图灵想要将自己对机器的研究拓展到生物学的领域”,并尝试解决”机器能否从经验中学习”这一问题。

“机器也许有一天能够像人类一样思考”这个令人不安的想法在当时激起了强烈的反对,而且这个问题从出现以来就一直争议不断。在这些反对的声音当中,既有来自宗教方面的抗议(这是意料之中的事情),也有从内容和语气上表现出来的情感抵触。李斯特奖章得主、知名脑外科医生杰弗里·杰斐逊爵士(Sir Geoffrey Jefferson)在1949年的著名获奖致辞中提出了这样的观点:“除非机器能够凭借思想和情感写出一首十四行诗,或者做出一部协奏曲,而且这些作品都不是符号的随意拼凑,否则我们是不会承认机器可以等同于人脑的。“作为回应,图灵向《泰晤士报》的记者说道:“这种比较也许有失公允,因为由一台机器写成的十四行诗,其他机器大概会比我们更能欣赏。“这个回应似乎有些无礼,但同时也是耐人寻味的。

之前的研究为图灵的下一篇重要论文打下了基础,这篇题为《计算机器与智能》(Computing machinery and intelligence)的论文在1950年10月发表于哲学期刊《心灵》(Mind)上。他在其中提出了一个被称为”图灵测试”(Turing Test)的概念。论文的开篇是一条明确的声明:“我准备探讨’机器能思考吗’这个问题。“然后,童心未泯的图灵设计了一个游戏(目前还有人在实践和争论这个游戏)来解释这个问题的实证含义。他为人工智能给出了一个完全可操作的定义:如果一台机器输出的内容和人类大脑别无二致的话,那么我们就没有理由坚持认为这台机器不是在”思考”。

图灵测试,也就是图灵所说的”模仿游戏”(the imitation game)的操作很简单:一位询问者将自己的问题写下来,发给处于另外一个房间之中的一个人和一台机器,然后根据他们给出的答案确定哪个是真人。图灵给出了一个问答过程的示例:

问:请以”福斯桥”(Forth Bridge)为主题写一首十四行诗。

答:我不会回答这道题,我从来没有写过诗。

问:34 957加70 764等于多少?

答:(在经过大概30秒之后给出答案)105 621。

问:你会下象棋吗?

答:会的。

问:我在K1处有棋子K,而且没有其他棋子。你在K6处有棋子K,在R1处有棋子R。现在轮到你了,你要下哪一步棋?

答:(在经过15秒之后)棋子R走到R8处,将军。

图灵在这个示例对话中做了一些手脚。如果仔细查看上面的答案的话,我们可以发现回答者在计算加法的时候出现了一个小错误(正确答案是105 721)。这点就足以证明该回答者是真人了吗?也许可以。但这也有可能是一台狡猾的机器正在冒充人类。图灵也轻易地反驳了杰弗里关于机器不能写作十四行诗的异议,因为给出上述答案的有可能是一个承认自己不会写诗的人类。图灵认为利用能否写作十四行诗作为判断是否为人类的标准是很难操作的。为了证明这点,他继续在论文中设计了如下的询问对话:

问:你的十四行诗的第一行写着”我怎能将你与夏日相比”,如果将”夏日”换成”春日”会不会更好?

答:这样就不押韵了。

问:那如果换成”冬日”呢?这样就正好押韵了。

答:的确如此,但是没有人喜欢被比喻成冬日。

问:匹克威克先生(Mr. Pickwick)会让你想起圣诞节吗?

答:有点儿。

问:但圣诞节就是一个冬日啊,而且我认为匹克威克先生应该不会介意这个比喻。

答:我觉得你是在开玩笑。人们所说的冬日是指一个普通的冬日,而不是像圣诞节这样的特殊节日。

在图灵看来,仅凭这样的回答几乎不可能判断出回答者是人类还是冒充人类的机器。

至于何时会出现能够通过图灵测试的计算机,图灵给出了自己的预测:“我相信在50年左右的时间内,计算机编程技术将可能…实现可以顺利通过模仿游戏的计算机,普通询问者在经过5分钟的询问之后的判断准确率将不高于70%。”

图灵预想到自己对思考的定义将会引来许多质疑,所以他尝试在论文中逐一反驳它们。针对来自神学方面的质疑,也就是上帝只将灵魂和思考能力赐给了人类,图灵表示这种观点实际上是对”上帝的全知全能的严重限制”。他提出了一个问题:上帝是否”有自由向一头合适的大象授予灵魂”?想必他是可以这样做的,那么按照同样的逻辑,上帝当然也可以随心所欲地向一台机器授予灵魂。这番话从不信仰上帝的图灵口中说出还是有些讽刺意味的。

其中最为有趣的一个异议(特别是从本书的内容来看)来自埃达·洛夫莱斯。“分析机不会主动创造任何东西,“她在1843年写道,“它可以根据我们能够给出的任何指令完成任务。它可以遵循分析,但它没有能力预见任何的分析关系和事实。“换句话说,跟人类大脑不一样的是,机械装置无法拥有自由意志,也不能产生自主性,它只能按照既定的程序执行任务。图灵在自己1950年的论文中将这个观点称为”洛夫莱斯夫人的异议”,并专门安排了一节的内容来讨论它。

对于这个异议,图灵提出了一个极具独创性的反驳观点:机器也许可以进行学习,从而逐渐发展出自己的主动性,并掌握产生新想法的能力。“与其尝试编写一个可以模拟成人大脑的程序,为什么不尝试模拟儿童的大脑呢?“他问道,“在经过适当的教育之后,它将有可能成长为成人的大脑。“他承认机器的学习过程会跟人类儿童不一样:“举个例子,它不会有双脚,所以老师不能叫它帮忙装满教室外面的煤斗。也许它也没有眼睛…所以如果把这个怪物带到学校的话,它肯定会被其他小朋友过分地取笑。“因此这台”儿童机器”将需要使用其他的方式进行教导。图灵提出了一种奖励和惩罚机制,它可以促使机器重复或者避免某些行为,最终这台机器将会培养出自己对于思考的概念。

图灵的批评者提出的另外一个异议是,就算机器可以模仿思考,它也不会具有真正的意识。当参加图灵测试的人类在遣词造句的时候,他会将这些单词与现实世界的意义、情感、经验、感觉和观念联系起来。机器却不会这样做。如果没有这些联系的话,语言也只是一个脱离实际意义的游戏。

这个异议为图灵测试带来了一轮持续时间最长的质疑 --- --- 哲学家约翰·希尔勒(John Searle{.markup—anchor .markup—p-anchor data-href=“https://en.wikipedia.org/wiki/John_Searle” rel=“noopener” target=“_blank”})在1980年提出了一个叫作”中文房间”(Chinese Room{.markup—anchor .markup—p-anchor data-href=“https://en.wikipedia.org/wiki/Chinese_room” rel=“noopener” target=“_blank”})的思维实验。这个实验的内容是,在一个房间里面有一个以英语为母语,而且对中文一窍不通的人,他手上有一本详细列出所有中文搭配规则的手册。他会从房间外收到一些以中文写成的问题,然后根据这本手册写出中文的回答。只要有一本足够好的指导手册,房间里的回答者就可以让房间外的询问者相信他的母语是中文。尽管如此,他不会理解自己给出的任何一个回答,也不会表现出任何的意向性。按照埃达·洛夫莱斯的话来说,他不会主动地创造任何东西,只是根据得到的任何指令完成任务。同样地,对于参加图灵测试的机器来说,无论它可以如何成功地模仿人类,也不会理解或者意识到自己所说的东西。我们不能因此认为这台机器可以”思考”,正如我们不能认为使用一本大型指导手册的人可以理解中文一样。

有人对希尔勒的异议提出了反驳:虽然房间中的人本身不是真正理解中文,但是这个房间包含的完整系统 --- --- 人(处理器)、指导手册(程序)以及写满中文的文件(数据),这三者作为一个整体是确实能够理解中文的。这两种观点的争议到目前还没有定论。时至今日,图灵测试及其相关的异议仍然是认知科学领域中最具争议性的一个话题。

在《计算机器与智能》发表之后的几年时间里,图灵似乎很喜欢参与到自己惹出的争论当中。他以自己带有讽刺性的幽默感取笑了那些关于十四行诗和人类高等意识的主张。“终有一天,女士们会带着她们的计算机到公园散步,并且互相诉说’我的宝贝计算机在今天早上跟我说了这么一件有趣的事情’!“他在1951年调侃道。正如他的导师麦克斯·纽曼后来所说的:“他在解释自己的想法时会提出一些引人发笑的比喻,但它们又是恰到好处的,这点让他成为一位讨人喜欢的同事。”

在图灵参与的讨论之中有一个反复出现的主题 --- --- 性欲和情感对人类思考的影响,而机器是不会受到这些影响的,这个主题也体现在图灵后来经历的悲剧当中。针对这个主题的一次公开讨论出现在1952年1月,当时图灵和脑外科医生杰弗里·杰斐逊爵士参加了由BBC(英国广播公司)举行的一场辩论会,担任辩论主持的是麦克斯·纽曼和科学哲学家理查德·布雷斯韦特(Richard Braithwatie)。“一般而言,一个人的喜好是由他的欲望、冲动和本能决定的。“布雷斯韦特表示如果要做出一台真正会思考的机器,“它似乎需要配备一些可以对应各种欲望的东西”。纽曼补充说机器”只有相当有限的欲望,而且它们在感到尴尬的时候也不会脸红”。杰斐逊甚至说出了更为出格的言论,他多次以”性冲动”作为例子,并反复提到了人类的”情感和本能,比如性欲”。他指出人类会受制于”性冲动”,而且”有可能会因此而变得愚蠢”。他谈到了太多关于性欲对人类思考的影响的内容,以至于BBC的编辑们不得不在广播的内容中剪掉他的部分言论,其中包括他表示自己是不会相信机器能思考的,除非他亲眼看到一台机器抚摸另外一台女性机器的大腿。

当时图灵还不想向外界透露自己身为同性恋者的事实,所以他在这部分的讨论当中保持了沉默。这场辩论会在1952年1月10日完成录制。在随后的几个星期里,图灵卷入了一系列可能让机器无法理解的事件当中。图灵在一篇小故事中提到了他打算如何庆祝自己刚刚完成了一篇科学论文:“自从去年夏天在巴黎遇到那位士兵之后,他已经维持了一段时间的单身生活。现在既然他的论文已经完成,他也应当去找另外一位男同志了。他知道在哪里可以找到合适的对象。”

在曼彻斯特的牛津街上,他偶然遇到了一位19岁的工人阶级流浪者阿诺德·穆雷(Arnold Murray)。在完成了BBC的节目录制之后,他邀请穆雷搬到他家一起居住。一天晚上,图灵向年轻的穆雷讲到了自己做过的一个梦,他梦到自己在和一台邪恶的计算机下象棋,他先激怒了它,然后逗它开心,最后在它麻痹大意的时候击败了它。他们两人的关系在随后的日子里变得越来越复杂,直到有一天,图灵在回家之后发现自己的住处遭窃,犯人正是穆雷的一个朋友。在向警方陈述这起案件的时候,他最终承认了自己和穆雷的同性恋关系,于是警方以”严重猥亵”的罪名逮捕了图灵。

在1952年3月的庭审上,图灵承认了自己的罪名,但他明确表示自己不会为此感到后悔。麦克斯·纽曼也作为图灵的品行证人出席了这场审讯。在被宣判有罪和剥夺参加机密工作的权限之后,图灵面临着两个选择:坐牢或者缓刑,而第二个选择的条件是需要接受荷尔蒙治疗,也就是通过注射合成的雌激素来抑制性欲,这种治疗方法就像是把人当成由化学药物控制的机器一样。他选择了后者,这项治疗持续了一年的时间。

图灵起初似乎能够从容面对这些罪责,然而在1954年6月7日,他在咬下一口浸染过氰化物的苹果之后便与世长辞了。按照他的好友的说法,他一直以来都对《白雪公主》当中恶毒的王后将苹果浸在毒药里面的情景十分着迷。他的尸体最后被发现躺在床上,口吐白沫,他的体内被检测出了氰化物,身边还放着一个被咬过的苹果。

这是一台机器会做出的事情吗?

(沃尔特·艾萨克森. 创新者[M]. 中信出版社, 2016.) ::: ::: :::

← 返回文章列表