科技: 人物 企业 技术 IT业 TMT
科普: 自然 科学 科幻 宇宙 科学家
通信: 历史 技术 手机 词典 3G馆
索引: 分类 推荐 专题 热点 排行榜
互联网: 广告 营销 政务 游戏 google
新媒体: 社交 博客 学者 人物 传播学
新思想: 网站 新书 新知 新词 思想家
图书馆: 文化 商业 管理 经济 期刊
网络文化: 社会 红人 黑客 治理 亚文化
创业百科: VC 词典 指南 案例 创业史
前沿科技: 清洁 绿色 纳米 生物 环保
知识产权: 盗版 共享 学人 法规 著作
用户名: 密码: 注册 忘记密码?
    创建新词条

最新历史版本 :《优雅人生》 返回词条

  • 编辑时间: 历史版本编辑者:方兴东
  • 内容长度:图片数:目录数:
  • 修改原因:
本书不仅将计算机领域的先锋人物之一格雷斯·霍珀——这位伟大女性的人生历程和在计算机编程历史中所扮演的重大角色进行了详尽且客观的描述,同时也对计算机编程的发展和其中重要人物的作用进行了细致的叙述。
目录

[显示全部]

基本信息回目录

优雅人生(格雷斯·霍珀和信息时代的创新)
作者:(美)拜尔|译者:包艳丽//刘珍//陈菲 
 市场价: ¥39 元
ISBN:9787111325864
出版社:机械工业
2011-01-01 第1版
2011-01-01 第1次印刷
开 本:16开 
页 数:247页
类 别: 历史.地理 -> 历史 -> 传记 

内容提要回目录

    本书不仅仅是一本人物传记类图书,也是一本计算机编程史的记录本。本书不仅将计算机领域的先锋人物之一格雷斯·霍珀——这位伟大女性的人生历程和在计算机编程历史中所扮演的重大角色进行了详尽且客观的描述,同时也对计算机编程的发展和其中重要人物的作用进行了细致的叙述。她对计算机领域的贡献不可磨灭。她发现了计算机程序中的第一个Bug,也创造了计算机世界中最大的Bug——Y2K(千年虫)。她创造了世界上第一种商业编程语言COBOL,并为之后的高级程序设计语言定义了模型。作者为了客观准确地描述计算机发展进程及霍珀的贡献,查阅了数家著名学院或机构的数据库,从而收集到更多有力的证据。
    推崇女性独立自强的读者们应该阅读此书,因为格雷斯·霍珀的个人魅力及其魄力是很值得欣赏和学习的;计算机和编程的从业者和爱好者也应该阅读此书,因为其中对计算机领域的发展和编程的记录值得思考和借鉴。

媒体推荐回目录

    “很高兴终于读到了这样一部作品,它着重讲述格雷斯·霍珀的奇妙人生和对编程语言发展所作出的贡献,而不只是简单地罗列关于‘了不起的格雷斯’的那些虚构神话故事。作者呈现了许多霍珀有趣且真实的生活故事,而这些我从未在其他作品中读到过。这本书将主人公作为一个人进行描写,并且以她所处时代中的各种奇怪的个人和社会问题为背景。与此同时,作者还对以技术为工作方向的女性所经历的社会地位的变迁表达了自己的见解,并详细描述了此变迁为主人公及其女性同事们所带来的诸多矛盾和挣扎。”
    ——M. R. 威廉斯,卡尔加里大学计算机科学学院名誉教授
    “当我还是贝尔实验室的一位年轻的程序员时,我曾有幸见到了格雷斯·霍珀。她在谈论伟大技术和计算机的力量的时候,她的年轻思维的创造力、公众演讲能力和协作精神为之增色不少。这本书以一种强势震撼的方式将所有的这些主题融合在了一起,并且将主人公放在了属于她的位置上:我们这个世界所依赖的计算机技术的伟大创始人。”
    ——露西·桑德斯,美国国家女性与信息技术中心CEO及共同创始人

作者简介回目录

    Kurt W.Beyer曾是美国海军军校的教授,他定期进行技术革新进程方面的演讲。他是一家数字媒体服务公司的合伙人,并且拥有多项关于高速数据处理方面的专利。
作者:(美国)拜尔(Kurt W.Beyer) 译者:包艳丽 刘珍 陈菲
格雷斯·霍珀(1906-1992)。她被人们称为“计算机程序之母”、“美国海军计算机化之母”,在媒体评选的“IT界十大最有远见的人才”中,她作为唯一的女性赫然在列,与阿兰·图灵、史蒂夫·乔布斯、比尔·盖茨等一同入选。
她对计算机领域的贡献不可磨灭:她发现了计算机程序中的第一个Bug,同时也创造了计算机世界最大的Bug——千年虫(Y2K);她实现了第一种编译语言和编译器;她创造了世界上第一种商业编程语言COBOL,并为之后的高级程序设计语言定义了模型。她一生获得无数的荣誉。她是美国海军少将。为表彰她对美国海军的贡献,美国海军将一艘驱逐舰命名为“格雷斯号”:加利福尼亚海军数据处理中心也以她的名字命名。她得到过许多殊荣,如计算机科学年度人物奖、国家技术奖、海军功勋服务奖、国防部卓越服务奖等。1971年,为了纪念现代数字计算机诞生25周年,美国计算机学会特别设立了“格雷斯·霍珀奖”,由霍珀博士颁发给当年最优秀的30岁以下的青年计算机工作者。1992年1月1日,格雷斯·霍珀去世,葬于阿灵顿美国国家公墓。Kurt W.Beyer,曾是美国海军军校的教授,他定期进行技术革新进程方面的演讲。他是一家数字媒体服务公司的合伙人,并且拥有多项关于高速数据处理方面的专利。

目录回目录

前言
第1章  了不起的格雷斯神话
  年轻时的霍珀:协作性的叛逆
  编程的发明
  原始资料来源
  重建过去:口述历史和其他历史文物的使用
  分散式传记
第2章  格雷斯·穆雷·霍珀的重生
  格雷斯·穆雷·霍珀:数学家和教师
  建立事业:在瓦萨教学
  寻找新的道路
  她余生的第一天
第3章  计算机编程的起源
  驯服机械怪兽
  世界上第一个数据处理中心
  发明编码系统
  第一个电脑黑客
  计算机中的飞蛾
  硬件故障
  为故障编码
第4章  哈佛计算实验室
  对“艾肯博士的未来问题”的解答
  艾肯掌权
  实验室文化与战争现实
  战后环境
  战后革新与子程序的发展
  子程序:同步发明的一个范例
第5章  计算界的开端
  战时孤立
  约翰·冯·诺依曼与马克一代
  冯·诺依曼的“初稿”
  公认计算机历史的创造
  霍珀指南的内容
  霍珀的历史版本
  IBM的自动顺序控制计算机:同样的机器,不同的历史
  不同的历史,不同的工作日程
  传播消息:哈佛的战后公关努力
第6章  哈佛1947年的大型数字计算机专题讨论会
  知识共享
  活着的巴贝奇
  哈佛专题研讨会
  业余时间
  专题研讨会的结果
  预示结局的征兆:人才的流失
  美国计算机协会的成立
  霍珀在计算机领域的地位
第7章  凝视深渊
  EMCC公司
  如何销售计算机
  贝蒂·斯奈德(霍尔伯顿)
  了解EMCC公司的规矩
  不合时宜的死亡
  人事短路
  潜在救星:雷明顿·兰德公司
第8章  计算机教育
  编译器的发明
  雷明顿·兰德公司和销售额及客户支持的挑战
  计算机教育
  分布式发明:编译器研究扩大
  编译路径
  分布式发明:扩大创新网
  制造转换器
  赢得主管们全身心的支持
第9章  IBM回应雷明顿·兰德公司的挑战
  IBM:辛勤工作的受压迫者,还是独裁者
  雷明顿·兰德公司的营销妙计
  IBM在冷战中的获益
第10章  面对问题语言的发展
  自动编程部门和MATH.MATIC
  解决效率矛盾:约翰·巴克斯和FORTRAN语言
  创造商业语言:B.0和FLOW.MATIC
第11章  分散式发明的成熟:格雷斯·霍珀和COBOL的发展
  委员会的发明
  短期委员会和COBOL面向商业语言规范
  FACT和语言标准化政治
  COBOL:编程语言的成功
  格雷斯·霍珀和COBOL语言推广
  COBOL语言标准化和海军
  COBOL语言和技术终结
第12章  发明信息时代
  编程历史背景下霍珀的职业生涯
  技术创新的经验
  霍珀在编程界的地位
  COBOL语言:分散式发明的典范
  优雅人生 2.0
参考资源

导语回目录

        一部关于IT领域先驱人物格雷斯·霍珀的好莱坞式传记电影可能会这样拍摄:一位年轻的教授离开象牙塔中的学术界,而在珍珠港遇袭之后选择了参军报效祖国,然后发现自己已身处计算机革命最前线。在这个以男性为主导的计算机领域,为了取得成功,她努力奋斗;她几乎差点被个人问题击败,但仍然坚持了下来,并且最终成为了一名在计算机领域里享誉盛名的女杰,成为万千人心中的女英雄,并且被誉为计算机编程的创始人。在霍珀的整个后半生,大众媒体都讲述着关于她的人生故事的简写版。在这本书中,作者超越银幕广播的神话,另辟蹊径,旨在揭露一个更加真实的霍珀、一个激情四射又性格复杂的女人、一个事业可与战后计算机领域的飞速发展相提并论的女人。 
    霍珀把自己变成了哈佛大学霍华德·艾肯的战时计算实验室中的“男性之一”,后来,她加入了埃克特和莫克利创办的计算机公司(EMCC)。在那个鼓励女人专注家务和抚养孩子等事务的年代,反叛又合作的她在男性主导的军事和商业机构中产生了极大的影响。霍珀最伟大的技术成就是她创造出了能够让人们用语言而不是1和0来与进行计算机交流的工具。 

前言回目录

    我第一次遇到格雷斯·穆雷·霍珀少将是在我还只是二个少年的时候,那是在我姐姐从College of william and Mary毕业的典礼上。这位激情似火的演讲者激发了我的想像力,并且对我自己的职业选择产生了影响,从我最初成为一名海军军官,到后来成为一名学者,最后成为一名信息技术行业的企业家,都是如此。
    霍珀是海军界赫赫有名的人物,但是当我来到加州大学伯克利分校时,我却惊奇地发现,那里的许多人对她的成就一无所知。20世纪90年代的伯克利正处于“网络公司”兴起的全盛时期,而这一新兴行业正由一群年轻的男性企业家统治着,他们睡在办公桌下,怀揣着股票期货的梦想,并且认为他们正在首次开辟信息时代。
    在卡斯林·卡森(Cathryn Carson)、杰克·拉斯西(Jack Lesche)、托德·拉·波特(Todd La Porte)、罗杰·哈恩(Roger Hahn)和托马斯·休斯(Thomas Hughes)的指导下,我开始将信息时代的演进过程拼合到一起。
    格雷斯·霍珀不仅在为计算机产业奠定基础方面扮演了核心角色,而且她的身边也围绕着许多其重大贡献被忽视或遗忘了的杰出人士。在此书中,我以霍珀的早期职业生涯为主线,将他们的故事穿插在其中。
    我在伯克利的那段时间里,卡斯林·卡森对我影响巨大。对她的职业道德操守和对她对于此项目作出的奉献,我将永远感激不尽。能在宁静的仲夏午后向技术历史领域的创始人之一托马斯·休斯学习,我也倍感荣幸。他帮助我了解了科技是如何演进和成长的,以及诸如霍珀这样的系统创建者在技术革新的进程中扮演了怎样的角色。
    这些年来,我一直埋头于全国各地的档案馆。这些档案馆里的管理员在筛选文件方面给予我十分珍贵的帮助,尤其是工作于华盛顿史密斯森国立美国历史博物馆档案中心(Archives Center at the Smithsonian's National Museum of American History)、明尼苏达大学查尔斯·巴贝奇学院的信息技术历史中心(Challes Babbage Institute's Center for the History of Information Technology)、哈佛大学剑桥分校档案馆和费城宾夕法尼亚大学Van Pelt Library的好心人给予的帮助值得谨记。特别感谢Alison Oswald以及Jeffrey Yost和Arthur Norberg。我尤其感激Arthur基于其雷明顿·兰德(Remington Rand)研究所表达的见解。
    将调查研究转变成手稿需要集众人之力,许多人在这个作品完成的过程中给予了很大的支持和帮助。我的妻子乔·安娜一直是我灵感和思想的源泉,并且忍受了我无数个深夜工作的骚扰。蒂姆·格斯塔(1Tim Kasta)是难得的知音,我们在享受加州酒的过程中讨论了技术革新的错综复杂之处。我在海军学院的同事,尤其是鲍勃·阿尔蒂加尼(Bob Artigiani)和大卫·皮勒(David Peeler)对稿件进行了精妙的点评。保罗·塞卢兹(Paul Cerruzi)、W·伯纳德·卡尔森(W.Betnard Carlson)和凯瑟琳·威廉斯(Kathleen williams)提供了宝贵的支持和反馈意见。在稿件的最后准备期间,Smithsonian's Lemelson的乔伊斯·贝迪(Joyce Bedi)和Art·莫勒拉(Art Molella)费心最多。特别要感谢乔伊斯对安纳波利斯的损坏书的长期协商。对于她在我将成为父亲的那段时间里所给予的坚定支持,我将永远铭记在心。

“了不起的格雷斯”或者“COBOL编译语言之母”回目录

前不久,我曾在一个流行网络搜索引擎上输入了“格雷斯·霍珀”,结果出现了几百万的相关网页。尽管这个数字在与其他20世纪名人偶像如J. F. 肯尼迪(John F. Kennedy)或者艾尔维斯·普雷斯利(Elvis Presley)的搜索结果的数量相比时完全不值一提,但是霍珀在数字上毫无疑问是网络上最受欢迎的计算机先驱人物之一。热门的搜索结果很多都是各种各样的崇拜型网站,这些网站都致力于宣传“了不起的格雷斯”或者“COBOL编译语言之母”和无数的霍珀语录。对其形象的搜索得到的是成百上千张在其事业晚期骄傲地穿着海军军服,但身材矮小且已满脸皱纹的计算机程序员照片。

毋庸置疑的是,格雷斯·穆雷·霍珀是在其职业生涯晚期开始小有名气的,或者说是在她开始进行个人电脑编程和编程事业的时候。但是,如果不是因为1983年3月哥伦比亚广播著名的电视秀《60 Minutes》中的一次访谈播出,那么霍珀的事业也许就会沉寂得不为公众所知。在那次访谈中(由莫利·塞弗(Morley Safer)主持),无礼的霍珀玩笑似地反映了她的生活观,那时她还只是一名上校。她的故事是经典的好莱坞风格的传奇:一位年轻有为、双眸闪亮的数学教授在第二次世界大战期间放弃她的工作,去服务她的祖国,并且偶然间发现自己身处计算机革命的前线,并且正面临着技术难题和性别歧视。在勤奋努力和几近顽强的坚持不懈下,她帮助推进了新技术的发展,其结果就是沿着信息时代昙花一现的轨迹出现一次事业高峰。

