70 年前一场由女性打头阵的程式设计革命

程式设计

战时打造的所有机器,最初构思时都以完成某项特殊工作(例如解方程式或破解密码)为目标。但在爱达或图灵心目中,真正的电脑应该能完美且快速的执行任何逻辑作业。如此一来,机器的作业就并非只由硬体决定,软体(可以在上面跑的程式)也扮演重要角色。图灵再度清楚说明这个概念:「我们不需要靠无数的不同机器来完成不同的工作。」他在 1948 年写道:「只需要一部机器就够了。在办公室为通用机器『设计程式』来完成这些工作,取代了为执行不同工作而要生产不同机器的工程问题。」

理论上,像 ENIAC 这样的机器应该可以程式化,甚至当成通用机器来使用。但实际上,载入新程式的程序非常辛苦,包括必须动手一一拔除连结电脑中不同单元的电缆。战时打造的机器无法以电子速度转换程式,因此催生现代电脑的下一个步骤就很重要:设法把程式储存在机器的电子记忆体中。

霍普—胆识过人的程式设计先驱

从巴贝奇以降的电脑发明者都把焦点放在硬体上。但二次大战期间参与计算工作的女性和爱达一样,很早就看出程式设计的重要。她们设法把指挥硬体作业的指令编成程式码,软体中蕴含的神奇程式,能以奇妙的方式改变机器的作业。

这群程式设计先驱中,故事最缤纷有趣的是胆识过人、活泼迷人的海军女军官霍普(Grace Hopper),她先是为哈佛大学的艾肯工作,然后又加入艾科特和莫渠利的团队。她在大学时代主修数学和物理,从瓦萨学院毕业后,进入耶鲁大学攻读研究所,并且在 1934 年拿到数学博士的学位。

出人意料之外的是,霍普的教育过程在当时其实不算太不寻常。耶鲁大学在1895 年首度颁发数学博士学位给女性,而她是第十一位获颁耶鲁数学博士学位的女性。女性数学博士在 1930 年代并不算太罕见,尤其如果她们出身名门的话。事实上,比起后来的世代,霍普成长的年代更常见到女性数学博士。1930 年代,美国有 113 位女性获得数学博士学位,占美国数学博士总数的15%。但到了 1950 年代,只有 106 位女性获得数学博士学位,只占总数的 4%。(到了二十一世纪的最初十年,情况已大幅好转,那段期间美国总共有 1,600 位女性获颁数学博士学位,占总数的30%。)

嫁给比较文学教授文森.霍普(Vincent Hopper)之后,葛瑞丝.霍普到瓦萨学院任教。和其他数学教授不同的是,她坚持学生必须具备良好的写作能力。她上机率课时,会先讲解自己最爱的数学公式1,然后要求学生以此为题写一篇文章。她批改时,也会就文章清晰度和写作风格来评析。

「我(在文章上)写满评语,而他们会抱怨这是数学课,又不是英文课,」她回忆道:「然后我会解释,除非他们懂得怎麽和别人沟通,否则学习数学毫无用处。」终其一生,霍普一直很擅长把科学问题(例如有关轨道、流体流动、爆炸、天气型态的问题)转换为数学方程式,然后再翻译成一般人听得懂的英文。这项才能也帮助她成为优秀的程式设计师。

⋯⋯

霍普的长处是很懂得把现实世界的问题转化为数学方程式,然后用机器能够了解的方式下达指令,和机器沟通。「我学习海洋学的术语,还有和扫雷、雷管、近发引信及生医领域相关的种种词彙,」她解释:「我们必须学习他们的用语,才有办法解决他们的问题。我可以随时转换词彙,先用高度技术性的术语跟程式设计师沟通,然后几小时之后,再用完全不同的词彙向主管报告相同的事情。」要成功创新,有赖于清楚的沟通。

由于霍普清晰准确的沟通能力,艾肯指派她撰写电脑程式设计手册,这是全世界第一部程式设计手册。有一天,艾肯站在霍普的办公桌旁,对她说:「你要写一本书。」

「我没办法写书,」霍普回答:「我从来没有写过书。」

「你现在加入海军了,」艾肯说:「你要撰写一本书。」

结果霍普写出一部厚达五百页的巨著,裡面包含了马克一号的发展史和程式设计指南。霍普的引言就从巴贝奇开始说起。她和爱达一样,知道巴贝奇分析机有一种特质,也就是她和艾肯所深信,马克一号有别于其他电脑的特质。艾肯的马克一号和巴贝奇未完成的机器一样,藉由打孔纸带接收源源不绝的指令,可以透过重新编程,传达新的指令。

