谁能成为“代码勇士”(3)——《观止》

来源:互联网 发布:java 状态机 流程引擎 编辑:程序博客网 时间:2024/04/30 09:25

 

 

图书内容:

 

      “ 微软创建Windows NT 这个计算机技术领域惊人突破背后的故事,揭示了成功创新的艰难和痛苦。集中表现了卡特勒的反复无常、激励和鞭策团队的能力,色彩鲜明地描述了这个巨大企业的人间戏剧,揭示了他们的压力、失望以及最终胜利。而胜利来自于战胜没完没了的最后期限,与对手的竞争,与不可避免又无处不在的程序缺陷的无休止的斗争——其中可能就包括致命的问题。”

 

 

 

 

 

    到二十世纪五十年代时,严重依赖计算机的各种机构开始意识到了软件是令人头痛的事,而且是代价很高的,其中最主要的机构就是美国军方的三大分支。站在计算机领域前沿的程序员们开始寻找方法,以便可以更简单的编写出高效的程序。在1951年,格蕾丝·莫里·赫伯(GraceMurray Hopper),美国海军军械储备局的一名数学家,构思出了一种称为编译器的程序,它可以把程序员的指令翻译成二进制串,也就是最终控制计算机的机器语言。理论上来说,编译器正是可以把程序员从硬件的虐待和使大脑麻木的二进制代码中解放出来的东西。

 

     赫伯的成果催生了无数人的努力,来简化编写代码的难度。或许,最重要的当属IBM开发的成为公式翻译器(Formula Translation)的编译器,也就是Fortan。它包含了三十二条指令,诸如PUNCH(打孔)、READ DRUM(读取磁鼓)和IF(如果) DVIDE(除法) CHECK(检查),它们来源于计算机硬件需要的实际二进制术语。截止到二十世纪五十年代后期,Fortran产生了巨大的影响。“现在,任何人只要具有好的逻辑思维和愿望就可以学习计算机编程,”一个计算机历史学家曾经这样写道:“你不再必须是熟悉计算机内部原理和汇编语言的专家。使用Fortran的简单命令,你可以让计算机听从你的吩咐,而且编译器会自动的把你的指令翻译为高效的机器代码。”

 

    尽管Fortran可以让程序员可以使用同一套指令来为任意数量的计算机编程,但是要在不同的机器上运行Fortran程序时,经常还需要修改。而且,Fortran是针对科学计算和工程问题的。于是针对其它目标的其他语言出现了,比如面向商业的通用语言(Common Business-Oriented Language)(简称Cobol)。没过多久,便有很多种语言可供程序员选择了,而且,很多时候他们的职业路线就是由他们所选择的和学习的最好的编程语言所决定的。

      

     赫伯深信克服因为计算机语言激增而导致的困难将成为未来最大的技术挑战之一。“对我来说,编程不仅是一种重要的实践技术,”她在1961发表的一次讲演中说:“它还需要在基础知识方面做巨大的投入。”有些出乎意料的是,她担心最大的前进障碍会来自程序员他们自己。就像转变到一种新的宗教信仰一样,他们经常表现出思想保守,包围了他们的狂热。“程序员是非常古怪的一个群体,”她观察发现。

 

     他们成长的非常快速,很短时间内就变得很专业,而且很快就感染上了一定程度的抵制改变的毛病。有一个程序员,我听说他差点和客户吵起来,因为他不想修改它的系统,他几次走进我的办公室说:“我们一直是使用这种方法来做事的。”这是因为这个原因,现在我在我的办公室里挂了一个逆时针方向走动的钟。

 

     在二十世纪六十年代初期,IBM尝试在软件领域掀起一场革命,能让同一个程序在任意数量的计算机上运行。IBM计划开发一系列机器,这些机器覆盖了大多数市场,它们是由一个操作系统控制的。这个耗资五百万美元开发的System/360产品线取得了巨大的成功。但是它的产生过程是很痛苦的,主要是因为创建软件的难度和成本被大大低估了。第一台360硬件是在1964年问世的,直到五年后它的所有软件才能很好的运行。到那时,IBM在编写软件方面所花的钱差不多已经与设计硬件一样多。这使IBM公司的经理们非常吃惊,也非常生动的显示出了“影响计算机科技进步的最大障碍”和管理大型软件项目的问题。

 

     在杜邦公司,戴夫·卡特勒发现自己陷入了驯化计算机这项大任务的第一线。操作系统的不断标准化大大提高了计算机的实用性。但是编写应用软件的主要压力还是落在了计算机购买者他们自己身上。这产生了一种没有想到的效应,那就是使很多大公司成为孕育程序员的基地。杜邦让卡特勒创造一个程序来分析实验室里的实验数据。这个工作很需要技巧,因为需要两台计算机一前一后一起工作。一台接收数据,将数据放入到一个文件然后发送到第二台机器,第二台机器分析数据并把结果发送给研究人员。

 

    人们希望这个程序是所谓的“实时”系统,它能使计算机接收到信息后立即做出回应,而不是几个小时或者几天后才给出结果。第一个实时系统是在风轮计算机上创建出来的,供空军和海军跟踪敌人的飞行器,并指导美国的攻击机命中目标。

 

     实时程序是非常有价值的一种创新。对于像杜邦这样努力寻找新材料和材料用途的公司来说,快速响应的帮助比延迟相应要大很多很多。杜邦想让卡特勒的程序运行在从数字仪器公司(DEC)购买的小型计算机上。DEC是十年前由风轮计算机的一个工程师创立的,DEC是小型计算机领域升起的一顆新星,它大胆打破传统。在过去,计算机设计者们提倡可以让许多任务共享运算能力的大型主机。小型计算机的价格经常低于十万美元,这第一次让人们可能分配一台计算机专门做单一的任务,比如跟踪零件的轨迹,实验数据或者机器工具的操作。

 

     尽管有用,但是像DECPDP这样的小型机通常只配备很少的软件。购买者不得不自己设计他们需要的软件。在接下来的几年中,卡特勒编写出了实时程序和其它一些PDP软件,成为为DEC计算机设计代码的一位专家。

 

     但是,卡特勒开始厌倦杜邦了。他想要到一家计算机公司工作,于是他选择了DEC。因为钻到了IBM产品线的一个空子,DEC不仅成长的非常迅速,而且摒弃了传统的商业模式。它没有征购土地建设办公场地,而是把波斯顿郊外的一个废弃工厂改造为员工的办公室,这家工厂位于马萨诸塞州的梅那特。DEC也没有坚持IBM青睐的从上到下的管理方式,相反,DEC允许工程师实践他们自己的想法,即使冒着重复别人的风险。