在观看《60Minutes》访谈节目的亿万观众中,有一位是美国共和党议员菲利普·克雷恩(Philip Crane)(伊利诺伊州众议院议员)。他立即发起了一项提案——使这位杰出女性所作的贡献得到应有的认可。这项经由众议院通过的议案推荐格雷斯·霍珀上校被特别任命为级别尊贵的海军准将。后来,她被推荐为海军少将,并且授予了更多荣誉和奖励。1985年,海军的最新数据自动化中心(Data Automation Center)更名为格雷斯·穆雷·霍珀中心。1997年,海军最新和最先进的导弹驱逐舰被命名为“USS格雷斯·霍珀”号。

《60Minutes》的访谈所促成的嘉许,她当之无愧,但是这次访谈也表明了言语与现实之间日益扩大的分歧。自1983年以后的公众论述都存有并永远保持着格雷斯·霍珀的“神话”,将她描述成为一位只对计算机编程负责的英雄先驱人物。而且,正如在她晚年接受的采访、相关的文章和演讲中证明的,霍珀在很大程度上都很享受受人瞩目,而这只是进一步深化了她的神话。编写本书的目的在于在计算机产业初期的背景下,剥开言辞的外衣,发掘一个更加真实的格雷斯·霍珀。在本书中所描绘的年轻强劲、活力四射的格雷斯·霍珀远比那些著名媒体所描绘的年老的海军上将更加复杂,并且更加具有人的本性。

年轻时的霍珀:协作性的叛逆回目录

关于霍珀少将晚年时期的轶事俯拾皆是,大多数人都是在强调她最受人赞美的品质:近乎反抗的傲慢。然而,她人生的最初36年却以一定程度的坚守传统为特征。在20世纪20年代,来自美国东北部的经过特许的女性追求更高等的教育并没有什么稀奇的。事实上,在20世纪20年代到30年代初这段时期,获得了数学博士学位的女性所占的百分比直到20世纪80年代才又一次达到。这提醒我们,美国女性解放的历史并非是呈直线型的,其中出现了几次机遇和退后,而不是一直持续稳定地进步。例如,在第一次世界大战之后的十年里不断增多的机遇,接着在大萧条时期出现的紧缩。霍珀在20世纪20年代成年,而她的公开选择和私人选择都是与她的家庭和社会的意愿相一致的,而不是相矛盾的。

珍珠港遇袭和相继而来的动员为女性创造了前所未有的事业机遇。劳动力的大规模重组放开了大量在1941年12月7日前专为男性所设的职业。当时,最具象征意义的文化形象铆钉工人萝西(Rosie the riveter)代表了数亿在劳动力方面取代了男性的女性,因为男性都派遣到了欧洲和太平洋地区。与她那一代数十亿的其他女人一样,霍珀也在这次劳动力转移中获益良多。而珍珠港事件正是格雷斯·霍珀私人生活及其事业的一个分水岭。在这个意义重大的日子之后的几个月里,她与丈夫离了婚,离开了在瓦萨学院稳定的终身任职的工作,并且加入了海军。然后,她成为了那个年代最性别化的组织中的一名军官。她的军衔授予了她权威的外表服饰:制服、头衔、薪资、特权。军衔、协定和传统有助于压制人们对在社会服务职位上的女性的社会偏见。

军衔所带来的好处显而易见,新任命的霍珀上尉在战争期间被派往霍华德·艾肯中校的哈佛计算实验室。按照现今的标准,艾肯绝对会被划为“典型的大男子主义者”,难以相处的他却与霍珀关系良好,这并不是因为她是一个叛逆者,而是因为她有迎合讨好艾肯和她的同事们的能力。当然,她是一名天赋极高的数学家和计算机程序员,但更加重要的是她对其上司的忠诚以及对组织和控制他的实验室的能力。她积极地通过她的着装、语言、饮食习惯和幽默来显示出性别差异,以赢得艾肯和她的同事的信任和尊重,最后她成为哈佛计算实验室中除了暴躁的艾肯之外最杰出的人。

这种合作而非反叛的行事方式一直延续到霍珀在1949年离开哈佛,而后加入埃克特和莫克利计算机公司(EMCC)。霍珀积极地参与甚至塑造了EMCC公司以及更多团体的企业文化,而不是逃避公司政治和试图完全依靠其技术才能的基础来取得尊重。她所结交的朋友支持着她的事业理想,并在动荡时期保护了她。事实上,她十分擅长理解机构以及其不成文的规定,以至于她在整个战后时期始终在男性主导的军事和商业领域中具有很大的影响力。而在战后时期社会鼓励女性退出公共领域。在考虑了所有的一切之后,我们就能得知,是霍珀的合作能力为她独立的思想和行为在潜在的敌对机构中创造了生存的空间,而不是她的反叛本质。

霍珀的职业性自由同样也得益于计算机专业的新颖性。计算机是一门新学科,这个事实为她提供了灵活定义自己在这个新兴计算机领域中的角色的机会。而已建立了更长时间的领域通常都会有明确的性别角色和责任分工。不管是何性别,霍珀的编程知识和专业才能使得她对于她的同事来说大有帮助。而且,随着编程的相关性越来越强,霍珀的地位也越来越高。

值得注意的重要一点是,当诸如雷明顿·兰德公司和国际商业机器公司(IBM)这样相对更加著名的公司渐渐涉入计算机领域时,它们也随之带来了一种男性商业文化,而这种文化对正在进化为性别平等的编程专业带来了负面影响。贝蒂·斯奈德·霍尔伯顿(Betty Snyder Holberton)和贝蒂·琼·詹宁斯·保尔迪克(Betty Jean Jennings Bartik)在雷明顿·兰德公司经历了突发性的彻底转变,而这一转变有力地终结了她们在私营机构中的事业,而且,约翰·巴克斯(John Backus)(FORTRAN语言的创始人)将20世纪50年代IBM的编程文化描述为一个精英男性群体的文化。

当格雷斯·霍珀和她的女性同行们在战后努力开辟自己的事业时,其所面临的特殊挑战提醒了我们,达到一个社会所定义的“成功”通常需要付出相当大的个人代价。与同属于她那个时代的其他女性一样,霍珀有意识地用她的婚姻和家庭换来了事业。尽管她填补了与同事的情感悬殊,但是霍珀处理个人孤独感最常用的方法就是投入到她的工作中。在一个刚起步的领域中,成为探索这个未知的智力领地的一名先驱所承受的压力有时候会十分沉重。在20世纪40年代,不断凝视着一个不确定的未来所带来的巨大负担令人变得十分畏惧,以致霍珀已经到了濒临崩溃的边缘。她的密友和家人将她从酗酒中拯救出来,并且劝阻了她的自杀行为。霍珀的个人挣扎并没有给她不朽的名望蒙上污点,反而突显了她的成就,这也提醒了我们,即使是最优秀和最聪明的人,有时也会被人生的挑战打败。

大多数有关发明的故事都围绕着一个特定的有形实物,如飞机或汽车。有形实物适合于创造者的描述,并且随着时间的推移而演变,在科技历史的背景下,其重要性越发明显。编著一本关于编程的发明的书也面临着其本身的挑战。程序其能够从电脑屏幕上打印出来或看到,尽管从这个意义上来说,它是“有形的”,但是“编程”却是编写程序的动态过程,所以编程的发明使得描述一个行为或一种活动的发明与描述一个事物一样很必要。

于是,历史学家大都忽视编程的历史,这就没什么大惊小怪的了。直到20世纪80年代和90年代初,威廉·阿斯普雷(William Aspray)、南希·斯特恩(Nancy Stern)、迈克尔·马奥尼(Michael Mahoney)、保罗·塞卢兹等人才开始研究计算机的历史。5他们的早期作品大多数着重于机器和制造这些机器的人。回顾历史,对硬件的强调到了荒谬的程度,直到1970年大量的计算机产业生产力投入到编程和软件开发中。到1985年,软件仍然占一套计算机系统成本的90%,而微软很快便在资本总额和影响力上击败了IBM。

第一次宣传编程历史的努力是1978年由美国计算机协会(Association for Computing Machinery)主持的一次会议。由资深程序员琼·萨米特(Jean Sammet)主持的为期三天的会议要求编程先驱们深入钻研他们的私人笔记本和日记,意在重建他们都曾是其中一部分的计算机历史。此次会议的主要发言人不是别人,正是格雷斯·霍珀。美国计算机协会在1993年召开了第二次编程语言历史会议。同样的,历史的创造者展示了他们的论文,并讨论了他们作品的历史性意义,而不是让专业的历史学家去讨论。幸运的是,这个历史意义重大的组织自上一次美国计算机协会会议以后就已经证明了人们对计算机和编程的兴趣越来越浓厚了。另外,2001年4月,关于软件历史的一次有许多人出席的会议在帕洛·阿尔托(Palo Alto)召开。

在设计第一代大型计算机的过程中,编程属于事后部分。因此,编程的复杂度是创始发明者始料未及的。在对马克一代和马克二代计算机进行编程的过程中,专家组不得不将每个问题都简化成一系列数学步骤。接着,每个步骤会以代码的形式呈现出来,编译出一种一行一行的译文,而这种译文会被传递到纸带上,并且能以手动的方式对其进行错误检查。直到约翰·莫克利(John Maunchly)和格雷斯·霍珀在1953年发表了一篇有关编程对未来计算机发展的影响方面的论文,硬件设计才开始考虑到编程的急需性。

前三位现代“程序员”是罗伯特·坎贝尔(Robert Campbell)、罗伯特·布洛赫(Robert Bloch)和格雷斯·霍珀。早在1944年,这三位哈佛学者就开始试图寻找更加有效编写和运行代码的方法。在战时的压力下,他们制定了一套相对有效和精确的系统的编码方法。尤其是霍珀和布洛赫对子程序、分支技术、压缩码流和调试程序的最早阶段进行了试验,并且他们还将这些技术应用到了范围广阔的科技和工程问题的解决中。此外,霍珀和布洛赫建立了一个信息处理系统,这个系统在昼夜不停地运作的同时,还达到了非常高的效率和准确性。

霍珀、坎贝尔和布洛赫在哈佛所研究出的编程技巧却在直到与宾夕法尼亚大学所取得的硬件突破相结合之后才得到重视。正如电子数字积分计算机(Electronic Numerical Integrator and Calculator,ENIAC)首次验证的,电子计算将运算速度从物理领域脱离出来。霍华德·艾肯的机械硬件能够每秒完成3次运算,而ENIAC却能处理5 000次运算。然而,尽管其内部运转速度达到惊人之快,但是以现今对词汇的定义看来,ENIAC并不是可编程的。

若要约翰·冯·诺依曼来想象一种将马克一代的编程优势与ENIAC的电子电路融合在一起的技术,那么他需要拥有十分灵活的头脑。1944年秋,冯·诺依曼与霍珀、布洛赫在剑桥就曼哈顿项目的核内爆问题进行了合作,而在冬季和春季,他与小J. P. 埃克特(J. Presper Eckert Jr.)和约翰·莫克利在宾夕法尼亚大学就下一代ENIAC问题进行了商讨。在这之后,冯·诺依曼便开始着笔,并且描述了一种计算机体系结构正在经历的变革。记载于1945年6月30日的“关于EDVAC的报告(初稿)”(EDVAC即电子离散变量自动计算机)概述了一种通用存储程序计算机的结构设计,并且成为了下一代计算机的运作蓝图,包括英国的电子延迟存储自动计算器(EDSAC)和访问控制条目(ACE)机器,以及美国的通用自动计算机(UNIVAC)和立即存取存储器(IAS)。

内存储器允许复杂且冗长的操作序列能够以电子速度而非机械速度来执行。这种存储程序结构将ENIAC的电子速度与马克一代的自动程序控制和编程能力结合在一起。后来“冯·诺依曼体系结构”成为计算机革命的理论基础,但是格雷斯·霍珀和哈佛的编程工作人员在之前并未被当做这个概念建立的重要参与者。这并不是说我们应该对冯·诺依曼产生创意的智力水平持怀疑态度。然而,创新概念并不是凭空出现的,而且,在1944年秋,冯·诺依曼对处于发展初期的计算机领域拥有其独特的远见。他能够指出计算机项目的优势与劣势所在,能够在共同的基础上设计出一种新的技术变体。艾肯回忆说:“冯·诺依曼拥有吸收和进行巨大转变的神奇能力,接着,他会谈论事物,谈论概念,而不担心它们是从何而来的。”(有趣的是,冯·诺依曼在“初稿”中提到了艾肯,却并未提及埃克特和莫克利。)

战后,霍珀永久地告别了她在瓦萨学院的职位,加入了海军后备队,并且继续与艾肯一起建立哈佛计算实验室。除了负责马克一代和编写其操作说明,霍珀也渐渐成为了艾肯最信任的助手。她忙于拜访学者、商人和对提高其自己计算能力有兴趣的军官,代表计算实验室参观其他大型的计算项目,并在艾肯不能出席的场合代表其发言。她也帮助组织了在哈佛举行的两次标志性的计算机会议,一次是在1947年,一次是在1949年。值得一提的是,霍珀在哈佛开始声名鹊起之时,正是许多女性在战后复员的压力下被迫离开公共生活的时候。

然而,作为发明家的霍珀,其最重大的贡献并不是出现在哈佛的校园里,而是在1949年至1960年间,当她工作在位于费城的EMCC公司的时候。尽管霍珀在1971年之前一直与EMCC公司有联系,但是1949年至1960年此期间才是关键,原因有很多。第一也是最重要的一条是,那段时期正好与霍珀发表关于编程和计算机设计的创意性论文的时间吻合。12这些论文描述了一系列让人们得以通过语言而不是二进位1和0来与进行电脑交流的编程进展。13霍珀的成就建立了在20世纪50年代以自动编程著称的领域,而自动编程从那一刻起便影响了编程和软件开发的方向,并且奠定了未来高级计算机语言的基础。第二,这段时期标志了编程从基本上只是委派给女性的辅助性工作过渡到了阻碍计算机产业进一步发展的主要“绊脚石”14。如果编程效率不能以相近的速率提升,那么无论软件计算能够多快都没有用。而且,大多数用户无法利用计算机的计算能力,因为他们缺少有用的应用程序和成本,缺乏熟练到能制作出此应用程序的高级数学人才。霍珀的发明打破了人与机器交流的障碍,使得计算机编程领域“民主化”,并且推动了20世纪60年代技术的大众化转型。

尽管有时候很难确定特定发明背后的动机,但显而易见的是,天才程序员的稀缺,现有编程技术的千篇一律所带来的个人困惑,以及雷明顿·兰德公司高级管理层无法提供支持计算机客户的资源,这些都促使了霍珀去发明诸如能够让计算机有效自动编程的编译器这样的技术和技巧。有趣的是,在她的A?0编译器进化为A?1和A?2的同时,霍珀关于发明的理由也随着改变了。编译器更多的是减少编程成本和数据处理的时间,较少考虑到解除程序员编码单一化的难题。

霍珀对她的发明的动态展示与不断演化的革新方法相符,此革新我指的是分散式发明。这个术语描述了霍珀独特的程序开发风格,其原型已经应用于不断扩大的程序员和用户群中。这个不断扩大的发明网穿越了组织的界限,为霍珀提供了大量的反馈信息,她后来将这些反馈应用到了更加高级的样品中。