霍普每天晚上都把当天撰写的内容唸给艾肯听,她因此领悟到成为优秀写手的简单诀窍,她说:「他指出,如果你大声朗读时,会结结巴巴读不顺,那麽最好修改句子。我每天都得朗读五页我写下的内容。」于是,她写的句子变得简洁、生动、清晰。霍普和艾肯成为最佳拍档,活生生是百年前爱达与巴贝奇的现代翻版。霍普愈深入了解爱达,就愈认同她。「她写了第一个程式迴圈,」霍普说:「我绝对不会忘记这点。我们都不会忘记。」

霍普撰写的电脑发展史偏重个人,所以她的书强调个人角色。反之,在霍普的著作完成后没多久,IBM 的主管也推出自己的马克一号发展史,把大部分功劳都归诸在纽约恩狄考特建造机器 IBM 团队。「以组织历史取代个人历史,最符合 IBM 的利益,」曾深入研究霍普的史学家拜耳(Kurt Beyer)指出:「根据 IBM 的说法,公司才是科技创新的所在。组织裡的工程师团队扮演无名英雄,逐步推动进步,取代了独自在实验室或地下室埋首研究的激进发明家。」在 IBM 版本的历史中,马克一号涵盖的一长串小创新(例如棘轮式计数器和双层馈卡机制等),都要归功于一群工程师在恩狄考特默默耕耘、通力合作所促成的。2

霍普版的历史和 IBM 版之间的差异,其实不只关乎谁功劳最大的争议,而隐含了更深远的意义,进一步暴露出双方的创新史观在根本上的差异。和霍普一样,有些科技相关研究也强调创意十足的发明家推动了跳跃式的创新。其他研究则强调团队和组织的角色,例如贝尔实验室工程师的努力,以及 IBM 恩狄考特团队的合作成果。后者试图说明,有些科技突破也许表面看来像是灵光闪现后的大跃进,实际上却是逐步演进的结果,等到各种想法、概念、技术和工程方法都同时酝酿成熟时,才一举毕其功。这两种科技发展史观都不够完善。事实上,数位时代大部分的伟大创新,都仰赖拥有高度创造力的个人(莫渠利、图灵、冯诺伊曼、艾肯等),和有能力实现创意的团队之间的良好互动。

霍普在哈佛大学开发出来的其中一种程式是「次常式」,是为了特殊工作而编写的大段程式码,可暂时储存起来,在主程式某个部分需要用到时再叫出来使用。「次常式是明确、简洁,而且通常一再重複的程式,」她写道:「哈佛的马克一号包含了为 sin x、log10x、10x 设计的次常式,每个次常式都用一个作业码来呼叫。」

爱达在关于分析机的评注中,最先描述了这个概念。霍普累积了许多这类次常式。她为马克一号写程式的时候,也发展出「编译器」(compiler)的概念,她发明一种程序,能把源码转译为不同电脑处理器使用的机器语言,加速了为多部机器撰写相同程式的过程。

除此之外,「bug」(错误) 和「debug」(除错) 这两个词,也在霍普团队推波助澜下,成为电脑界的流行用语。当时打造马克二号电脑的哈佛建筑物没有装纱窗。有一天晚上机器突然故障,工作人员开始检查究竟哪裡出问题。他们发现有一隻翅膀达四公分宽的大飞蛾卡死在电机继电器中。于是他们取出飞蛾,把牠用胶带黏在对数表上,并在实验日志中记下:「面板F,(飞蛾)在继电器中。找到第一隻真正的虫(bug)。」从此他们就把侦错和除错称为「debug」。

电脑创新者和其他开路先锋一样,如果在半途卡住了,很容易从超前变落后。执著和专注等特质令他们创造力丰沛,但是面对新观念时,他们也可能因为相同的特质而抗拒改变。贾伯斯的执著和专注十分有名,然而当他领悟到必须改弦易辙时,他会突然改变主意,令同事眼花撩乱,困惑不已。艾肯却缺乏这种灵活应变的能力,只是一味凭著海军指挥官的本能,采取中央集权的管理方式。

⋯⋯

令霍普欣慰的是,这场程式设计革命是由女性打头阵。


余下全文(1/3)
分享这篇文章:

请关注我们:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注