卡特勒很渴望为DEC的计算机编写软件——他如此渴望,以至于和DEC销售人员的一次偶遇便引发了他到这家公司去参加工作面试。随着硬件的不断发展,DEC很需要编写代码的强人。卡特勒刚好满足了这一需要。于是在1971年,卡特勒接受了DEC的工作,搬到了马萨诸塞州,这一年他二十九岁。

 

     卡特勒很快就博得了DEC的青睐。没过多久,他就成为这家公司的一位软件之星,并让他带领了一个开发代码的团队。他完完全全被他的工作所吸引了。在那时,他的第一次婚姻已经破裂了,第二次正朝着浅滩行驶。正像他自己所承认的,他根本不是会照顾家的男人。当他终于和第二个妻子散伙后,他发誓再也不会结婚。“婚姻是一种错误,你只能犯两次,”他说。

    

     卡特勒是一流的程序员。他全身心的投入,沉迷其间,争强好斗。他有非常坚强的意志和信心。他投入非常大的精力来注意细节。而且,他在设计和编写代码时不停地追求更好。“大多数人学会如何把一件事做得很漂亮后,以后一生便一直做这个,”一个同事观察发现:“但他不是卡特勒。卡特勒会从自己的成功中学习。下一次,他会做的更好。所以每次,他都上升到一个新的高度。”这一点是很令人吃惊的,因为在科技方面取得成功的很多人也没有这样的特质。而且,他非常的投入——除了分配到他手中的软件任务外,他对其它任何脑力活动都没有热情——这是很有好处的:“对可能干扰他的任何人和任何事,他不仅置之不理,而且还会对其进行攻击和诋毁。”

 

     卡特勒骂人的功夫也炉火纯青。反复无常而且脾气倔犟,他可能根本不顾及脸面,大喊大叫,根本不顾及丧失最起码的礼貌。他发脾气时,嘴里动不动就冒出一连串污言秽语。每次新的爆发都把他的形象又磨砺一番。陌生人是最受不了的。有一次,一位女工程师在放满打印机的房间里第一次遇到卡特勒,卡特勒正在那里把卡在打印机里的碎纸往外抠。这位女工程师以期待的眼神看了卡特勒一眼,这时正好卡特勒也抬眼看见了她。于是,卡特勒咆哮起来了:“你就是那个把打印机搞垮的混蛋么?”

 

     尽管他的态度没有给任何人留下好印象,卡特勒还是赢得了称赞,因为他在为DECDPD-11计算机构建实时操作系统的工作中起到了关键作用。他出色的完成了一项非常讲究技巧的任务,可以把程序缩减的更小。这是至关紧要的,因为程序越小,它便运行的更快,消耗的内存也越少。卡特勒用了一种很简单的方式来表达他希望代码更紧凑的愿望,他在他的办公桌上放了一个橡皮戳,上面刻着:大小就是目标(Size Is The Goal)。当他觉得程序员要增加的功能会大大增加内存需求时,他就会使用这个戳盖在驳回备忘录上。这个戳让程序员们对增加代码更加谨慎,同时也提供了一个笑料。很快,很多男员工的房间里都出现了一句刺眼的短语:“大腿就是目标(Thighs Is The Goal)”。

 


 

原创粉丝点击