在20世纪50年代,霍珀使自己成为了在不断演变的计算机产业中的一位代言人。为了对其发明孜孜不倦的拥护者,霍珀提供了一个特别的未来展望,不仅仅是为了那些工作在计算机行业中的人,而且也为了潜在的用户。开发一种新技术只是成功的一半;让人们使用它而不只是一种选择才是成功的另一半。“以我的观点看,”琼·萨米特在1978年的首次美国计算机协会编程语言历史会议(ACM History of Programming Languages Conference)的欢迎辞中说,“格雷斯·霍珀在从技术和管理角度推销更高级别的语言上所付出的努力无人能及。”此论述赢得了雷鸣般的掌声。

计算学历史学家是幸运的,因为很多初期的先驱们在保存工作文件、备忘录、笔记和信件时都十分谨慎。人们推测格雷斯·霍珀和她的同行们拥有一种宿命意识。或者也许他们是十分注重细节的人,接近于强迫症。研究者开始寻找原始资料的起点就是收藏于在华盛顿的史密斯森国立美国历史博物馆档案中心的格雷斯·穆雷·霍珀收藏品。八个盒子里含有技术笔记和手写本、操作说明、项目说明书,与计算机相关的剪报、照片、学术文章,以及一本“笑话册”。这些材料都按照年代顺序编入了索引,很多都是霍珀亲笔注解的。

哈佛大学和明尼苏达大学的查尔斯·巴贝奇学院珍藏了许多计算机行业先驱人物的论文。哈佛的艾肯收藏品包含了大量的私人信件、备忘录、报告、笔记、研究论文、剪报和图片。与霍华德·艾肯的论文相关联的是计算实验室在1944年至1961年期间的记录。查尔斯·巴贝奇学院收藏了许多个人的论文,最著名的是沃尔特·安德森(Walter Anderson)、艾萨克·奥尔巴赫(Isaac Auerbach)、埃德蒙·伯克利(Edmund Berkeley)、玛格丽特·福克斯(Margaret Fox)和贝蒂·霍尔伯顿的论文。查尔斯·巴贝奇学院也拥有1978年编程语言历史会议的记录。此会议是由美国计算机协会(ACM)在编程语言方面的特别利益团体(Special Interest Group in Programming Languages)组织的,出席者包括许多参与了面向商业的通用语言COBOL的研发者,而格雷斯·霍珀便是核心演讲者。

其他重要的原始资料储存在哈格利博物馆、国会图书馆(藏有约翰·冯·诺依曼的论文)、宾夕法尼亚大学的凡·派特图书馆(藏有约翰·莫克利的论文)和IBM在纽约州萨默斯(Somers, New York)的公司档案馆中。

同样存放在位于华盛顿的史密斯森国立美国历史博物馆档案中心的还有《计算机口述历史收藏集》(Computer Oral History Collection),16该收藏是在1972年由美国信息处理协会联合会和史密斯森国立美国历史博物馆档案中心发起而整理出的计算机先驱们所接受的各种各样的采访记录。这个收藏集包含了格雷斯·霍珀的五次保密采访和一份霍珀的一次演讲的珍贵录音带,而我在史密斯森国立美国历史博物馆档案中心保管员艾莉森·奥斯瓦尔德的帮助下有幸得到了这份录音带。这个口述历史收藏囊括了70多场有关此课题的访谈,包括约翰·莫克利的四次采访和霍华德·艾肯的一次采访(该资料在1999年由马萨诸塞出版社出版的I. B. 科恩著的《霍华德·艾肯:一位计算机先驱的画像》(Howard Aiken: Portrait of a Computer Pioneer,MIT Press,1999)的准备中被大量引用)。其他采访还包括理查德·布洛赫和罗伯特·坎贝尔(霍珀在马克一代项目中的程序员同事)、霍珀在哈佛计算实验室的同事(莫里斯·鲁比诺夫(Morris Rubinoff)、罗伯特·伯恩斯(Robert Burns)、王安)、霍珀在EMCC公司的同事(琼·巴蒂克、贝蒂·霍尔伯顿、艾萨克·奥尔巴赫),以及许多在霍珀的职业生涯中与之来往的计算机先驱人物(包括欧文·里德、米纳·里斯、Herman Goldstine和罗伯特·帕特里克)。

《计算机口述历史收藏集》也包含了美国计算机协会在1967年举行的名为“在创造者最初的记忆中”的专家小组讨论的记录副本。著名的出席者有格雷斯·霍珀、约翰·莫克利、赫曼、格尔斯坦、理查德·布洛赫、莫里斯·威尔克斯(Maurice Wilkes)、贝蒂·霍尔伯顿和艾萨克·奥尔巴赫。此收藏集同样还含有1972年在美国军事学院举行的一次计算机讨论会的副本,此会议的主要发言人是格雷斯·霍珀和赫曼·格尔斯坦。

其他口述历史的资料还可以在查尔斯·巴贝奇学院(已经提到)和位于马萨诸塞州剑桥的拉德克利夫高级研究学院(Radcliffe Institute for Advanced Study)的施莱辛格图书馆(Schlesinger Library)中找到。查尔斯·巴贝奇学院存有一次影响深远的访谈记录,即Christopher Riche在1976年进行的采访,霍珀在此访谈中谈到了她在哈佛计算实验室参与艾肯的马克一代编程项目的情况,以及她与小J?P?埃克特和约翰·莫克利合作的情况。其中还包括埃克特、莫克利、玛格丽特·福克斯、贝蒂·霍尔伯顿、威廉·诺里斯和华尔特·安德森的访谈记录。在施莱辛格图书馆(主要致力于美国女性历史的研究)中,我找到了一次非常有用的阿黛尔·米尔德里德·科斯(Adele Mildred Koss)访谈录,阿黛尔是一位曾与霍珀一起在EMCC公司工作的程序员。我还找到了格雷斯·霍珀在1983年由莫利·塞弗主持的电视节目《60Minutes》中接受采访的录像和记录副本。

历史学家(如考古学家)都是侦探,他们在试图重建一个可能的历史的同时挖掘线索。这个类比用在技术方面的历史学家身上尤其恰当,因为我们能够得到我们的主角们用头脑和双手雕刻出的工艺品和实物。对于实物和发明者之间的特殊关系的一段精彩论述,在我所发现的小J. P. 埃克特的一次访谈录中可以找到。此采访是在ENIAC前面进行的,此计算机是年轻的埃克特在20世纪40年代通过坚持不懈的努力而设计和制造出来的。

ENIAC本身就是其创造者的一种延伸。此机器材料的选择反映了埃克特对电子学的尖端概念的理解。其结构组织和流程映射出了埃克特的设计理念。通过访谈录像带,我们可以看到这位年长的发明家就像被送回到几十年前一般,在一瞬间就记起了为什么某些刻度盘要以这种方式排列,为什么使用颜色代码,人们是如何通过使用ENIAC来以光的速度进行运算的。

因此,我们也可以通过研究她的程序、手册、操作指南、专业指导和流程表来了解格雷斯·霍珀。在计算机时代来临之初,霍珀所取得的成果为其编程职业奠定了基础。代码编写的原则、逻辑程序设计的原理、程序说明和测试的原则都能从她在马克一代、马克二代、马克三代和UNIVAC的编程工作中总结出来。她作为数学家所接受的教育使得她能够与这台新机器交流并且掌握它。在20世纪40年代和50年代渐渐以程序员著称的每个人都拥有与她一样的这种至关重要的教育背景,而且这个新生专业变成了数学天才们的早期“神职”,因为他们手握着开启这项强大新技术的钥匙。

荒谬的是,霍珀的数学头脑总是不断尽可能地拒绝数学。霍珀能够跟任何人一样讲数学术语,但是她却发现自己总是在试图让自己最初的职业脱离数学。编写出只能够被极少数人理解的程序是远远不够的。在哈佛,霍珀制定了用于解释每个程式码区段的程序说明的标准。在EMCC公司,她画出了用于解释她的代码背后的数学逻辑,且数学才能较低的人也能够理解这种图形化的图示。最终,霍珀制作出了能够让人类与计算机用非数学术语进行交流的编译器。就像埃克特的硬件设计一样,霍珀的程序反映了她所珍视的东西,在她眼里,那就是要帮助他人学会与这些奇妙的机器进行交流的重要需求。就此而言,“大学教授”霍珀与发明家霍珀是统一的,因为她从未停止过教学。

关于霍珀和她的同辈们最丰富的信息资料就是存储在史密斯森国立美国历史博物馆档案中心和查尔斯·巴贝奇学院中的口述历史材料。因为各种各样的历史性机构和计算组织、学者和计算机先驱们的先见之明,我才能这么幸运地找到50年前霍珀和她的许多同事接受采访的记录。矛盾的是,我所认为的珍贵财富有时候却被其他学者评论为“软性”证据。他们断言口述历史具有很大的不确定性,而且会受到记忆脆弱不足信的本质的限制。在大多数情况下,访问都是在事件公开化之后才得以进行的,并且会进一步受到采访人、被采访人或双方的日程安排的干扰。这些学者都更倾向于具体的证据,如考勤卡、公司大事记和办公室备忘录。这种证据冠有事实的光环,因为它们是在事件公开化的同时完成的,并且不会受到记忆的限制。

当然,在重组历史事件的时候,研究来源于该时期的原始文件是必要的,因为它们扮演着历史纪事的骨架。我认为,在本例中,可获得的大量口述历史有助于为结构骨架增添血肉。而且,正是这些血肉使得这个故事如此生动有趣,因为我们很快意识到,作为人类努力的一种成果的发明是混乱复杂和令人心烦的。逻辑和理智是科技的两根顶梁柱,但是它们本身并没有解释发明的行为。为什么人们要创造和为什么那些创造物出现在特定的时间和地点,这些问题远比发明是逻辑需求之母的陈词滥调复杂得多。

在编写此书的过程中,我所阅读的成千上万页口述历史资料为人们行为背后的动机表达了其真知灼见。童年的安全感缺失、野心、嫉妒、取悦的需要、固执和爱国情操都会激起创造发明的火花。我们也了解了霍珀和她的同事们所工作的真实条件。哈佛计算实验室在战时所承受的研究和开发的紧张与压力被格雷斯·霍珀、霍华德·艾肯、罗伯特·坎贝尔、理查德·布洛赫和埃德蒙·伯克利用一种时间统计表和公司手册无法记录的方式进行了详细的描述。约翰·莫克利、小J?P?埃克特、贝蒂·霍尔伯顿、琼·巴尔蒂克等很多人的记忆为我们打开了进入第一个计算机新兴企业的窗户,而在半个世纪之后,20世纪90年代出现的硅谷网络公司热潮才使得“新兴”企业文化博得了大众媒体的关注。

这并不意味着所有的口述历史都是“生而平等”的。研究者的部分职责就是锻炼敏锐的双眼以辨别质量。保证质量首先得从采访者开始,而计算机领域应该感到幸运,因为史密斯森国立美国历史博物馆档案中心、美国计算机协会(ACM)和查尔斯·巴贝奇学院所组织的大多数口述历史都是由既懂得采访技巧,又理解手上的技术话题的专业人士主持的。一般来说,他们大都清楚该问什么样的问题和以怎样的顺序来问这些问题,而且他们能够敏锐地感知到什么时候该对他们的被采访人放些长线去思考话题,什么时候又该收线。

可获得的大量采访资料给予了我从各个不同角度看待一个给定的历史性事件的能力。霍珀的回忆可以与许多其他曾见证正在讨论的同一事件的人的回忆进行比较。同样的,霍珀在40年来接受了无数次的采访,而显而易见的是,随着时间的推移,她越来越习惯于讲述一个给定的故事。但是霍珀“讲述”过去的方式也表达了她是如何看待世界和在这个世界之中的自己的一些见解的。尽管记忆具有易谬性,但是结合其他原始的和二手资料,口述历史的深度和广度使得我们对过去的描绘完整且精确。

分散式传记

在20世纪的绝大部分时期中,传记在科技历史中是一种广受接纳和广泛应用的体裁。早期作品歌颂各类技术的先驱人物,包括托马斯·爱迪生(Thomas Edison)和怀特兄弟(Wright brothers)。17为了社会的利益,在地下室或汽车库做白铁工的无私发明家的奋斗目标引起了学者和无专业知识的读者的共鸣。这种理想化的方法在使技术变革的价值合法化的同时,也起着提倡个人成就美德的作用。

强调特定技术的书籍也采用了传记体裁。休·艾肯(Hugh Aitken)对无线电装置的贡献和托马斯·休斯(Thomas Hughes)对西方社会电气化的详细论述将叙述固定在了少数负责科技成果的个人身上。18事实上,我们可以说,休斯意义深远的系统方法的奠基石不是系统本身,而是其创建者。该系统的创建者是一位通过领导力、直觉和技术才能将顺序叠加在自然和周围社会的原材料上的主权独立的个人。该系统创建者的主权独立指的是行为是随心所欲的,而且效果改变了。休斯把亨利·福特、艾莫尔·斯佩里、托马斯·爱迪生和塞缪尔·英萨尔(Samuel Insull)看做是原型系统的创建者。

随着社会学的影响力日益增大,女性作品、20世纪80年代这一时期的历史性文学人类学、以人为本位的科技论述都遭到了猛烈的抨击。科技历史的重点向指导和决定科技知识建立的社学和政治结构方向转变。Wiebe Bijker、Trevor Pinch、Ruth Schwartz Cowan和Donald MacKenzie将科技的社会建设确立为该领域的主导原则。其后果——作为一种流行体裁的传记体影响力急速下滑——在20世纪90年代德克斯特奖(Dexter Prize)和亚瑟奖(Usher Prize)的大部分得主名单中得到了反映。19对这些作家而言,单个工程师和发明家已经变成了更大社会因素和组织结构的反映。他们的选择受到了既定社会的历史趋势所提供的行为的可能性的限制或者过度的影响。

少数一些科技历史前沿方面的专家学者甚至质疑人类实施行为的意图所在。在《发明的本质:一种反传记,从托马斯·爱迪生的档案中得知》(The Invented Self: An Antibiograohy, from Documents of Thomas A. Edison)一书中,Nye宣称,个人是“在他们无止境的变化中本质上仍不可知的分离的自我”。20Nye总结说,历史学家试图构建一个确定的人,这种行为是徒劳无功的。个人一致性这个天真的现实主义观念只是一个虚构的东西而已,因为行为者已被语言离心化和分散了。正如Reid在《巴黎水道工和通渠工》(Paris Sewers and Sewermen)21中试图表达的,历史学家只能做到在沟通、解释和表现事物及人的过程中,以及在揭露所感知到的现实无系统性的联系和变化中,强调言辞的集中性。在后结构主义者看来,在科技研究中,作为历史性研究的有效工具的传记充其量也只有有限的功用。

