程序员

注册

 

发新话题 回复该主题

女程序员引起的程序设计革命 [复制链接]

1#

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

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

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

▲GraceHope(右二)与UNIVAC(照片来源:Public.Resource.Org)

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

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

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

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

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

??

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

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

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

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

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

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

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

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

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

爱达在关于分析机的评注中,最先描述了这个概念。霍普累积了许多这类次常式。她为马克一号写程序的时候,也发展出「编译器」(

分享 转发
TOP
发新话题 回复该主题