考虑到社会建构者和后结构主义者所带来的挑战,专家在科技历史中能有一席之地吗?在我们同意谴责历史性传记对于如灰烬般的方法论来说数量之众多之前,首先让我们来考虑几个争论点。

  作为对后结构主义者提出的难题的回应,自我检查表明,某些身体和心理的连续性能够与语言区分开来。这些连续性能够从生活在我们周围的其他人身上识别出来,也能在那些比我们重要的人的身上识别出来。当我开始研究格雷斯·霍珀时,对于她这个个体的构成成分这方面看似存在着无限的可能结果。但是随着对霍珀这个历史性人物更加深入的研究,选择性被排除了,典型特征就开始浮现了,个性同一性也显现了出来。就算霍珀的本质随着时间改变,她的个性存在分歧之处,并且存在大量矛盾,但是到最后,她的个性和独特性大多能够确定。

如果我们接受人是能够被历史学家重塑起来的独特实体这种观念,那么下一个步骤就是确定他们在更大的社会历史洪流中的位置。尽管我认为社会建构主义更好地解释了社会在科技知识的发展、传播和实施中所扮演的角色,但是我怀疑这只是故事的一部分而已,因为不存在与个人不相关和分离的社会。每一个机构、组织和政府都是独特个人的集合,这些个人都拥有他自己的且在不断完善和更新的“个人社会”。最重要的是,当人们逐渐察觉到更大的社会趋势时,他们有能力去与之对抗,而且,随着时间流逝,甚至突破它们。正如Anthony Giddens在《现实性与自我认同》(Modernity and Self-Identity)一书中所写的:“自我不是被动的实体,无论他们行为的特定背景有多本土化,个人对社会影响仍具有直接的推动作用,尽管社会影响在其意义和内涵方面更加全面统一。”我认为格雷斯·霍珀就是这样的个人,而且传记方式是阐释她独特性的最佳方法,使人们能够更加深入地理解人类条件。但是我也吸取了过去30年的教训,我接受霍珀是固定于一个不断变化着的历史背景下的个人这种观念。所以,本书的叙述方式具有分散的特点,以试图突显霍珀于1945年至1960年22间在她周围的人和时间的背景下所取得的成就。有时候,这位计算机先驱人物是本章或小节的中心;在其他时候,她的角色又与故事主线有些脱离。从这个意义上来说,《分散式传记》的文学风格反映而且证实了我“分散式发明”的观念。

最后,这位影响巨大的大学教授转为海军军官,又变成发明家,随后又成为企业的主管人员,其伟大的事业正好充当了探索计算机行业的兴起和计算机编程发明的理想导管,我们的今天也因计算机而称为信息时代。

”我仍然记得12月7日这一天“

“我仍然记得12月7日这一天,”格雷斯·霍珀说,回忆着1941年那个灾难性的日子,“我们两个都忙着自己的研究。我们有一个很大的双人办公桌,我们背后都有窗户,周围全是厚厚的书,而在上面的商店里有一个小收音机,我还记得当时珍珠港的通告。”1当听到熟悉的声音介绍着日本突然的空袭造成了2 403个美国人死亡,1 178人受伤,击毁了188架飞机,并且将太平洋舰队相当一部分的舰艇击入海底时,霍珀和她的丈夫文森(Vincent)惊讶得说不出话来。

这事怎么会发生的呢?我们祖国的国防怎么了?为什么我们没能追踪到日本舰队的行动呢?难道我们都没有聪明到预警这样的袭击吗?这对我们的国家意味着什么呢?这是在格雷斯·霍珀和文森·霍珀像千千万万美国人一样被他们收音机的声音吸附着时,他们的脑袋里立马闪现的问题。随着一个小时又一个小时的流逝,关于这次袭击的更加完整详细的信息报道了出来,而且在接下来的数月的时间里,历史正在以令人炫目的速度拉开帷幕。

12月8日,美国和英国对日本宣战。三天后,德国向美国宣战。德国加强了对西欧的掌控,并且将其军事力量延伸到距离莫斯科以东不到19英里的地方。1942年1月,德国发动了“敲鼓作战”(Operation Drumbeat),在北美洲东海沿岸对美国船队进行了一次毁灭性的潜水艇攻击。在太平洋战场中,日本的扩张已经延续到了中国香港、关岛(Guam)、威克岛(Wake Island)、中途岛(Midway Island)和新加坡(Singapore)。1942年5月,美国军队放弃了菲律宾群岛(Philippine Island)。

在战争后方,生活发生了翻天覆地的转变。1月,《物价紧急控制法案》(Emergency Price Control Act)和《稳定法案》(Stabilization Act)出台,要求总统控制物价、工资和公共使用费率。政府启动了定量配给制度,该制度最终延伸到食品和汽油业,而某些消耗品(如汽车)已经停产。最后,《War Powers Act》授予了联邦政府严格的权力,这些权力包括从对国家交通系统无止境的并购和产权处置的控制,到美国联邦储备银行强行购物的政府职责。

事实上,12月7日上午在夏威夷发生的事件给美国带来了深刻的变化。而且,那天也成为格雷斯·霍珀自己的人生开始转折的时间点。在那个灾难性的日子过后的数月里,格雷斯·穆雷·霍珀放弃了她在瓦萨学院终身教授的职位,与她的丈夫离婚,并且在36岁时加入美国海军。

与20世纪30年代的许多受过高等教育的年轻美国女性一样,格雷斯·布鲁斯特·穆雷(Grace Brewster Murrray)来自一个信誉卓越的安格鲁-撒克逊家庭。格雷斯的母亲是一位成就卓然的数学家,而她的父亲则是一位人寿保险主管,他在对儿子与两个女儿的教育方面一视同仁。定居于纽约市西95号街316号的穆雷家中满是书籍,年轻的格雷斯的学术梦想在这样的环境中得到了帮助和鼓励。

当格雷斯在1924年被瓦萨学院录取时,对于一个富足的年轻美国女人来说,完成学业,工作几年,然后嫁人组合一个家庭便是通常的惯例套路。然而,在瓦萨学院所取得的令人兴奋的学术成就使得格雷斯得以继续在耶鲁大学追求数学和物理的研究生学位。通过继续其学业,格雷斯成为了日益增多的为更加显著的公共职位而努力奋斗的少数女性中的一员。

但是,即使是在这群特殊的博学多闻的女性群体中,格雷斯仍然十分突出和显眼。首先,她是在1930年至1940年间仅有的396个被授予数学博士学位的美国人中的一员,而且是耶鲁大学第一位获得数学博士学位的女性。其次,在大多数受过良好教育的女性选择在初级或中等学校就业时,格雷斯却成为了一名大学教授。最后,很多得以在高校谋得职位的女人依然未婚。尽管教授的职位值得尊敬,但是社会中更多的人却质疑一个女人平衡其事业与家庭生活的能力。

1930年6月,格雷斯嫁给了文森·霍珀,此人是一个支持妻子事业梦想的文静好学的男人。两人第一次相遇是在新罕布什尔州的沃尔夫伯勒,穆雷和霍珀的家庭都在那里拥有夏日别墅。据说,文森一直与格雷斯的姐姐在约会。

到他们结婚的时候,文森·霍珀已经是哥伦比亚大学比较文学的博士研究生了,并且在纽约大学任教。两位学术家一起共同创造了一种让双方就个人和专业都能成长的生活。在教学期间,他们在格雷斯从小长大的街道上租了一套公寓。格雷斯的哥哥嫂子、姐姐姐夫和父母都是他们的邻居。他们用结婚的钱在新罕布什尔州买了一套旧农舍,夏天便在修补这个旧农舍中度过。在不修补房子的时候,他们会打羽毛球和高尔夫,或者格雷斯会为他们的农舍钩编地毯或为朋友编织毛衣。

在爱意浓浓的家庭的支持下,格雷斯·穆雷·霍珀在1934年完成了她的学位论文,并且(如前文所述)成为了耶鲁大学233年的历史中第一位获得数学博士学位的女性。毕业之后,她接受了在她的大学母校瓦萨学院担任全职教师的职位。

1861年,啤酒酿造师及商人马修·瓦萨(Mattew Vassar)在距离纽约市75英里的波基普西市建立了瓦萨学院。瓦萨当时的理想是为女性提供一个能与当时最好的男性大学相比的文科教育。作为瓦萨学院的学生和教授,格雷斯·霍珀跟随了许多传奇校友的脚步,包括爱伦·斯瓦罗·理查兹(Ellen Swallow Richards,第一位毕业于麻省理工学院的女性)和玛丽亚·米切尔(Maria Mitchell,第一位入选美国艺术与科学研究院(American Academy of Arts and Sciences)的女性)。

对于一个刚开始学术生涯的年轻教授来说,瓦萨学院提供了各种各样的优待条件。该学院因为拥有相当大比例的女性教职员而营造了一种友好的环境。而且,女性还任职于行政管理部门。尽管20世纪30年代的大多数女子学院较研究更加注重教学,但是霍珀拥有足够的机遇去建立一个能够实现其学术梦想的事业。

与所有新任教授一样,霍珀需要用前几年的时间来爬上资历的阶梯。“当然,我要从没人愿意教授的所有科目开始教起。”她回忆说。8除了基本的三角学和微积分,她还教授所有的技术设计科目,包括机械制图和建筑绘图,以及阴影和透视的实验课。

考虑到瓦萨校园之外艰难的经济环境,霍珀在面对每学期教授5或6门科目的压力时并没有抱怨什么。相反,霍珀接受了她所遭遇的一切,并且将其转化成了她的优势。“这些科目都非常沉闷,”她回忆说,“而我引进了新的课本和新的材料,最重要的是我引进了新的应用。我开始加入一点点非欧几里得几何的知识,看,这些在当时都是新的东西——所有的关于爱因斯坦理论什么的都很新奇,让人兴奋不已,尝试着将这些引用到科目中是一件非常有趣的事。”

霍珀的跨学科教学方法来自她广泛的学术兴趣。瓦萨的教职员是允许旁听课程的,霍珀毫不犹豫地这样做了。她参加了天文学、物理、化学、地质学、生物、动物学、经济、建筑、哲学和科学思想史等课程。新获得的知识很快便应用到了她的教学中。“在那些年里,有一种持续的趋势,那就是数学不只是纯理论的。”她回忆说,“他们可以学习他们的纯数学理论,但是我也会不断应用数学。”

霍珀的创新教学方法对学生和教职员都产生了深刻的影响。来自各个学院的学生都涌入她的课堂。曾经传统上只吸引极少学生的课程开始吸引了75个或更多的学生。霍珀时常成功地将晦涩难懂的数学领域与各种学科关联起来。在20世纪30年代还是瓦萨研究生的数学家Winifred Asprey曾与格雷斯·霍珀一起上过许多数学课,此人回忆她是“你可以想象的最能鼓舞人心的人”。

让人吃惊的是,很多教职员并不满意霍珀的方法。她回忆说:“年轻群体——比我年长但是仍属于年轻派——他们几乎不赞成我做的任何事,因为我不是做的该做的事情,而且我在加入非数学的东西。”

为了努力完成她的课程修改方案,霍珀联合了高级教员,包括学院院长和教务主任。“主任很喜欢,因为这是跨学科的,这只是讨论的开始。”她回忆道,“……而且,他们曾经都认为是最孤立的数学学院,现在却开始将其他学院的人吸引过来并将学科互相关联起来,所以他们也都很喜欢这个想法。”霍珀以前读大学时的微积分教授哥特路德·史密斯(Gertrude Smith)甚至都赞同她独特的教学方法并说道:“她也许是最守旧的人……但她可以说只是乐意看到她的学生的大胆开拓行为。她不是很确定这是否合乎规范,但是她却很开心看到这些。”

霍珀作为大学教授的前九年为她未来的事业打下了良好的基础。从理性上说,她打破了传统上严格的学科界限,并且掌握了大量的各种学术科目。同时,她将数学看做是所有学科的桥梁,并且为她的学生找到了直接体验这些联系的实际方法。而且,她学会了怎样做一个有效的演说家,她被学生和教师同事赞誉为伟大的沟通者和激励者。能够敏锐察觉瓦萨学院的官僚政治的她在制度的惰性面前变成了变革的代理人。

到1940年,霍珀教授已经把自己塑造成了瓦萨学院教职员中值得尊敬的一员。她已经掌握了教学的技巧,但是她内心有一部分仍然渴望超越这个波基普西校园,去与她的领域中的精英们切磋交流。那一年,她决定申请瓦萨教师研究会,这能够允许会员为了在其他学校继续做研究或授课而进行一年的休假。霍珀选择了与纽约大学著名的数学家Richard Courant一起做研究。

在希特勒掌权时,库朗曾是哥廷根大学享誉盛名的数学学院的院长。因为他的犹太血统,这位才华出众的数学家于1933年被迫休假,后来作为对他在第一次世界大战期间在德国军队中的杰出表现的认可,他被暂时恢复任职。1934年春,随着情况的不断恶化,库朗辞去职务。他离开了德国并接受了纽约大学的全职教授职位,在那里,他在1936年开始按照哥廷根大学的传统着手成立一个应用数学系。

1941年秋天,霍珀开始与库朗在这个新兴的偏微分方程式领域进行紧密的合作。这个特殊的方程式类型是一系列前沿科学和工程学科的数学基础,包括空气动力学(研究运动着的气体)、流体动力学(运动的液体)、电机工程和量子力学。除了其他方面之外,这些技术还能够被应用在飞机设计、天气预报、交通流量和无线电波的传播中。

霍珀钦佩库朗的数学才能,而且从他身上学会了扫视为物质世界打下基础却不引人注目的数字装饰品的能力。“他只是我的生命中曾见过的最让人感觉愉快的人之一,”她回忆说,“当然,他偶尔也会责骂我……因为我总是坚持做一些不合乎传统的事,总想要处理非正统的问题。” 但是在日本袭击珍珠港之后,纽约大学里这个无忧无虑的数学学院变了。在那里剩下的时间里,霍珀的工作主要放在一些与国防有关的严峻问题上。  

寻找新的道路

“我在那年结束了与库朗的合作。当然,接着在战争最激烈的时刻,我的哥哥和我的丈夫等所有人都想参与其中。”霍珀回忆道。文森·霍珀离开了纽约大学,不顾一切地想得到一个官员的职务。因为他的年龄原因以及视力较差,他被拒绝了。格雷斯的哥哥罗格刚读完经济学博士学位,同样视力很差。接着,两个人便暂时搁置了他们前途光明的学术和商业事业,应征入伍了。两个人在整个战争期间都服务于美国陆军航空队,罗格·穆雷最后接受了一个职位委任,并升至上尉。

到1942年夏,格雷斯·霍珀的丈夫、她的哥哥、堂兄弟们,还有许多朋友都参了军。“我们整个家族都参加了,”她回忆说,“所有人,除了我姐姐,因为她有小孩而没有被接受。”格雷斯也打算做她该做的事。在1942年夏天,不愿意回到瓦萨学院的她接受了巴纳德学院的聘用。她在那里教授一个临时为了让数学家做好战事努力准备的暑假班。美国大地所遭遇的始料未及的袭击惊醒了格雷斯和其他人的强烈的爱国主义情感,但是痛苦难忘的事件也对个人产生了更加深刻的影响。它们常常会引起人们的自省。对于格雷斯来说,珍珠港事件成为了导致私人生活一系列改变的外在催化剂。

尽管她在瓦萨学院的终身任职看起来近乎完美,但在格雷斯的内心深处,她想要逃离这个稳定且深受敬重但是缺乏挑战的工作。她想要脱离从纽约市到波基普西市之间75英里的现实路程,脱离她与家人在新罕布什尔州曾度过的35个夏天。最后,面对着她的婚姻失败这个事实,她决定丢下所有的事情,加入海军。

1942年7月30日,罗斯福总统签署了《Navy Women‘s Reserve Act》,这为志愿紧急服役妇女队(Women Accepted for Volunteer Emergency Service,WAVES)的成立奠定了基础。志愿紧急服役妇女队被派遣到非战斗职位上,与航空机械师、飞行员、报务员、医务人员等一样。卫斯理女子学院(Wellesley College)的院长米尔德里德·麦卡菲(Mildred McAfee)被任命为这个新组织的第一位理事。到1945年,志愿紧急服役妇女队(WAVES)的成员已有8 000名军官和7.6万名应征人员。

霍珀在秋天时回到了瓦萨,但是她已经失去了教书的兴趣。“坐在那里,当着舒服的大学教授,而我却开始觉得非常非常孤单。”她回忆说,“我做的事情就只有更多的教学,我迫切希望加入海军,所以最后,我给瓦萨发出了最后通牒:如果他们不放我走,那么我会停工6个月,因为我要在这段时期加入海军。”

这位满腹牢骚的数学家最终打算请假离开她的教学岗位,但是她很快发现,参加海军不是简单的事。纵然她对海军服务来说年纪偏大,身材偏小,但是她所选的作为数学教授这个职业对战争期间的作用来说确实极其重要。未受到任何阻挠的霍珀获得了其年龄和体重上的豁免。1943年12月,即她37岁生日的前一天,她到位于马萨诸塞州诺桑普顿的美国海军后备军校报到。

海军后备军校旨在为未来的海军军官输送人才,它对大多数年轻的新兵来说是一次伤痛的经历。“当我们第一次到那里时,我们就必须将我们所有的便装打包并寄回家。”霍珀回忆道,“他们不允许我们穿丝袜,所以我们不得不穿那些令人恐怖的棉袜。”新兵只适合穿制服(棉袜和其他所有的衣装),要接受理发并与他们的家人和朋友分开。在最初的几天里,他们都要学习得体的军事礼仪:怎样穿制服,怎样举止文雅,怎样向上级和下属敬礼。每个新兵都必须记住各种各样的事实和数字,包括军官的头衔和级别,应征人员,以及各种船舰与武器装备的名字和功能。

为了强化新兵在面对阻碍和难题时的战斗决心,训练的环境被刻意营造得十分紧张和压抑。娱乐设施几乎没有,私人时间有所限制,睡觉和休息的机会也受到严格的限制。在教室中,霍珀和她的同学们学习海军历史、航海术、战术、海军组织和领导的基本原则等。海军礼仪也是重点,既包括在盛大集会时得体的着装要求,也有书写商业信件的正确方式。尽管生活艰苦,但作为海军军校学生的格雷斯·霍珀却铭记着这样一段出乎意料的愉快经历:

当我到达那里时,我一直在教授所有的科目,做所有的这些室外工作,不断来回于纽约和波基普西市之间在巴纳德和瓦萨教书,做无数其他诸如上课、写东西等这些事情。但是突然,我不需要决定任何事了,所有事情都解决了。我甚至不需要在早上烦恼我要穿什么衣服;衣服就在那里。我只需要拿起衣服,然后穿上。所以,对我来说,我在顷刻间从所有的这些烦琐小事中解放了——所有的琐碎小事都消失了。我甚至无需想着晚餐吃什么……所有的事情都消失了,而我只是享受这一切。我享受着我未曾拥有过的绝对自由……我只是像一个闲职人员一样迅速放松下来,体重开始增加,我享受着完美天堂般的时光。

事实上,海军后备军校非常适合霍珀,以至于她被任命为校内最高级别的职务——营长。她是她的班级中第一个毕业的人。

她余生的第一天

当格雷斯·霍珀海军中尉于1944年夏天从海军后备军校毕业时,最大化地利用她的才能这个问题便落在华盛顿海军人事局(Bureau of Naval Personnel)的责任范围内。在和平时期,任务的决定通常会考虑到当事军官的意愿。但是在战争时期,海军的需求通常会取代个人的意愿和需求。

在霍珀参加军官培训时,她原以为一毕业自己就会被派往海军通信附件中心(Navy Communication Annex)。通信附件中心是由一群隐秘的数学家和逻辑学家军官组成,他们的任务是破解敌军的密码。现代战争对无线通信指挥和控制的依赖稳定了这些技术精英们的地位,因为从拦截到的敌方的通信中收集到的信息能够像诸如高级武器和人力的传统决定因素一样影响战事的结果。霍珀的数学才能能够在这种能力方面对战事努力作出最好的贡献,这一点似乎符合逻辑。而且,通信附件中心的领导人霍华德·恩斯特龙(Howard Engstrom)上尉曾是霍珀在耶鲁大学的数学教授之一。“我已经跟恩斯特龙谈过了,据我所知,我会被派往通信附件中心已经可以确定了。”她回忆说。事实上,在1943年的秋天,当霍珀等候她的年龄和体重获得豁免的时候,为了与恩斯特龙一起工作做好准备,她参加了一门密码分析的课程。但是当霍珀已经就读于海军后备军校时,一种独一无二的计算机器已经从纽约恩迪科特的IBM实验室运送到了哈佛大学。这台在海军舰艇局保护下的神秘机器是一台电脑,尽管当时它并不是这个称呼。“我被任命到哈佛大学,而不是通信附件中心,我的调配令在我还在海军后备军校的时候就改变了。”霍珀陈述道。在她别无选择的情况下,格雷斯·霍珀中尉成为了世界上第一台电脑的第三位程序员。


图为格雷斯·霍珀于1944年6月27日从马萨诸塞州诺桑普顿的美国海军后备军校毕业当天所拍。由史密斯森国立美国历史博物馆档案中心提供

这个官方名称为自动程序控制计算机(ASCC)的机器是海军中校霍华德·艾肯的发明。战争爆发之前,艾肯曾是哈佛大学的物理专业研究生。在准备学位论文的同时,他还制订了设计一台与众不同的机械计算机器的计划。据称,这个发明是艾肯在为支持他关于无线电波传播的博士论文的运算绞尽脑汁而一气之下的产物。数学的博大精深和错综复杂重重地压在这位物理学家的身上,艾肯需要数学来描述其论文,即使是一个简单的取样,这若用手计算出来也会花费他多年的时间。艾肯注重实际的性格使得他开始考虑将运算过程自动化的可能性,于是,在1937年,他开始在私下传阅一篇题为“Proposed Automatic Calculating Machine”的文章。这篇论文详细地描述了艾肯对于一个能够解决任何可简化为数据分析的问题的自动运算机器的愿景,包括一般方程式和非线性偏微分方程式。

艾肯为了摆脱繁冗的运算而进行的7年研究的成果便是高8英尺、宽3英尺、长51英尺、重9 445英磅、拥有530英里线路的机器。ASCC于1944年由IBM正式捐赠给哈佛大学,29它能够进行加减乘除运算。它同样能通过硬线连接来进行对数、三角函数和指数运算,与今天的手握式计算器非常相似。然而,这台巨大的机器最值得人们注目的特点是其纸带机制。将支配机器运算的每一步命令提前编码到纸带上,纸带就会引导机器逐步运算出结果,而无需人的进一步介入。艾肯的发明是首批可编程机器的范例之一。到当时为止,机器一直是人们用来扩展一些人类身体素质的被动工具,就如望远镜或打字机一般。艾肯赋予了他的机器自动运行的能力。假设一个人必须详细说明这一行为的参数,那么这台ASCC旨在提升的就不是臂力或眼力,而是头脑。


图为1944年新设计的ASCC(哈佛工作人员称之为马克一代)。图片由史密斯森国立美国历史博物馆档案中心提供

马克一代是艾肯对这台他指挥的特殊“陆基舰艇”的称呼,它现在担负着远比帮助艾肯完成博士学位论文更加严峻的任务。这是一台新式的机密武器,将会改变战争的结果。它将被用来为火箭弹道、低空爆炸信管和地雷计算出破解方法,以及生成能用来解决一般工程问题的数学函数表,既包括无线电波的传播,也包括船体的设计。聘用职员已经变成了艾肯主要关心的问题,他开始寻找已经加入海军的数学家。格雷斯·霍珀中尉似乎刚好符合要求。


负责马克一代的最早工作人员,1944年8月。从左至右,上排依次是:海员比赛尔(Seaman Bissell)、海员卡尔文(Seaman Calvin)、海员韦当力克(Seaman Verdonck);下排:海军少尉布洛赫、海军少校阿诺德、海军中校艾肯、中尉霍珀、海军少尉坎贝尔。照片由史密斯森国立美国历史博物馆档案中心提供

霍珀于1944年7月2日向位于哈佛大学克拉福特物理实验室地下室的艾肯的哈佛指挥部报到。如果被一支武装护卫队护送到地下室还不致令人恐惧的话,那么她那极其吓人的老板的存在便会。“我感觉有点困惑,当然在那一刻怕得要死。”霍珀回忆说。多年后,她还清楚地记得艾肯对她说的第一句话:“你最近都到哪儿去了?”艾肯在数月前就等候霍珀的到来,他并不认为将一位女性数学家送到海军后备军校有任何意义。

接着,艾肯带领他的新同事参观了ASCC。霍珀在IBM安装平滑钢管套之前就到达实验室,因此这台机器的无数运动部件都完全暴露在外。“我只是看了看它。在那一刻,我想不起如何去说。”她回忆着。参观结束后,艾肯命令他的新助手暂时搁置寻找住处,而是立即投入工作中。她的第一个任务是在一周内,计算出插值系数的正切值并精确到小数点后23位。

霍珀受到的冷若冰霜的接待是她已经置身于对抗性环境的初期前兆。霍华德·艾肯对海军派给他一位女军官来做副手感到十分失望,他曾公开向其他工作人员表达了这种观点。“起初是艾肯,后来还有这些小伙子。”在霍珀之前到达计算实验室的海军少尉之一罗伯特·坎贝尔回忆说。另一位海军少尉理查德·布洛赫也表示了与艾肯同样的担忧。“后来我发现,他们曾为了谁会坐在我旁边而试图收买对方。”霍珀回忆道。

除了性别压力之外,霍珀也面临着一个采用比例法的技术难题。艾肯给她一个星期的时间来解决一个相对简单的数学问题。正切值(反正切函数)在大多数高中几何课程中都有讲解,对于一个前大学数学教授来说,这完全是轻而易举的事情。难处不在于问题的复杂度,而是其范围。在艾肯提供的时间范围内将一大堆数字计算出来并精确到小数点后23位,这对任何人来说,几乎都是不可能的。为了帮助解决难题,霍珀不得不指望一台她从未遇到过的机器。她无法利用以前的经验。因为马克一代的独一无二,她不能参考通过其他计算工具完成的作业。没有操作指导手册,没有客户支持。事实上,霍珀甚至不知道该如何称呼她的新职业,“程序员”是在很多年之后才出现的词语。

“他们给了我一本电码书,然后要我整理它。”霍珀回忆说。这本“电码书”是一本含有机器指令的粗略地制成表格的笔记本。在未经培训的人的眼中,这本笔记本什么都不是,只是一列难以理解的数字。在马克一代从IBM在恩迪克特的实验室运送到哈佛之后,罗伯特·坎贝尔在解决测试问题时曾很快将这些数字集合起来过。

坎贝尔不仅仅是马克一代的第一位程序员;在1943年和1944年上半年,他还担任了这个项目的经理。艾肯被召集服役,并且被派遣到弗吉尼亚州约克镇(Yorktown, Virginia)的海军水雷战学校。艾肯从哈佛研究生的名单中选择了这位聪明的年轻物理学家,在艾肯不在的这段时期,坎贝尔监管机器完成工作,并随时告知艾肯研发进度,充当着哈佛和IBM之间的桥梁。1944年5月,艾肯一回来,坎贝尔便被任命为海军后备队的海军少尉,并且成为了艾肯实验室的全职工作人员。

坎贝尔在“电码书”中所搜集到的技巧在编制最初三个问题的程序的过程中得以收集整理。第一个问题(简称为问题139)涉及与为罗纳德·金(Ronald King)的哈佛物理系(Harvard? s Physics Department)设计天线有关的三角函数。应天文学家和望远镜镜头设计师詹姆斯·贝克尔(James Baker)的要求,40问题2与光线穿过一个多组分光学系统时的折射角度有关。应海军舰艇局的要求,问题3有关于微小杂质对钢铁物理性质的影响。问题3尤其向坎贝尔展示了这台机器的真正实力和潜力所在,因为十个方程式在一瞬间就获得解答了。

霍珀很快就意识到,要想成功实现与马克一代的交流,她必须依靠鲍勃·坎贝尔和理查德·布洛赫已经获得的经验。“每当遇到难题时,我就会对布洛赫和坎贝尔大喊大叫,然后他们就会告诉我怎样解决。”霍珀回忆说。布洛赫也仍然记得那些指导这位“教授”的日子:“我记得我们一直坐到深夜,讨论着这台机器是如何运作、如何编译这个东西,等等。我总是喜欢提醒她,她当时对计算机一无所知。”事实上,在1944年7月,23岁的布洛赫了解的并不比他的“学生”多;在霍珀到来之前,他只比霍珀多获得了三个月的编码经验而已。

布洛赫用动力和决心弥补了他经验的缺乏。作为近乎完美的成就卓然的学生,他曾攻读数学专业,兼修物理专业,并且曾就读于哈佛大学。1941年,他赢得了德克斯特的优秀大学生新生奖。布洛赫原本梦想成为一名大学教授,但是(与他那一代许多年轻人所遭遇的一样)对珍珠港事件的反击转化成了一个意外的职业选择。毕业之后,他报名参加了University of Notre Dame in Indiana的海军训练,并且在1943年9月,他被派驻到华盛顿美国海军实验室。“我们都想做我们应该做的事,我的愿望是登上最大的舰艇,所以我申请了战艇领航员的职位。”他回忆说。在审查之后,海军人事局得出的结论是,如果将布洛赫的数学才能应用到与美国海军实验室无线电署相关的分析和计算任务中,那么他就能对战事发挥其最大的作用。

布洛赫是在1944年1月于美国海军实验室第一次认识霍华德·艾肯上校的,艾肯当时被派往陪伴一次设备参观行程。“当他听说了我的哈佛背景时,他问我是否愿意参与其中,”布洛赫回忆说,“他告诉了我他所设计的这台绝妙神奇的机器的事情,并问我是否愿意继续在哈佛服从海军兵役。当然,这勾起了我巨大的兴趣,所以我欣然接受了他的邀请。”当时,布洛赫并不明白艾肯所讲述的具体是什么,但是凭着强烈的信念和信心,这位海军少尉在1944年3月就报到上班了。当布洛赫到达哈佛时,马克一代也刚从恩迪克特运送到那里。海军少尉布洛赫在到哈佛的第一天所见到的场景远比他想象的更加激动人心。

因此,马克一代——有史以来所创造的最复杂、最独特的计算机——被交予新委任的37岁的海军军官和她23岁的助手来照管。霍华德·艾肯和IBM的工程师们将一位哈佛研究生关于自动计算机器的理念变成了一个物理现实。现在轮到格雷斯·霍珀和理查德·布洛赫来与这台笨重的机器交流并让它遵照他们的指示来运作了。当时,这两个人完全不曾想到,他们1945年的工作不仅会强有力地帮助战事,而且会向美国的军事界、学术界和商业界的精英们证明大规模自动计算机(即现在的计算机)的可行性。

一个人要如何开始为世界上的第一台操作性计算机编制程序?

一个人要如何开始为世界上的第一台操作性计算机编制程序?在有限的知识和经验的帮助下,海军上尉霍珀面临着让哈佛马克一代的75万个部件有目的地运作并产生精确的求解方法的艰巨任务。这些求解方法远远不是出于学术好奇心,而是对要立即投入军事应用的问题的解答。面对不同寻常的战事压力,霍珀依靠她的能力来保持冷静和理性,全面彻底地思考着问题。

这位编码的初学者意识到,如果她想要机器按照她的意愿来运行,那么她就需要理解马克一代的所有复杂精细的硬件信息。这意味着,尽管她拥有有限的工程背景,但是她还需要立即自学电子学。在哈佛的头两个月里,霍珀用晚上的时间来梳理机器的基本图纸和电路图。如果她无法理解某个开关或继动器的作用,她就会咨询机电维修工程师Bob Hawkins,此人很快在马克一代的初期工作人员中以“维修大师”而著称。

霍珀努力理解机器硬件的坚定决心展示了她创新风格的一面。前大学教授不是会在智力挑战面前退缩的人,即便是主题超出了她的专业能力的范围之外。在瓦萨旁听各种课程和教授非数学课程的九年时间给了她能够学会任何事情的信心。当这些新知识与她所理解的知识结合时,霍珀就成为了能干的问题解决者。为了成为更优秀的程序员,她首先需要理解这台奇特的艾肯发明物的物理特性。霍珀的勤奋努力在未来数月甚至数年的时间里将为她在避免编码错误方面带来额外的优势。


图为海军上尉霍珀和船员怀特检查马克一代的硬件,拍摄于1944年。由史密斯森国立美国历史博物馆档案中心提供

在她接受硬件设计的临时教育时,霍珀对机器的复杂性和大小感到震惊不已。马克一代包含了3 500多个机电继电器,2 300多个存储计数器和成千上万个后面布线的继电器终端。数量庞大的部件是由一个独特的宽3英寸的穿孔纸带协调地结合起来的,穿孔纸带会按顺序将编码指令输送到机器中。与IBM基于穿孔卡片技术的计算机器不同的是,从理论上说,这种连续不断地输入编码的模式能够在从开始到最后不用操作员干涉的情况下完成一个问题。机器在无人直接干涉的情况下会遵从指令的指示,从无法更改指令的顺序这个意义上来说,穿孔纸带上的指令是“固定”的。这个创意在马克一代的官方名字中可以体会到:ASCC。

穿孔纸带上每个编码的序列都会被分成由直径小于1/16英寸的八个圆孔所组成的三个小段。第一段指示计算机寻找其数据的位置;第二段表明放置结果的位置;第三段显示将被应用的程序。孔是根据一个在空间上与数字1~8(数字9代表“减”)相关联的8字节的电码打出的。例如,“753”这个电码由纸带上7、5和3的位置上的孔来表示。自动码指挥机器执行具体的操作,如将计算结果打在穿孔纸带上和打印在打字机上。自动码记录在一个电码本上,或者存储在工作人员的记忆中。

尽管十分复杂,但是马克一代编码纸带的工作原理与在19世纪和20世纪上半叶出现的越来越多的各种各样的其他自动仪器相似。自动钢琴、钟琴和半自动纺织织布机都是依照嵌入到操作结果的控制机制中按顺序排好的信息这个原理来制造的。然而,这些机器都仅限于硬件部分。例如,一个自动钢琴只能根据输入的数据弹奏一支赋格曲或者奏鸣曲,仅限于此而已。马克一代的独特之处在于,数据和操作都能改变,所以机器能够“模拟”火箭的轨道、轮船的航行,甚至是钢琴弹奏的曲调。从其能够变成任何操作者所想要的这个意义上来说,马克一代是第一个通用性计算机。

但是,马克一代的灵活性却因为其运转速度而受到限制。无数部件的周期时间是由一个以200转每分钟的速度旋转的中央传动轴来决定的。传动轴的旋转会转化成300毫秒的基本计算速度。这意味着,主要传动轴每0?3秒转动一周。传动轴驱动整套齿轮,而齿轮控制着计数轮。因此,真正的信息插入,或者两个数字的加减,都是由计数轮的转动完成的一次机械过程。另一方面,乘与除是在机器里不同的乘法区域内进行计算的。

300毫秒的周期时间正好与一行编码的操作完成时间相吻合,也相当于一次加法或减法的操作(我用来写这本书的笔记本电脑的计算效率能达到每秒10亿次加法运算,并且能以比马克一代高出332倍的速率处理信息)。更加复杂的数学运算会更加缓慢。一次乘法运算只需要不超过10秒的时间就能完成;一次除法运算大约需要16秒。对于对数运算来说,马克一代的主要传动轴必须转动298次,因此一次对数运算需要花费90秒的时间。

从现代的计算标准看,马克一代的存储容量也非常有限。马克一代拥有72个存储寄存器,每一个存储寄存器能够容纳23位数的十进小数和其代数符号。就像一辆汽车的里程表通过与一个齿轮系统相连的计数轮来存储行驶里程数一样,马克一代使用的也是齿轮系统,但它是通过十个固定位置来表示数字信息的。存储寄存器使得机器能够在其内部保留中间结果和进行下一步运算。该计算机还能通过开关、数据纸带和穿孔卡片来输入信息。输出结果能够在穿孔卡片上显示出来或者通过自动打字机打印出来。最后,齿轮的所有81个脚、开关、转动轮、轴、传动轴、导线和纸带都在努力模仿一种以一支铅笔和一沓纸为装备的人类“计算机”。

在研究艾肯的“ASCC”一个月之后,霍珀和布洛赫很清楚地认识到这个机器根本不是自动的。没有大量的计划和编码,马克一代的自动化是无法实现的。布洛赫认为,这个过程类似于一个“依次公布射击名单——读出操作的顺序”的监管者。例如,在任何给定的运算中,霍珀必须将输出值的精确度限定到小数(如,第10位,第100位,第1 000位)。这一过程是通过一套相关的插线阵列来完成的,而插线阵列必须不断地重新插入到逐个的问题当中。事实上,每台机器的运行都有一个相关的插线阵列,而每个插入指令都必须具体精确到针对机器的每一次运转。插入指令的一个错误就会导致给定运转的失败,而且,正如霍珀凭着经验所察觉到的,一次粗心大意地将电线交叠会产生灾难性的后果。

为了努力缩短为计算机编码所需的时间,马克一代安装了内置数学函数,包括乘法、除法和三个在现今手持式计算器中普通应用的运算:三角函数、正弦函数和科学计数法(10x)。事实上,这些运算负责相当一部分计算机的继电器,而且艾肯在它们的设计上面投入了大量的精力。对于他所有的努力,霍珀得出的结论是,手工为这些运算编码是最好的。为了产生精确到23位的结果,硬接线操作程序需要将近200次计算机循环,或者大约一分钟;而手工编码只需要那个时间的几分之一而已。大多数节省的时间都归因于手工编码的灵活性。如果在一个给定的问题中,变量x代表一艘船行驶的角度,那么常识表明,这个问题只在十分有限的范围内有解决的价值。哈佛的这个机械头脑却还未聪明到能够区分倾覆的船和漂浮的船。

霍珀发现了其他限制计算机自动功能的怪异的硬件特性。在寄存器中,第24个纵列代表一个负向量。因为是循环进位的电路,每个寄存器都能够将第24位纵列进位到第一纵列。这意味着每当一个问题产生进位结果的时候,如果是负向量,那么9就会在位移的结果中被当做是最重要数字的剩余,否则就会出现许多负数。如果所有的9都出现在存储寄存器中,那么就会出现负零。如果所有的零都在寄存器中,那么就会出现正零。记录负零、正零和九变成了其内部任务,然而,这对得出问题的正确结果来说十分关键。最后,霍珀和布洛赫在战争期间发明的编码方法就不得不做出改进,以适应这台机器怪异的硬件设计。

霍珀对马克一代硬件的兴趣表明了硬件与软件在现代计算机的起源阶段并未明显地区分开来。这种硬件与软件的模糊性在其他主要的美国战事计算机中更加明显,如由宾夕法尼亚大学的约翰·莫克利和小J. P. 埃克特在美国陆军的财务支持下发明的完全电子计算的机器——ENIAC。埃克特和莫克利采用了1.8万个真空电子管作为计算开关,而不是机电继电器,因此达到了每分钟5 000次的较高计算速度。因为电子速度远比将指令和数据通过纸带输入计算机的速度快得多,所以,为了表示需要解决的问题,ENIAC必须进行物理改装。即为了解决正是为之设计的弹道学问题,其硬件重新进行了电线连接。从那之后,编码不再存在,只有硬件操作。

罗伯特·坎贝尔恰当地指出:“ENIAC的系统设计更多的是来源于模拟技术,而非任何其他东西。这可以说是向系统设计的模拟型数字数据的转化。”11换句话说,计算机的“编程”基本上就是计算机物理部件相互连接的方式。从这个意义上来说,ENIAC与Vannevar Bush的微分分析器十分相似,该分析器是由这位享誉盛名的麻省理工学院工程师在20世纪30年代发明的一种精密的机械计算仪器。这种设计的相似性并非偶然,宾夕法尼亚大学也有一台微分分析器,而埃克特和莫克利都曾接受过其使用训练。在1945年到费城访问时,霍珀在首次接触ENIAC的经历中重申了这一点:

当我参观ENIAC时,哈佛与埃克特和莫克利研究的巨大差异都是编程。你看ENIAC——你插入了部件,那么你基本上就为每个工作都创造了一种特别的计算机,而我们习惯于编程和用程序控制的概念;自动排序和ENIAC的插接板系统存在着强烈的对比。

为帮助解决为了每个问题都要重组ENIAC的硬件这个耗时的艰巨任务,埃克特和莫克利从美国陆军导弹研究实验室聘请了六位女性。导弹研究实验室雇佣了近200台“电脑”来为大炮计算发射表,其中大多是新近刚从费城和巴尔的摩地区大学毕业的女性。与哈佛的坎贝尔、霍珀和布洛赫一样,ENIAC的女性工作者们很快就意识到,精确编制计算机程序的唯一方法是彻底熟悉了解其硬件和电路设计。软件的先驱者从根本上来说就是硬件专家。

世界上第一个数据处理中心

在海军上尉格雷斯·霍珀被引进到哈佛马克一代研发中的六天之后,联军部队如暴风雨般攻占了诺曼底海岸。这次勇猛的登陆袭击了连绵50英里受到严密防卫的法国海岸线,集结了5 000多艘舰艇、1.1万架战斗机和16万支军队。历史将诺曼底登陆日(D-Day)确立为希特勒结束对欧洲大陆掌控的开始,但是对霍珀和计算实验室的工作人员来说,霸王计划(Operation Overlord)的结果在1944年初夏时仍处于势均力敌的状态。而且,太平洋战场仍是结果未定,1944年春,日本仍在继续其亚洲国家的猛烈攻击。

第二次世界大战创造了大量需要快速和精确解决的实际计算问题。霍珀仍记得有限的实验室工作人员在面对计算需求时的困境,以及这种需求给这支编程小组所带来的忧虑和不安:“在马克一代的问题上,有迪克·布洛赫、鲍勃·坎贝尔和我。后来我们增加了两名研究此方面的海军少校。但是总的来说,还是我们三人在做这个艰巨的编程工作。”事实上,直到1944年冬,编码的责任几乎完全落在了霍珀和布洛赫的肩上。坎贝尔将他大部分的时间花在了绘制一个新计算机马克二代的蓝图上。在努力拼命地满足不断增加的计算需求的过程中,霍珀和布洛赫研发出了一种编码和成批处理的系统方法,这种方法更加有效和精确且与未来一代的程序员相关。哈佛计算实验室在战争时期所面对的需求在不经意间已经成为了编程革新的动力。

与典型的方式一样,霍珀后来在谈论掌控计算机时轻描淡写地带出了所遇到的错综复杂的问题:“你只是一步一步地告诉计算机具体要做什么。现在用这个数字与那个数字相加,然后将结果显示在那里。现在取这个数字,将它与那个数字相乘,然后显示出结果。你只是将所有的数学过程都分解成一系列加减乘除的小步骤,然后进行一次实验,将它们按照顺序排列。”从理论上说,这个概念并不是难以掌握,但是真实的编码却复杂得多,而且组织的需求也非常大。战时问题的时间紧迫性只增加了与创造技术革新相关的内在压力。


图为海军中校艾肯、海军上尉霍珀和海军少尉坎贝尔站在马克一代前,拍摄于1944年8月4日。霍珀正拿着一个序列控制纸带。由哈佛大学档案馆提供

发明编码系统

阐述问题

霍珀和布洛赫常常发现,问题的发起人能够描述其想要的结果,但是当涉及需要解决的特定方程式时,却总是不知所措。相反,布洛赫和霍珀对问题的来源背景知之甚少。“为了能够解决他们的问题,我们必须学会他们的专业词汇。”霍珀回忆说,“我学会了海洋学、所有的扫雷过程、引爆装置、低空爆炸信管、生物医学等方面的词汇。我们不得不与这些人讨论——所有的事情我们都不得不以数学为开始。”

事实上,霍珀的数学背景为她将口述的问题分解成为基本的数学组打下了基础。她甚至能够处理与热和液体流动问题相关的错综复杂的偏微分方程式,这都得益于数学家理查德·库朗对她的培训。如果她遇到了阻碍,那么艾肯通常会帮助她弄清楚一种求解方法。程序员哈利·科恩回忆说:“艾肯在理解隐晦的方法方面是一个天才。”

霍珀和布洛赫很快就意识到事先决定解的精确度的参数能够节省编码时间,并且结果更加贴切。“在最初的问题中,当我们计算正在精确到了多少位时,这是一个令人恐惧的粗略计算,”霍珀回忆说,“我们当时对此了解并不多。”马克一代精确到了小数点后23位。这在涉及偏微分方程式的时候是必需的。但是在多数情况下,这种极限精确度是多余的。例如,大多数导弹问题需要的解不超过小数点后4位。

霍珀和布洛赫同样不得不考虑四舍五入误差的影响。幸运的是,霍珀渊博的教育背景和八年的教授经历使得她能够处理各种各样的智力挑战。“我比较与众不同,因为大多数数学家对四舍五入的误差完全不了解,而我知道的原因是我曾参加过化学的课程,”她回忆说,“我是在那里了解到四舍五入的误差和计算错误的,而不是在数学中。”

绘制一幅编码计划图

一旦方程式确定,就必须制定最终确定的编码计划图。这包括指令、数据纸带的绘制和小数位的定位。正如在前文中提过的,小数位是由精确的插线板配置控制的。一般配置为72个23位的寄存器的内存限制严重影响了指令和数据纸带的绘制。中间结果不得不记录在穿孔卡片上,然后再次输入到计算机中进行下一步运算。每一次输入和输出都需要编排乘法指令纸带和人的不断干涉。

起先,霍珀和布洛赫都在研究他们自己的问题。“我到了了解计算机就像了解我的手背一样的地步,”布洛赫激动地回忆道,“无论是插入还是电子问题,或者是电路、排错或编程的问题。”但是时间花在解决问题上就意味着时间没有花在阐述和编译其他问题上。操作马克一代很快就变成了应征入伍的海军士兵的责任,因为这支哈佛团队作为计算机输出最大化的一种手段变成了职业的分工。

哈佛在战争期间进行的人事调配为未来计算机行业的职业分工开创了重要的先例。“编码”(后来所称的“编程”)变成了如霍珀和布洛赫这样的技艺精湛的数学家的工作。诸如纸带穿孔和插线板操作等这些基础工作被分配给了技术略差的操作员。在哈佛,编码师和操作员地位的差异在军衔形式上也有表示:编码师是军官,而操作员只是征募的士兵。

创建操作指南

霍珀和布洛赫将新的“操作员”职位的角色和责任编撰成书。操作员负责从头至尾的计算过程。他们拥有霍珀和布洛赫所写的以“操作指南”著称的指导书的辅助。操作指南与计算机的主要指令带相似,它描述了操作员按照顺序所实施的步骤。所有的插线板都绘有插接图。例如,打印机的插线板控制着打印机器的小数点位数。它设定了标记位置、垂直间距和水平间距,并消除了无意义的零位。其他插线板控制着输入纸带传送、输出卡片穿孔和乘除单元。另外,每一次运转都必须设定一系列转换开关。数据转接将常量引入问题中,而控制开关则控制着各种机器单位。

操作员不仅仅需要手工设定初始的寄存器、开关和插线板设置;这些设置在一定的运转数量之后还需要改变。每一次运转都需要适当的手工对指令和输入纸带进行排序。如果一个输出变量达到了特定的界限值,那么还需要采取一些行为。操作员的积极参与降低了马克一代完全是自动运算机器(其正式名称便显示了这一点)这种说法的可信度。毋庸置疑的是,艾肯将自动化的概念作为指导原则,但是在现实中,该计算机硬件的内部局限需要人工的干涉。这种人与机器的共生关系导致了最终的结果。

强制的职业分工使得马克一代能够每天24小时,每周7天地运作。在海军舰载组织中,操作员以三班倒的轮班制来“看守”,包括午夜至8点的时间段。霍珀和布洛赫管理着看守值班表,确保人员接受了恰当的训练,并且介入处理超出操作员专业技能之外的问题。半夜接到的大多数电话都是因为疑难故障需要排除,而这有效地将霍珀和布洛赫放在了每天24小时待命的位置上。操作员罗伯特·伯恩斯(Robert Burns)仍然记得布洛赫在2或3点时在电话那端昏昏欲睡的情景。“你需要吹口哨,尖叫,否则你是叫不醒他的。”伯恩斯回忆说。


图为1945年拍摄的马克一代的一条序列控制纸带。由哈佛大学档案馆提供

为序列控制和数据带编码

将编码从程序纸上转移到传动带上是编码过程中最艰难最费劲的部分。霍珀通过安排小组为每条纸带穿孔来降低此过程的单调性。1944年12月,在解决问题L时,霍珀将序列纸带分配给Livingston和韦当历克,将数值纸带分派给了Knowlton、Brendel、Bissel和White。接着,为了保证质量,她创建了新的团队。Knowlton、Brendel和凯尔文负责序列纸带的精确性,Hawkins、Bissel和凯尔文检查数值纸带。正如霍珀在操作指南中所写的,整个流程是“由美国海军后备队的格雷斯·穆雷·霍珀来计算、设计、编码、娇养、照看、取悦和哺育的。”

测试

在控制带和数据带制作完,操作指南书写完之后,揭露真相的时刻就到了。问题的初次运算被称为“测试”。尽管准备编码过程中的用心和精确度到了这种程度,但是工作人员冷静的逻辑仍会让位于盲目的信仰。为了缓解“真相时刻”的紧张气氛,操作员罗伯特·伯恩斯回忆说,在一个纸带准备完,然后被放进机器中之后,工作人员会拿出祈祷用的跪毯,面朝东方,然后祈祷他们的工作不会白费。

“测试”以一条“启动带”开始,每穿过一次,启动带就能够在问题解决之后将初始值存入72存储寄存器中。操作员设定和检查初始插线板和开关设定,然后主要序列控制带和数据带被装载到机器的传送装置上。当按下开始的按钮时,传动轴就开始转动,继动器咔嚓作响,然后马克一代就苏醒过来了。

在测试运算时,机器运作所发出的悦耳声音通常维持不超过30秒的时间便会咔嚓一声暂停。第一次是很难成功的。相反,操作者获取所有相关的存储位置的全部输出显示,然后由霍珀和布洛赫分析这些输出信息来寻找线索。这种侦查工作能揭示为什么机器会停止运转,然后重复整个过程,直到问题得以解决,获得最终结果。

组合输出值

马克一代的输出值是由两台电传打字机来记录的。在1944年秋,答案从计算机中流泻而出,却是一堆混乱无章的数字。“我们还未完全学会如何控制打字机,它会将数值以成批的方式打印在一张纸上。”霍珀回忆说,“还有许多操作打字机的技巧有待发掘,我们必须学会如何优化所有的零件。”

霍珀是第一个意识到马克一代能够通过打字机来编排结果格式的人,这在当时只是一个次要的顿悟,但是却将带来不可忽视的重要影响。如果计算机能够用于控制打字机,那么它就能用来控制任何机械程序。霍珀最初进行的一个实验就是为计算机所产生的数学函数一览表附上页码。“在午餐时间,当艾肯离开办公室时,我放入了一个只加1的程序,打上数字和行间空白,然后将其如一列数字一样打印出来。”她回忆说,“但是他进来了,发现我在使用价值75万美元的马克一代来加1和打印数字——浪费了计算机的时间——噢,他气得火冒三丈。”最终,霍珀说服艾肯相信了利用马克一代来编制页码和格式文本与坐在打字机旁边人工重做信息报告要快得多。而且,将人从输出程序中脱离出来将有助于确保精确性。

霍珀和布洛赫在战事的压力下发明的编码系统迅速且精准地阐述了给定的问题,将该问题提炼为能够用计算机编码表示的数学公式,创建了用来对一系列插线板和开关进行排序的操作指南,创造了序列控制带和数据带,为这些纸带提供了质量保证,测试了该问题,并且组合了输出值。该系统穿插了从船载和工厂运作中借鉴而来的一种可区分的组织结构,并且充分利用了劳动分工所带来的高效率。最终的成果是一个能够每周7天,每天24小时都能产生精确解的数据处理中心。这是数据处理中心的最早模板,直到20世纪60年代分时的发明和实施之前,它一直统治着计算机领域。

第一个电脑黑客

在她到来的6个月里,海军上尉格雷斯·霍珀将自己从一个计算机新手转变成了该领域的一名新秀专家。她所发明与理查德·布洛赫成功使用的编码系统满足了由现代战争必需品所产生的不断增加的需求。战时情况要求哈佛团队以一种在和平时期少有经历过的速度来工作。到1945年冬,马克一代已经完成,并且95%的时间都在运转,考虑到几乎处于同一时期内的宾夕法尼亚大学的ENIAC所遭遇的操作难题,这真是令人难以置信。

尽管马克一代在可靠性方面取得了巨大进步,但是其硬件却对速度强加了理论限制。主要传动轴的循环运转设定数据处理的速度为300毫秒。数据和指令输入的速率受限于传送机制的机械速度,而且信息必须按照顺序输入——这就是说,纸带无法为了输入先前的命令或数据而自行倒退。

纯粹出于需要,霍珀和布洛赫开始研究创新编码方法以提高硬件的性能。“早在1944年,我们就开始组合一些能将准确程序编写得更多和更快而且越发简单化的东西。”霍珀回忆说。而且,与她在整个事业中所取得的诸多计算机领域的突破进展一样,“熟练的”反复实验转变成了革新。“没有理论,没有更高等的数学,”霍珀说,“没有计算机的未来,只有解决那些问题。”战争其实变成了发明之母。

利用他们在硬件方面的知识,霍珀和布洛赫意识到,一点点编程的精巧设计就能够在传动轴旋转次数最少的前提下将计算机的数据处理能力最大化。例如,对于一次需要转动25圈的运算来说,事实上只有5圈在计算机的主线上产生了功效。霍珀和布洛赫开始在指令中嵌入额外的运算,确定嵌入的编码不会对正在进行的基本运算造成相反的影响。例如,打印命令可以嵌入到乘法运算中。很快,这变成了编写可以将嵌入指令的数量最大化的程序的标准用法。结果,处理时间减少了36%之多。因为马克一代相对缓慢的处理速度,36%很轻易地就能够累积成数个星期的时间节省。

“黑客”的最初形式34能够创造一些非常高效率的编码,但是它也会产生有害的后果。例如,嵌入了额外编码的程序的逻辑流程会变得非常复杂。事实上,这个流程复杂到了操作员几乎不可能译解出究竟发生了什么的程度。霍珀承认,当她试图处理布洛赫的入侵时,她甚至也感到不知所措。“迪克曾经一夜之间改变了马克一代的指令,”她回忆说,“如果他想到了一个能够将他的某个问题简单化的不错指令,他就会输入其中,然后第二天早上,我们所有的纸带就都不能用了。”

复杂的编码同样也使得对计算机停止运转的原因分析变得很困难。霍珀和布洛赫两人都很难译解他们自己造成的结果,尤其是在编写密码和执行编码之间的充足时间已经过去了。为了设法解决这个问题,霍珀在其编码中制定了一种记录方法。她在用来穿孔的主导程序纸上写上与每行编码相对应的符号和方程式。随着哈佛队伍的不断壮大,布洛赫和其他人很快就采用了这种方法,而程序记录最终编程了编码师和程序员的常规做法。

其他加速数据处理时间的技巧没有这般精妙。霍珀使用了一种特别有趣的方法来控制“四舍五入”在小数点后23位之内。霍珀将其硬件知识应用到了创造理想的四舍五入的效果,即通过重新装备计算机,而不是编制精确度有限的密码:“我拉动继动器,我拉动单元中较低的十二个位置继动器。”这种做法一直很有效,直到有一天晚上,她忘记了重新连接计算机。下一轮值班的操作员对马克一代的奇怪行为迷惑不解,于是打电话请霍华德·艾肯来诊断问题所在。愤怒不已的艾肯自此禁止霍珀或其他人通过重装硬件来达到他们的编码需求。

计算机中的飞蛾

在许多关于格雷斯·霍珀的趣闻轶事中,其中最著名的故事便是发现第一只计算机“bug”。“bug”这个术语是在从托马斯·爱迪生时代开始才被工程师用来描述机械故障的。霍珀应该因将此术语引入计算机语言中而受到赞誉,尤其是在编程语言中。她是这样描述关于这只现已臭名昭著的飞蛾事件的:

当我们为马克二代排除故障的时候,我们是在另一栋建筑中工作的,那里的窗户没有玻璃,而且我们是在晚上工作的,当然,世界上所有的臭虫都会跑进来。一天晚上,它(马克二代)突然失灵了,我们就开始寻找故障所在,然后就发现了一只真的大臭虫,它的翼长大概有四英寸,在一个继电器中被压死了,我们取出它,将它放在工作笔记本中,用思高(Scotch)胶带贴起来。

从那以后,霍珀和哈佛的其他工作人员在硬件或者编码出差错时就会告知艾肯他们正在“除虫”,这已经成为了习惯说法。

飞蛾的神话故事使得在几代程序员看来是严肃重要的问题却变得十分有趣。硬件和软件中的“bug”有可能会影响早期计算机到它们的使用都成问题的地步。在英国计算机先驱莫里斯·威尔克斯的回忆录中,他回忆了他在1949年开始觉察到排除故障的窘境的时刻:

我清楚地记得这种意识以泰山压顶之势向我袭来的时刻。自动延迟存储电子计算机(EDSAC)在最顶楼,纸带穿孔和编辑设备在倒数第二层,我尝试着让我的第一个不平凡的程序运作起来,这个程序是为了艾瑞(Airy)的微分方程式的数值积分而设计的。这种意识如泰山压顶之势向我袭来是在一次我来回于EDSAC机房和“踟蹰在楼梯拐角处”的穿孔设备之间的时候,我意识到,我剩下的人生很大一部分都会在寻找我自己程序的错误中度过。


“第一只被找到的真实臭虫”,存放在马克二代于1945年9月9日当天的工作日志中。图片由史密斯森国立美国历史博物馆档案中心提供

威尔克斯的观察对计算机的未来具有重大的意义,因为EDSAC是第一台拥有存储程序能力的操作性电子计算机。但值得关注的是,哈佛的工作人员在5年前就得出了同样的结论。在回忆战争中的那段动荡时期时,罗伯特·坎贝尔悲痛地说,故障危机到了整个马克一代项目:“有一段时间,对于我们是否真的能够让机器以任何我们满意的方式运转这个问题,甚至到了一触即发的紧急状态。看起来就像在我们找到正在寻找的故障之前就又会有新的故障出现。”霍珀补充说,马克一代遵守墨菲定律:这个机器可能发生的任何糟糕事情都真的发生了。

霍珀、坎贝尔和布洛赫在为排除故障寻找常规解决方法和步骤上投入了大量的精力。与物理学家一样,他们辨识症状,做出诊断,然后确定疗法。有时候,症状很明显,就像马克一代突然轰隆一声崩溃了:“这种崩溃发出的声音听起来就像是一架飞机撞上了高楼,”霍珀回忆说,“你以前从来不会听到这种轰隆声。”但是大多数症状都难以捉摸。错误的解是最让人伤脑筋的结果,输出值精确性的确认就变成了例行工作。如果存在以前确立的准确解,那么可以将结果进行对比。但是在大多数情况下,工作组需要通过另一种计算途径来得出结果。有时,布洛赫甚至用机械台式计算器来检查结果。“用十进制的台式机器来将除法运算精确到小数点后51位,”他强调说,“可以说是残酷且奇异的惩罚。”

但是,在台式计算器上检查每一个结果使得拥有一台大型自动机器的计划落空。霍珀得出的结论是,机器应该尽可能地进行自行检查。用两个不同的方法求解问题,然后将结果进行对比。故障会导致产生出同样错误的答案的这种可能性是极小的。这种复查核对的方法是由操作员在解答问题的中间步骤中实施的。在发现错误的时候,霍珀和布洛赫会采取“回退”的方法来找出问题出错的点。

硬件故障

如果操作员确定编码是“干净”的,操作步骤是正确的,那么故障就出在了硬件上。这就要求检查无数继电器和计数器,这项任务因为机器的体型和设计而异常艰巨。霍珀记得,她的手提袋中微不足道的镜子变成了检查价值75万美元的机器更受青睐的工具:

我总是会带着一个小镜子。一种寻找马克一代故障的方法是,它们经常是由计数器的电刷磨损出现火花而引起的。所以,他们会关掉所有的灯,借用我的镜子,然后继续运作机器,他们就在计数器中寻找火花,而镜子则会反射出火花。

如果故障无法从霍珀的镜子中看到,那么通常经过训练的耳朵还是能够听出来的。在马克一代的接合装置接合和旋转时,它会发出一种独特的声音,布洛赫将这种声音比作是马蹄踏在铺上柏油的街道上发出的咔嗒声。这种稳定的杂声便随着存储计数器和继电器规律地咔嗒着。不同的故障会导致截然不同的不同步的节奏声。弗雷德里克·米勒(Frederick Miller)是于1946年加入哈佛团队中的一名编码师,他还记得能够只依据剧烈振动的机器所发出的不同声音来确定硬件中的问题所在。

硬件故障所产生的独特声音让其他工作人员惊慌无比,它也充当着霍华德·艾肯的警报系统。艾肯的办公桌靠在机器旁边,他常常会开着门,以便他能听到机器“数据处理”(他喜欢这样说)的嗡嗡声。无论这位上校看起来有多忙碌,如果机器那里传来了不同寻常的噪声,那么他都会立即向霍珀和布洛赫要求答案。艾肯过度热忱的性格迫使霍珀在无数宁静独处的夜晚时光里都在完成她的故障排除工作。

为了减少硬件故障的发生频率而付出的共同努力不仅提高了硬件的效率,它还通过将潜在的错误缩小在编码和操作问题中而使得故障排除更加容易。很多硬件故障都被确定与马克一代的继电器设计有关。根据电流对继电器开关的作用,继电器要么显示1,要么显示0(开或关)。如果继电器运行不正常,那么原因就是控制其行为的电流受到了干扰。有时候,当金属脱落并且被卡在接触器中间时,那么继电器就会冒出火花。在其他时候,电线连接的不足又会导致继电器根本无法闭合。问题可能因为机器的巨大体型和复杂程度而变得更加严重——机器拥有75万个活动件。在1944年的夏天和秋天,不合格和勉强合格的硬件装置都被清除了,并且换上了可靠性更强的部件。因为战争时期的材料紧缺,从旧钢琴中回收利用的导线最初代替了更加优质的材料。钢琴丝碰到黄铜触点的电阻比想象中的还要大,这导致继电器接触不稳定。

艾肯选择了机电继电器,而没有选择其他可用的技术,这是因为机电继电器在电话行业中已经被证明具有可靠性。继电器在电话网络中被用作配电主干,而它是在20世纪30年代中期被George Stibitz第一次引用于计数中的。斯蒂比兹当时是贝尔电话实验室的一名数学研究家,他已经绘制出了一种加入到二进制中的继电线路。二进制运算用一列1和0来表示以十为基础的数字,例如,1表示为0001,2表示为0010,3表示为0011等。

权衡机电继电器的可靠性是速度。对于电话继电器来说,速度是由人的手指能够拨号的速率决定的。ENIAC用的真空管的速度似乎是马克一代继电器速度的数千倍。建造于1904年的第一个真空管是电灯泡的一种变体。这个发明物使得工程师能够调节和增强电流,但是正如约翰·莫克利所发现的,真空管同样也适用于二进制计数器,因为它能够中断和启动电流,就像一扇门一样。基础真空管拥有两种状态(接通和断开)。但是线路中的电流的速度几乎是光速,而继电器的电枢却受到有限的机械运动的控制。自那以后,管道能够如机电继电器运作的方式一样来充当二进制的开关,但是速度更快。

在20世纪40年代,一支真空管的运作寿命只有几百个小时。因此,拥有几千个真空管的机器在运行一分钟或两分钟之后就可能会出现故障。ENIAC含有1?8万个真空管,艾肯保守地认为,这样一台机器永远也运转不了。考虑到与真空管相联系的在理论上存在的复杂性,他更愿意接受机电继电器可能会遭遇但是容易处理的故障。

为故障编码

如果硬件故障能够排除,那么最可能的错误源就是问题的编码。遗憾的是,理查德·布洛赫回忆说,编码容易遇到各种疏忽和谬误。一个编码师可能取了错误的运算数或者错误的算术运算。错误可能出在编码师的输入常量或初始值的计算上。遗漏和重复在编码师将指令转化成机器语言的过程中很常见,而穿孔带、穿孔卡片和插线板指令的准备也容易导致人为失误。“我们必须一步一步地检查操作,”坎贝尔明确地表示,“直到我们发现不对的地方,接着对照着电路表,试着弄清楚问题所在。”这不是一个简单直接的过程,因为编码错误可能会伪装成插头问题等。

马克一代的编码需要全面地考虑大量细小的步骤,然后书写出实施这些步骤的指令。例如,我们用离开房子去取邮件来做个类比。在高级计算机语言中,这套等义指令会类似于“走出前门,沿着马路一直走到街道的岔口处,然后你的左边就是邮箱”。在马克一代机器语言中,定义的指令可能听起来更像“找出你的右脚,将你的右脚向前一步,然后找出你的左脚,将你的左脚放到右脚前,重复此动作二十次……”为了将错误减到最少,霍珀必须将编码的细节都牢记于心,而不能在此过程中让步骤出现混乱。

解决这一问题需要发明防护性的工具、做法和方法。编码最初是用笔在标准编码纸上一行一行地手写出来的。编码纸留有注释的地方,能够让霍珀和布洛赫在每行编码的旁边附上方程式解释和书面说明。一份完整注释了的编码纸为问题提供了整洁易懂的记录,能够让第二个人进行复查核对。

计算机操作员拥有能够帮助他们从头至尾操作程序的明确说明书。对照插接图复查所有的插线板,重新设置控制数据开关编程了的标准操作步骤。在遇到故障的情况下,必须严格遵从再运行的指令,穿孔卡片上的初步输出数据在被重新输入之前会按照原始数据进行手工比较。正如布洛赫所回忆的,为了减少手工操作的错误和减少运行的时间,最好的编程技巧要求将操作员的干涉降到最少。

哈佛团队在战争时期没有做的事是钻研进行自动检查的硬件的可能性。尽管在贝尔实验室大家意识到了,并将大量的精力投入创建自检电路中这一情况,但是坎贝尔和艾肯最初并未预见此附加设计的需求,甚至是在未来的计算机中。“我认为,我们感觉这已经有了足够可靠的部件……我们在没有机械自检能力的情况下也会成功。”坎贝尔回忆说。

无故障穿孔纸带和操作员说明书并不能保证成功的结果。硬件运作自身就存在潜在的故障。错误的开关和继电器设置、不当插线、未能遵从再运行指令和数据穿孔卡片的错误排列都会为获得快又准的结果带来了巨大的挑战。不当的硬件操作甚至会具有致命性,一个叫做David Green的操作员不小心将其领带卡在了序列机制中而差点窒息而死的案例正好说明了这一点。

硬件臭虫、编码臭虫和操作臭虫的横行肆虐威胁到了第一台计算机的成功。让哈佛马克一代逃离失败的唯一法宝就是格雷斯·霍珀、理查德·布洛赫、罗伯特·坎贝尔和其他哈佛工作人员所设计出的独特性能和有效的操作方法。到了1946年春,罗伯特·伯恩斯回忆说,布洛赫“已经到了对程序了如指掌的程度,他能够告诉你哪个继电器出现了故障,哪个计数器坏了。”在承受着战争的冷酷压力的时候,他们已经掌握了马克一代。 

精彩页(或试读片断)回目录



《60Minutes》的访谈所促成的嘉许,她当之无愧,但是这次访谈也表明了言语与现实之间日益扩大的分歧。自1983年以后的公众论述都存有并永远保持着格雷斯·霍珀的“神话”,将她描述成为一位只对计算机编程负责的英雄先驱人物。而且,正如在她晚年接受的采访、相关的文章和演讲中证明的,霍珀在很大程度上都很享受受人瞩目,而这只是进一步深化了她的神话。编写本书的目的在于在计算机产业初期的背景下,剥开言辞的外衣,发掘一个更加真实的格雷斯·霍珀。在本书中所描绘的年轻强劲、活力四射的格雷斯·霍珀远比那些著名媒体所描绘的年老的海军上将更加复杂,并且更加具有人的本性。
关于霍珀少将晚年时期的轶事俯拾皆是,大多数人都是在强调她最受人赞美的品质:近乎反抗的傲慢。然而,她人生的最初36年却以一定程度的坚守传统为特征。在20世纪20年代,来自美国东北部的经过特许的女性追求更高等的教育并没有什么稀奇的。事实上,在20世纪20年代到30年代初这段时期,获得了数学博士学位的女性所占的百分比直到20世纪80年代才又一次达到。。这提醒我们,美国女性解放的历史并非是呈直线型的,其中出现了几次机遇和退后,而不是一直持续稳定地进步。例如,在第一次世界大战之后的十年里不断增多的机遇,接着在大萧条时期出现的紧缩。霍珀在20世纪20年代成年,而她的公开选择和私人选择都是与她的家庭和社会的意愿相一致的,而不是相矛盾的。
珍珠港遇袭和相继而来的动员为女性创造了前所未有的事业机遇。劳动力的大规模重组放开了大量在1941年12月7日前专为男性所设的职业。当时,最具象征意义的文化形象铆钉工人萝西(Rosie the riveter)代表了数亿在劳动力方面取代了男性的女性,因为男性都派遣到了欧洲和太平洋地区。与她那一代数十亿的其他女人一样,霍珀也在这次劳动力转移中获益良多。而珍珠港事件正是格雷斯·霍珀私人生活及其事业的一个分水岭。
    第3章  计算机编程的起源
    一个人要如何开始为世界上的第一台操作性计算机编制程序?在有限的知识和经验的帮助下,海军上尉霍珀面临着让哈佛马克一代的75万个部件有目的地运作并产生精确的求解方法的艰巨任务。这些求解方法远远不是出于学术好奇心,而是对要立即投入军事应用的问题的解答。面对不同寻常的战事压力,霍珀依靠她的能力来保持冷静和理性,全面彻底地思考着问题。
    这位编码的初学者意识到,如果她想要机器按照她的意愿来运行,那么她就需要理解马克一代的所有复杂精细的硬件信息。这意味着,尽管她拥有有限的工程背景,但是她还需要立即自学电子学。在哈佛的头两个月里,霍珀用晚上的时间来梳理机器的基本图纸和电路图。如果她无法理解某个开关或继动器的作用,她就会咨询机电维修工程师Bob Hawkins,此人很快在马克一代的初期工作人员中以“维修大师”而著称。
    霍珀努力理解机器硬件的坚定决心展示了她创新风格的一面。。前大学教授不是会在智力挑战面前退缩的人,即便是主题超出了她的专业能力的范围之外。在瓦萨旁听各种课程和教授非数学课程的九年时间给了她能够学会任何事情的信心。当这些新知识与她所理解的知识结合时,霍珀就成为了能干的问题解决者。为了成为更优秀的程序员,她首先需要理解这台奇特的艾肯发明物的物理特性。霍珀的勤奋努力在未来数月甚至数年的时间里将为她在避免编码错误方面带来额外的优势。
    在她接受硬件设计的临时教育时,霍珀对机器的复杂性和大小感到震惊不已。马克一代包含了3500多个机电继电器,2 300多个存储计数器和成千上万个后面布线的继电器终端。数量庞大的部件是由一个独特的宽3英寸的穿孔纸带协调地结合起来的,穿孔纸带会按顺序将编码指令输送到机器中。与IBM基于穿孔卡片技术的计算机器不同的是,从理论上说,这种连续不断地输入编码的模式能够在从开始到最后不用操作员干涉的情况下完成一个问题。机器在无人直接干涉的情况下会遵从指令的指示,从无法更改指令的顺序这个意义上来说,穿孔纸带上的指令是“固定”的。这个创意在马克一代的官方名字中可以体会到:ASCC。
    穿孔纸带上每个编码的序列都会被分成由直径小于1/16英寸的八个圆孔所组成的三个小段。第一段指示计算机寻找其数据的位置;第二段表明放置结果的位置;第三段显示将被应用的程序。孔是根据一个在空间上与数字1~8(数字9代表“减”)相关联的8字节的电码打出的。例如,“753”这个电码由纸带上7、5和3的位置上的孔来表示。自动码指挥机器执行具体的操作,如将计算结果打在穿孔纸带上和打印在打字机上。自动码记录在一个电码本上,或者存储在工作人员的记忆中。
    尽管十分复杂,但是马克一代编码纸带的工作原理与在19世纪和20世纪上半叶出现的越来越多的各种各样的其他自动仪器相似。自动钢琴、钟琴和半自动纺织织布机都是依照嵌入到操作结果的控制机制中按顺序排好的信息这个原理来制造的。然而,这些机器都仅限于硬件部分。例如,一个自动钢琴只能根据输入的数据弹奏一支赋格曲或者奏鸣曲,仅限于此而已。马克一代的独特之处在于,数据和操作都能改变,所以机器能够“模拟”火箭的轨道、轮船的航行,甚至是钢琴弹奏的曲调。从其能够变成任何操作者所想要的这个意义上来说,马克一代是第一个通用性计算机。
    但是,马克一代的灵活性却因为其运转速度而受到限制。无数部件的周期时间是由一个以200转每分钟的速度旋转的中央传动轴来决定的。传动轴的旋转会转化成300毫秒的基本计算速度。这意味着,主要传动轴每0.3秒转动一周。传动轴驱动整套齿轮,而齿轮控制着计数轮。因此,真正的信息插人,或者两个数字的加减,都是由计数轮的转动完成的一次机械过程。另一方面,乘与除是在机器里不同的乘法区域内进行计算的。
    300毫秒的周期时间正好与一行编码的操作完成时间相吻合,也相当于一次加法或减法的操作(我用来写这本书的笔记本电脑的计算效率能达到每秒10亿次加法运算,并且能以比马克一代高出332倍的速率处理信息)。更加复杂的数学运算会更加缓慢。一次乘法运算只需要不超过10秒的时间就能完成;一次除法运算大约需要16秒。对于对数运算来说,马克一代的主要传动轴必须转动298次,因此一次对数运算需要花费90秒的时间。。
    从现代的计算标准看,马克一代的存储容量也非常有限。马克一代拥有72个存储寄存器,每一个存储寄存器能够容纳23位数的十进小数和其代数符号。就像一辆汽车的里程表通过与一个齿轮系统相连的计数轮来存储行驶里程数一样,马克一代使用的也是齿轮系统,但它是通过十个固定位置来表示数字信息的。存储寄存器使得机器能够在其内部保留中间结果和进行下一步运算。该计算机还能通过开关、数据纸带和穿孔卡片来输入信息。输出结果能够在穿孔卡片上显示出来或者通过自动打字机打印出来。最后,齿轮的所有81个脚、开关、转动轮、轴、传动轴、导线和纸带都在努力模仿一种以一支铅笔和一沓纸为装备的人类“计算机”。
    P27-29 

参考文献回目录

http://www.bookuu.com/kgsm/ts/2010/12/31/1897508.shtml
http://book.douban.com/subject/5402533/

→如果您认为本词条还有待完善,请 编辑词条

标签: 《优雅人生》