豪门夜宴粤语:微软操作系统最核心开发故事第3章:部落 - CNET科技资讯网

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 08:13:12

微软操作系统最核心开发故事第3章:部落

  《观止》第3章:部落

  卡特勒加入微软之举导致了DEC大批员工离职。他并非要掠夺他以前的老板,而仅仅是因为他的同事把他看作是一位高科技摩西。他也从同事对他的忠诚中受益。不到一个星期,微软就从卡特勒原来的实验室中招聘了7位顶尖级编程工程师。

  ∧ξ魇恰妒ゾ》故事中的犹太人古代领袖。——译者注核心队伍中的每个人都在卡特勒手下工作好几年了,全都是男性,只有一位在三十岁以下,这样,这支队伍要比微软的平均年龄要大得多。第一天,微软的人事专员召集所有的新职员例行公事地宣讲公司政策和惯例。有一部影片讲述了微软的崛起,里面有一段是对盖茨和他母亲玛丽的动情的采访。卡特勒的一位下级后来打趣说:“这段采访不错,只要你不吐出来。”

  然后,新职员们要签署劳动合同,劳动合同的内容包括要求员工们对敏感问题保密,公司拥有员工的知识产权等。其中第10条,禁止雇员离开微软后一年内加入同行业竞争公司。这一条给被雇用者的单方法律义务过重,卡特勒的部下们,虽然以前就被告知过,但还是提出抗议。他们拒绝签署该合同。他们说,如果DEC也给他们这样的限制,微软将不得不在法律程序上花一番功夫才能雇用他们。所以为什么要签呢?公司也不退步:如果不签合同,他们就不可以工作。都快到中午了,卡特勒的部落们撤出了房间。虽然他们是因为肚子饿了去吃午饭,但这看起来像是罢工。后来有人把这件棘手的事告诉了卡特勒:也许他的同僚们最终不能来微软了。

  卡特勒迅速解决了纠纷。微软的律师终于同意,删除第10条。卡特勒的同事们签下了修改后的合同。

  这个已和解的僵局,尽管短暂,却给微软的其他员工传递了一个信息:卡特勒那伙人与众不同。他们自视更有才华,更成熟,也的确比微软原先的员工要优越些。表面上,这个结论看起来合乎情理。首先,他们要比普通的微软员工(园区里称作“微软人”)老到,有经验;微软人几乎都二十多岁,大多都没在其他地方工作过。DEC的这些背叛者们在工作上有条不紊,遵循技术教科书上的习惯做法,而相反,微软人经常手忙脚乱地解决问题。卡特勒的同事们非常认真地对待工作,而微软人有时在走廊里投掷碰碰球或在办公室里摆弄吉他。

  他们之间风格上的差别很明显,卡特勒部落把微软人嘲笑为“微废人”。同时,微软人被卡特勒部落排斥在外。“卡特勒和他的部落们一进来,就是一个非常紧实的团伙。”一位程序员说,“他们直接把这种态度表现出来,简直让其他人心里发毛。”

  卡特勒对此一笑了之,他不喜欢考虑精神生活的阴暗面。但他也感觉到他对这里的适应要比他预期的困难一些。在外界和竞争者的眼里,微软是座丰碑,可其实,微软更像一块块封建领地勉强拼凑起来的国家,而不是一个联邦国。虽然是盖茨在统治,但是他过度地依赖一些程序领主和经理人,这些人因为自己和微软的关系变得富裕起来。在DEC,卡特勒是一颗明星,他希望在微软也能享受到明星级待遇。但这里没几个人知晓他;他感到自己默默无闻。“我在这边没有威信。”他说。

  卡特勒本能地变得内向起来,他在他的部落里寻求安慰。他的部落包括六位硬件工程师和几位程序员。他们占据了二号大楼的一个走廊,他们办公室里的桌椅随时都可以凑到一块去。刚来的头几天,这个团队莫名其妙地平静。“零方向,”一个成员说,“我们不知道给我们的是什么,也不知道怎么去发展。”他们几乎无事可做,除了学习个人电脑的里里外外。尽管他们很有经验,可是都从没给一台个人电脑写过程序。他们感到很迷惑。诸如“它就是……整个的文化冲击”和“没有一见钟情”之类的说法可以概括出他们的反应。

  卡特勒的小组里弥漫着沉闷的情绪。“真令人沮丧,”一个小组成员说,“开始的几个星期我们都那样觉得,包括戴夫。”在他们心里,Prism项目被取消的这块阴霾还未散去,所以很担心微软是否最终像DEC一样对待他们。“在我们头脑里,完成一个项目是最最重要的事情,”另一位成员说,“即使我们不喜欢这里,我们也不会让项目流产,我们宁愿先完成项目,然后在第二天辞职。”

  盖茨还沉浸在获得卡特勒加盟的巨大喜悦中。他以前总是因为公司的产品功能有限而备受指责,现在他终于有了可以把大型计算机的优点带到个人电脑来的软件人才。微软宣称它的软件总有一天能进行任何一种工作,卡特勒的到来为这誓言增添不少可信性。盖茨不确定微软什么时候将用上卡特勒的操作系统,所以他在公众面前绝口不提他的软件明星。在1988年11月10日,微软承认了聘请卡特勒,但宣称只是为了请他来指导开发OS/2的升级版本。在一次发言中,卡特勒被形容为“是一个能管理大项目的人,而且能准时把最高质量的产品呈现在人们面前。”卡特勒并不发表意见。在DEC,他从不接受采访,在微软,他也坚持要求他本人不见媒体。他甚至警告盖茨:“如果你带媒体来见我,我就会做出使你永远不会再把他们带来的举动。”

  为了庆祝卡特勒和他的部落的到来,盖茨在微软园区的一栋还未竣工的建筑里举行了一个啤酒比萨饼聚会。在大伙面前,盖茨介绍了新成员,激动地谈论来自他们的“伟大的东西”。盖茨极少公开地偏爱某一个程序员,但现在卡特勒显然成了他的宠臣。盖茨看起来甚至敬畏卡特勒,也不敢去打扰他。“他是一个对工作很认真的人……极其专业,”盖茨说,“这使他变得难打交道。如果你要去见戴夫,你得这样想,天哪,我要说的话是不是傻乎乎的?”

  盖茨担心卡特勒总被包围在熟悉的面孔之中,可能会和微软的其他员工搞得太疏远,于是他请史蒂夫鲍尔默,卡特勒的名义上司,去教他公司的工作方式。

  鲍尔默被选作为卡特勒的指导员是个聪明的决定。如果盖茨是太极中的阳,那鲍尔默就是阴。鲍尔默是底特律人,他的父亲是汽车行业的一位主管,他在哈佛认识了盖茨,这两个人成了亲密的朋友。在商学院和宝洁待了一段时间后,从没写过一组程序的鲍尔默在1980年加入微软,成为公司的第一任总经理。他富有热情,幽默诙谐,他常常不是在说话,而是在喊话。他与为人冷淡的盖茨不一样,他总是在走廊里走来走去,拿着一本黄颜色的标准信笺簿,他在上面记着“行动事项”。他喜欢与人击掌来问候人。在和员工面谈的时候,他不是抱着个篮球坐在地上,就是对着墙扔着网球,紧张地来回跑动。

  卡特勒觉得盖茨是被外界吹捧上去的,他更喜欢汇报工作给鲍尔默,他觉得鲍尔默是微软成功的关键人物。“史蒂夫是我这种类型的人,”卡特勒说,“是一个精力旺盛真正追求卓越的人。”

  鲍尔默对卡特勒的立场是让他自由发挥,至少在一定领域内。“戴夫是来开发(操作系统)内部架构的,而我们可以界定(消费者可以看到的)外部的设计,”鲍尔默说,“这样(分工)很有成效,因为他可以对内部进行创新,外部设计呢,就得把市场需要和技术结合起来。”

  这样的安排也还是导致了分歧。鲍尔默总是提醒卡特勒在OS/2上运行的程序也要在他在开发中的可移植操作系统中运行。而另一方面,只想专心于加速完成他自己程序的卡特勒,感觉鲍尔默“总是要的比我们能拿出来的多。”比如说,卡特勒拒绝允诺开发出能运行现有的DOS和Windows程序的操作系统。“与DOS兼容?与Windows兼容?没有人会想要那个。”卡特勒说,“为什么我们应该考虑这些?”

  争执偶尔会升温。卡特勒曾经为了跟鲍尔默强调他的观点,双拳重擂他的桌子,并且嚷嚷说他不会“用狗屎去污染(NT)”。鲍尔默悄悄地走到门口,然后轻轻地敲几下门,说:“别捶了,”他朝里大声说,“不起建设性的作用,我也可以捶,而且跟你一样震天动地。”

  内森麦沃尔德也想让卡特勒和他的部落融入到微软中来。他希望这个项目从一开始就非常强大,也希望卡特勒的可移植编码中能够用到他的“精神病团队”的一些实验结果中去。然而,卡特勒只答应去看看“精神病团队”的工作成果,但令他失望的是,他们几乎没多少文档记录或者只有一些没多大意思的设计。与其去改造“精神病”,卡特勒宁愿将它们全抛弃。

  但关于选择RISC芯片作为卡特勒软件团队开发的的主攻对象,麦沃尔德一锤定音。他选择了英特尔公司一款尚未完成的芯片,英特尔公司也在为标准个人电脑生产芯片。同时,英特尔也在推广它自己的RISC芯片,代号为i860,是用来在这风起云涌的计算机行业中做挡风草的。这两家公司有着共同的愿望:要在浪尖上生存!

  卡特勒曾经在DEC测试过i860,他认为它有“严重问题”,但是他同意麦沃尔德的决定。毕竟,麦沃尔德是他的为数不多的同盟者之一。微软的许多人认为公司应该只为现存的个人电脑硬件写软件,不应该在可移植软件上浪费时间和金钱。因为计算机潮流的走向是无人可以保证的。“虽然盖茨和鲍尔默,还有我很支持你的工程,但是很多其他人并不这样想。” 麦沃尔德解释说,“他们不能理解,或者认为这样的想法太好高骛远或者太疯狂了。别让这些(批评)影响你和你的工作。”

  让卡特勒的部落和微软人打成一片,盖茨还有一个绝招:他把微软的中坚骨干程序员史蒂夫伍德(Steve Wood)分配到卡特勒的“清一色DEC”部落中去。这步棋下得很关键,因为“我必须知道他们是否能接受一个外来人”。盖茨的理由是,如果卡特勒连微软的一位最优秀最能干的程序员都不能接受的话,那很可能整个新到的团队都不能适应微软。

  伍德果然不负众望。他是一位能力惊人的程序写手,他1983年加入微软。之前,他在耶鲁大学攻读计算机博士学位,但最终没有完成博士论文。他具有软件业优秀的两大传统精神:自视清高,超然出世,厌恶商业伎俩;却又是实用主义者,坚持“想就去做”的观点,同时也是很聪明的自学型人才。他接受的正规教育使他坚守的信念很难被动摇,当然,不容否认的是,他足智多谋。

  伍德不是一般人。他走路迟钝缓慢,表情又有些鬼鬼祟祟,看起来他似乎不太喜欢阳光。他选了一个没有窗户的办公室,尽管在微软,带窗户的办公室是显示公司地位的唯一外在标志(因为微软有任意停放的车位,有自助餐厅,带司机的豪华轿车,还有喷气式飞机)。在这样一个打破常规的公司里,伍德跟反对派对着干,如果有人对他不尊敬,他也对那些人不客气。

  伍德是牙医的儿子,他于1951年出生在西雅图美丽的郊外。和其他男孩一样,他喜欢玩卡丁车、飞机模型和轮船模型。当对一个旧的轮船模型厌倦了的时候,他和他的弟弟就在模型上点一把火,然后把它放在附近的池塘里。旧飞机模型被打发得更为壮观,他们让它们沿着长长的金属线下滑,如果成功的话,可以把旧飞机模型们送到一个仿造的航空母舰上。如果多些鬼点子,调皮的男孩们会在把飞机模型送上金属线前点燃它们。

  伍德十四岁的时候,他已经有6英尺高了,这也是他成年后的身高,而体重只有100磅。那时的他像一根笨拙的竿子,还有点害羞。他爸爸意识到公立中学不能满足伍德,就把儿子送到湖滨高中,也就是几年后盖茨也来就读的私立精英高级中学。

  伍德讨厌湖滨高中,来这里读书的都是西雅图富家子弟,他感觉自己就像一只流浪猫。有些同学有车,甚至还有同学开着飞机,伍德在坚持独立意识的教友派信徒家庭长大,他周围同学们唾手可得的钱让他感到不自在。他在学校里煎熬着,考试成绩拿B等。唯一一次使他“出众”的经历是,他后来难过地回忆道,“我拿着学校的钥匙被捉了,因为有同学看见我们去打开一间仓库。”伍德和他的朋友被校长羞辱,还在许多同学面前被拽到另一边去,这件事现在想起来都令人难为情。

  1969年伍德就上大学了,为了逃避越战征兵。伍德开始漂泊。换了几所学校,并省吃俭用地在邮政局里打工,后来,他读了物理系。“突然之间,学校变得有意思起来,”他说。但是他不能想象他将终身从事物理专业。“我可以预见,如果你是天才,在从事这个领域的20年间,可以只做重要的研究,”他说,“如果你不是天才,你只能做天才的仆人。”

  伍德转读了一些计算机课程,毕业后,他在西雅图的一家地方电话公司从事编程工作。四年后,他考取了耶鲁大学,攻读计算机科学专业。一年后,伍德开始置疑他从常青藤联盟教育中获得的收益。当他的妈妈庆祝他获得硕士学位时,他说:“妈妈,它简直就是厕所里的手纸。我得到它,只是因为不想因考试不及格而退学。”

  伍德在耶鲁大学度过了六年,他努力扎实地学习,当时,研究领域的人们推崇自我鼓吹和自我膨胀,这已成大学里的风气,但伍德未受传染。伍德觉得他的教授们与现实脱节了,“他们在有限的领域里是非常聪明的人,但是他们没有能力来判断我做的是好还是坏。”

  伍德在耶鲁大学的唯一收获是在那里遇到了他的妻子。这发生在1982年的11月,伍德已经三十一岁了,不过之前他从未跟女性约会过,在他们系里工作的一位行政助理吸引了他的注意。她是一个7岁男孩的母亲,当伍德打电话给她提出约会的请求时,她还不认识他。他们着魔

  对于编程,卡特勒是个实用主义者。他相信形式优先于功能,但他也不是完全屈从于结构。他总是有正确的开始,而结束时,他的代码也只有极少的错误。通常,他先为团队写出最抽象的代码。他把一个操作系统预先分为几十组代码,每组代码都附着详细的要求。编写代码需求本身就是一项艺术。工程师们早就从他们的职业经验里得知,一个糟糕的代码需求会导致整个项目的死亡,而一个好的代码需求则是一座灯塔,当程序员迷失方向时,灯塔会帮助他们回到正确的航线上。然而代码需求不仅仅对它的创作者有用,它还能帮助所有参与开发程序的人。每段代码共生共存,整个程序就好比一个精致的生态系统,如果一段代码有问题,甚至是和其他代码没有直接联系的时候,也可能会摧毁整个程序。

  依赖代码需求有两个缺陷。写出一份代码需求就要好几个月。一旦编程开始,代码需求也需要不停地修改更新,否则它就会因过时而不起作用。过时的代码需求可能会起到误导的作用,会导致混乱。只要代码需求在有效期内,就需要专人来维护。这个工作由卡特勒在DEC实验室的首席程序员卢皮亚佐利(Lou Perazzdi)担当。

  皮亚佐利是个高高瘦瘦的男人,很少挺立站直或提高他的音量。“戴夫是位实干家,”他说,“我喜欢给实干家工作。” 皮亚佐利除了是位天才程序员,还是一位程序员教练。他的管理哲学很简单:让你的人们快乐。他认为他的程序员们迟早会做对的事情。他一直是位重实际的人。如果有人因疲劳过度或生气而不能继续工作,皮亚佐利会询问什么能缓解他的烦恼。有时候,程序员会给一个直白的答案,会要求要一个大点儿的显示器或是一个装数据的大硬盘。皮亚佐利有一笔基金,通常可以满足这些要求。也有时候,程序员的心情太过抑郁,而疗方也比较贵重。曾经有个程序员想要一个月的休假去意大利游玩,并在哥斯达黎加(Costa Rica)的海岸潜水。皮亚佐利通常会这么解决这样的要求:你做这个,做这个,再做这个,做完后,就给你安排旅行。善解人意的皮亚佐利是最能衬托卡特勒这朵红花的绿叶。“如果说戴夫是盐,卢就是糖。”伍德这样评价。当人们害怕和卡特勒讲话的时候,他们会把他们的苦恼和烦闷诉说给皮亚佐利听。当卡特勒非常生气,忍不住要惩罚一个人的时候,他先向皮亚佐利发火,皮亚佐利再依情况,或是平静地把坏消息传达给当事人,或是不告诉任何人。许多部落成员对皮亚佐利都有极大的感激之情。“卢维护着一批自大、脾气糟糕的人,如果没有他,这帮人说不定会自相残杀。”其中一个成员说,“当有些人因为受不了卡特勒而提出辞职的时候,他能把人留住。”然而,伍德却抱怨说卡特勒和皮亚佐利用的是红脸白脸的伎俩。“麻烦就是,戴夫太野蛮了,卢又太好了。”他曾经写道。

  其实,也没什么太多需要做的。“卢真的比我随和得多,”卡特勒承认,“他会这么说‘这里出现了一个问题,但我不准备做任何事情去解决它,因为它自己会修理好。最终,每个人都能发现错误的地方。所以我才不会花这份心力。’”

  皮亚佐利的禅宗般的生活态度也反映在他自己成为软件精英的曲折道路上。他给卡特勒做了十年的助手。在20世纪70年代早期,他先在NASA(美国国家航空航天管理局)做一名程序员。航天局的工作十分依赖于计算机,从控制任务到分析天文资料。航天局给皮亚佐利的工作任务是给PDP11写程序,PDP11是DEC生产的计算机,它的操作系统正是卡特勒早期写的。几年后,皮亚佐利厌倦了他的一万美元联邦月薪的生活,加入DEC,成为一名巡回程序员,他的工作是帮助消费者把软件应用到他们购买的硬件上。在DEC的一次由卡特勒教授的培训课程上,皮亚佐利与卡特勒碰面了,他们一见如故,就卡特勒喜欢的程序足足谈了一个晚上。

  几年来,他们一直保持联系。1981年,皮亚佐利搬到维吉尼亚州林奇堡市,去负责DEC在那一带的消费者。他和女朋友买了一块80英亩的农田,过起了“回到地面上”的生活。他的女朋友是来自阿拉巴马州的一位高中老师,来到这儿后,在附近的一个镇里的学校教书。皮亚佐利很少在下午五点后还继续工作,他和女朋友在农田里度过了不少时间。他们过着田园诗般的生活,不过从一开始他们就知道这种日子不会持续太长。他们养火鸡和家鸡,烤面包;夏日里收集木柴,冬天就生起篝火。他们允许当地的农民在他们的地里放牧,作为交换,他们会请求农民为他们喂鸡。他们还有一个存烟草的仓库,有时候他们也把它出租给邻居。

  1985年8月,卡特勒在他的位于西雅图以外的实验室里为皮亚佐利提供了一份编程的工作。皮亚佐利接受了,很快就以他的勤奋和镇静的态度给卡特勒留下深刻的印象。后来,卡特勒就让他去负责Mica软件,Mica软件是Prism工程的核心软件。而Prism的取消打击了皮亚佐利。他从未产出过一个商业程序(他所有的编码都是在内部被公司和客户使用)。“出货”也许是衡量程序员的生产成果的唯一真实的标尺。“如果你没完成,”卡特勒说,“所有绝妙的好点子都无任何意义。”

  DEC剥夺了皮亚佐利经历“完成”的机会。他发誓不能再让任何公司那样对待他。在他最后的给DEC朋友的电子邮件中,他表达了加入微软的欢欣,写道:“希望在我头发变白之前,我们能生产出一个商品。”

  皮亚佐利认为微软给了他第二次在软件业能一鸣惊人的机会,他注定要充分利用它。他在DEC喜忧参半的经历在这个项目上也帮了他不少忙,因为Mica软件本质上可以说是NT的预演软件。对皮亚佐利来说,过去的经历是序幕,他渴望着继续这场大戏。

  究竟什么是操作系统?卡特勒的团队想创造出什么呢?

  我们来描绘一下20世纪初一个富裕的英国家庭。把电脑硬件想象成一座大房子,这个家庭的住所。房子里有管道、照明、砖、灰浆墙、窗户和门——所有实体的物件应有尽有。

  接下来,想象一下计算机软件就是生活在房子里的人。家政人员住楼下,他们提供全套及时的家政服务。管家立在门边,司机在洗车,保姆在熨着衬衫,厨师提供一日三餐并烤着面包,园艺师在草坪上扫落叶。所有活动,看起来都像是分别在按照自己的进度进行,但实际上全部都由管家来协调和组织。这就是楼下居民的生活,在某种意义上,它是存在于背景中的。

  接着考虑一下楼上的人。他们是楼下人辛苦劳作的全部理由。丈夫需要一个司机,不仅是为了省心,更是因为他想要外出旅行。妻子请来一个厨师,这样她的家人就可以吃得很好。孩子们从园艺师的工作中受益,他清除院子里的碎石片,让孩子们在室外可以安全地嬉戏。

  对楼上家庭和楼下忠诚的仆人的生活的描述清晰地说明了软件世界里的重要分工。楼上的居民是应用软件:文字处理、电子表格、数据库、电子排版和大量其他能满足人们需要和愿望的程序。而楼下的居民则共同发挥了操作系统的功能:他们是服务的领域,有些是自动的,有些则有特殊请求的。这些服务是提供优越生活物质条件的基础。

  卡特勒对他的操作系统有三个期望:

  可移植性:这可是软件业的圣杯——创造出一个可以适合每一种硬件的操作系统。当时,每种商业操作系统都是为特定系列的芯片而量身定做的,所以只能在装载这些芯片的电脑里发挥作用。程序员用最接近于目标硬件的汇编语言写了大量的编码。将软件和硬件联系在一起。当硬件成本远大于软件成本时,没有人介意这些。不过,后来当消费者发现在应用程序上的投资大过于购买硬件时,他们就不愿意抛弃他们已安装的但已过时的应用软件。NT便是创造一个通用系统的机会,它将在电脑世界开创一个新纪元。

  可靠性:在苹果机上应用的是OS/2和DOS操作系统,一个应用程序的运行失败往往会导致整个系统停止工作或崩溃,数据消失,迫使使用者重新启动机器。如果许多应用程序在同一时间运行——NT的未来特色之一——其中一个的运行失败会导致其他应用程序的停止运行。卡特勒想用“防弹”系统来结束这种不必要的崩溃。有了“防弹”系统,个人电脑的价值会增大,因为它们能可靠地支持在商业世界中所谓“关键任务”的服务,比如航空订票或者银行自动柜员机。卡特勒和他的团队知道如何来保证可靠性,他们的DEC操作系统是在电脑还是十分昂贵和稀有的时代诞生出来的,卡特勒解释说:“如果系统死了一个小时,那就糟糕透了。首先,当时你不能像现在那样,对一台电脑做那么多操作,所以每一分钟都损失惨重。”

  个性化:NT应该灵活十足,它将拥有不止一种用户界面,或“个性”。当时的个人电脑操作系统往往只有一种个性,也就是说,为DOS写的应用程序就只能运行在DOS上。NT将会支持OS/2的表示层管理器界面,但它也会设计成可以——如果微软选择这么做——支持其他诸如DOS或Windows或还没发明出来的操作系统的个性。

  在构思NT的时候,卡特勒及其部落们首先攻克可移植性的难题。

  可移植性的代码比较容易编写但效率比较低。理论上,用高级语言写出来的代码在经过编译后,可以在不同的微处理器上运行,而高等级的语言写出来的程序相对较慢,所占空间也大。微软的DOS、DEC的VMS和苹果的麦金塔操作系统,用的都是汇编语言,因为它写出来的程序小而紧凑,充分地发挥了特定硬件的作用。紧凑的编码固然是好的,因为它节约了内存的空间。内存空间包含了很多芯片,名叫DRAM(动态随机存取存储器),就好比一个汽油箱。汽油箱越大,汽车就跑得越远。操作系统越小,就有更多的油留给其他程序使用。

  因为NT是可移植的,所以卡特勒知道它会很大。问题是,它将有多大?这取决于他的程序员们有多聪明,以及NT自己的设计特色和功能。卡特勒需要花很多时间才能知道NT究竟需要多大一个内存油箱。可是,他已经意识到NT会消耗很多内存——也许比现有的个人电脑操作系统所需的要多得多。

  这让比尔盖茨感到紧张。NT最少需要一个带有8兆内存的电脑,这是当时一台新电脑标准配置的8倍以上。盖茨担心消费者会不用NT,因为它意味着消费者需要为它再花几百美元购买额外的内存。虽然内存芯片的价格可能会大幅度下降,但NT的内存要求仍然是非常不确定的。

  这个任务落到了皮亚佐利头上,他来负责设计和编写NT中管理内存的代码(他在卡特勒的实验室里曾写过类似的内存管理程序)。内存管理要确保操作系统的每个部分和每个运行的应用程序在它们需要时都能有足够的内存空间,所以它自己要一直保持运行状态。这是个复杂的任务,因为,当一个应用程序需要内存而当时没有时,就需要内存管理程序来精确地搜寻出可用的内存空间。而且“每个人都需要内存,而且想马上得到”,使这项任务显得更加艰巨。

  为了更好地理解内存管理程序的作用,我们来想象五个饭店,它们共用一个停车场,但是车位有限,假设只有100个车位。想在这五个饭店的任何一家吃饭,在这个停车场里停车是唯一可行之路。一个孤单的车仆负责车进车出,和代泊每一辆车。饭店象征应用程序,停车场象征电脑的内存,车仆则代表操作系统里的内存管理程序。早上,只有一家饭店营业,所以有足够的闲置车位,车仆的管理工作也很轻松。午饭时间则显得压力重重,因为五个饭店都在营业,对车位的要求很紧张。

  车仆于是开始筋疲力尽。他不仅需要留意每一个车位的状态,而且必须迅速无误地代泊每一辆车,并在客人离开的时候,准确地找到它们。既然停车位占用的是物理空间,那它肯定能扩张:增加车位成本很高,但是它能缓解停车场的阻塞。而更好的解决办法是,车仆必须更聪明更敏捷地工作。当车位已满,车仆必须在入口等待车位空出来。优秀的车仆能够指挥这些车辆,所以当停车场暂时不能运作的时候,没有人会引起争吵。而无能的车仆却常常不能很好地管理未停放的车辆,所以场地充满着混乱。然后,每个客人都得离开他或她的饭局,找到他或她的车,重新再停一次车。

  车仆的工作形象地显示,稍不注意,局面就失去把握。皮亚佐利想创造出一个聪明绝顶的车仆,但他坚持用陈旧的方式。

  对可靠性的要求极大地影响了操作系统的整体设计。什么是隔离应用程序的最佳方式呢?这样当应用程序出现故障时会不会使NT也失败?卡特勒的解决方案是把操作系统分成两个主要的部分。其中一个是“内核”,它不直接和应用程序关联,所以不会被它们影响。另一个是操作系统的图形化的、可视的部分。

  我们回到楼上—楼下的比喻来领悟一个系统内核的要领。想象一下家政服务团的管家,他是多么地勤劳:他24小时不分昼夜地为楼上的家庭服务,随叫随到,处理各种要求。如果需要做顿饭,他就去做;如果需要洗衣服,他就去洗。如果他不在,他也会安排好一个候补。他把房子里的一切维持得井然有序。楼上成员的任何意外的行为都不会使楼下的生活休止——从不。

  这就是卡特勒想要的操作系统的大致情形。就像楼上的家庭,应用程序可能会有意外的或不合理的行为。在程序的范畴里,当所有其他程序都运行失败的时候,唯一能保持运行的就是系统内核。它通过给应用程序强加一定的限制来保护它自己,最重要的是,只有它,而不可能是应用程序,来操控硬件。

  系统内核本身的结构就很复杂,包括很多组件,组件之间互相调用,或者直接调用硬件关联。系统核心的组件常常调用底层代码——“微核”,它是NT里的终极统领。卡特勒曾在DEC写过一个微核,打算也为NT写一个。这看起来极像他在团队中的地位,微核在操作系统里也颇具权威。

  内核设计有两个主要的优点。第一,当一个程序突然停止的时候,内核允许用户保持其他的应用程序的正常运行,还可以启动新的应用程序,从而保证了系统的可靠性。第二,内核可以使操作系统显示出多样的个性。每个操作系统的个性都通过调用内核来向计算机发出命令。OS/2将会是这些个性之一,这是盖茨的要求。但是NT也要能支持其他个性,成为一个潜在的通用的软件平台。

  卡特勒内核设计的令人眩目的优点——可靠性和多样的个性——可这是有代价的:速度,或者说缺乏速度。这里有严格的逻辑性。把一种个性加入模块里,意味着系统发出的调用命令的数量起码翻了一倍。比如说,一个应用程序必须先调用OS/2模块,然后OS/2调用内核。用卡特勒的话来说,个性变成了内核的“客户”,内核为客户“服务”。

  当盖茨第一次听到这种客户卜务模式时,他犹疑了,想到:“这样做的话,会有巨大的额外开销。”他对此有充分的证据。“我的头脑里清楚地知道这个额外开销有多大,所以我认为我们不能这样去做。”他坚持。但是卡特勒有力地为客户卜务模式辩护,说它不会降低性能。他提供了数学数据来支持他的模型,他部落里的一个成员还写了一篇十二页的论文来说明其他设计方案是不可行的。

  在如此激辩之后,盖茨对NT的基本设计还是不放心。他比卡特勒更了解消费者对程序运行速度的关注。他们会把NT和DOS、OS/2比较,而后两者是用汇编语言写成的,可更好地发挥硬件的性能。固然,微芯片总有一天会变得很快,可以抵消NT的缓慢。但是让软件任意遨游的超快芯片的到来还得等5年到10年。盖茨担心舆论早把NT钉死在速度的十字架上。

  卡特勒坚持他的立场。他不耐烦地发誓说他的团队会写出有魔力的代码,他们高超的编程技巧会弥补客户卜务模式的不足。盖茨将信将疑,但也默许他们这么去做,他想:“嘿,这是他们的项目,是他们的项目。他们认为那样可以。”

  在1989年初时,NT的设计蓝图初具雏形,这时卡特勒开始恢复他的本性,不再像刚到微软时那么彬彬有礼了。他总是没有耐心,传达的信息也总是生硬而简洁明了。他不喜欢重复自己说过的话。“如果他给你解释过一次,他希望你再也不要去问他了。”一个团队成员说。卡特勒要求别人要紧跟他的节奏。当有人请他重新做一次解释时,他也会去做,“只是这一次声音有点响亮”,一位在那年夏天加入卡特勒团队的微软人如此说。“然后,如果你再请求他进一步阐明他的意思,这时,他的脸开始变红了。就好像,因为你不明白他的话,他就要发疯。所以我学着对他所说的每一句话都听得很仔细,有时候我也不懂装懂。然后我回到办公室,再思考他所说的话,或者我去问皮亚佐利,‘戴夫到底是什么意思呢?’”

  卡特勒从来不为他的缺乏耐性或火暴脾气抱歉。“我靠压力生存。”他自吹。他把他的团队看作是建立在分享共同的欢乐、牺牲和秘密的一个小社会。他既是严格的执政人,又是体贴的族长。他对自己的要求永远都比别人的多。在我们现在的社会,借口是换取宽容的通行货币,但卡特勒从不接受。“我希望每个人都做到他们自己的最好——一直如此。”他说。

  对他的亲密战友来说,卡特勒就像自然之力,但随着时间的过去,他脾气的爆发成了日常例行公事。和卡特勒不熟的人常常被警告要保护好他们自己。“当你看到卡特勒要发作的时候,赶紧躲掉。”卡特勒的一位朋友对一位微软人说。后者一开始觉得这个建议未免太夸张了些,可是后来她听到卡特勒办公室方向传来恐怖的吼声,她问:“这是什么噪音?”这就是卡特勒发脾气的声音。

  卡特勒的脾气可谓是一触即发,但有时他的咆哮只是故意做样子。“我向人们大吼大叫时,并没有发疯。”他说,“他们可能认为我疯了,可是我真的没有疯。”不过,要分辨出到底是不是装样子,谁也说不准。当卡特勒开始讥笑微软为“这个渣滓公司”时,很多人都觉得这是他的真实意思。

  麦沃尔德想缓和一下紧张的气氛。他邀请了公司里称为“架构师”的优秀软件工程师们,去会见卡特勒等人。可是事与愿违,原因出现在戈登莱特温(GordOn Letuin)身上,他是设计OS/2架构的元老。卡特勒曾被要求主持改进OS/2项目,对此莱特温觉得自己受到了冷落。他还觉得麦沃尔德和卡特勒都对RISC芯片的前景和可移植程序的期望值过高。当他和卡特勒团队对话的时候,莱特温显得盛气凌人。这让卡特勒感到不愉快,他本来就不喜欢OS/2的“不值一文的设计”,他认为OS/2能力不足,可靠性也不强,根本就不能承载更多的功能。在测试OS/2之后,卡特勒感到“心口疼痛”,因为他已承诺,NT将可以运行OS/2的程序。“这样,我们在努力制造最先进的艺术品(可移植系统),还要让它和垃圾OS/2兼容。”他说。

  莱特温觉得卡特勒不能理解微软为了赢得IBM而所做的妥协——卡特勒不会去做的妥协,因为IBM对NT的发展不提供任何帮助。莱特温发现设计OS/2的时候,好的点子不是被摒弃,就是处于无休止的争论中。他对卡特勒的自负也感到很愤怒,他认为卡特勒把自己看作是普罗米修斯,“从众神那儿带来火,以此来照亮(微软的)可怜的众生。但我们的确没这么想过”。

  在1989年3月9日,阿丽塔卡特勒打电话告诉儿子,他77岁的老父亲不幸因心脏病去世。卡特勒似乎无动于衷,不过他母亲也没吃惊。儿子与他父亲之间有鸿沟,她说:“他对此一点感情都没有。”然而不少人怀疑尼尔对儿子的冷淡是卡特勒保持愤怒的“源头”。不管他和他部落中的程序员们有多么亲密的关系,也不论他通过他的成就获得了多么大的财富,生气这两个字总是与他如影随形。它紧紧地陪伴着他,就像是执拗而熟悉的朋友。当他在令人沮丧的时刻发脾气的时候,他的行为就仿佛是青年时期被压抑的卡特勒的反抗,那时他父亲对他所取得的成就毫无感觉。就如卡特勒高中时期的一位足球教练,拉里车切斯所说:“戴夫年轻时,缺少的是一位可以鼓励他的父亲,对他说:戴夫,你做得很好。放松点。”

  尼尔卡特勒望子成龙,希望儿子能通过竞争或竞赛赢得尊重和别人的倾慕。“不管戴夫做什么,他都得证明他做得比别人好。” 车切斯回忆道。他连最休闲的娱乐也不放过,也要拼命力争上游。“如果你有位父亲说你已经做得很好,你就不用一直去证明它了,但是戴夫不停地证明给他父亲看。”

  对于父亲的去世,卡特勒几乎无话可说:“这基本不影响我什么,我们向来不亲近。”跟往常一样,他言语不能够及的,他通过行动来表达。

  他没出席他父亲的葬礼。

  卡特勒的圈子并不适合喜欢看限制级电影的人。蜂拥来面试卡特勒秘书职位的女士们都会被问到这样一个问题:“关于fuck这个词,你怎么看?”

  “这是我最喜欢的单词!”卡丽 威尔逊(Callie Wilson)获得了这份工作。她曾在微软的销售部门做过助理。卡特勒的坏脾气似乎并不太影响威尔逊的状态,她很快就开始享受卡特勒使者的权利了。通常有任何请求只要提一下他的名字都会得到快速的响应。她说:“卡特勒就好比是你自己的罗特韦尔犬,他对别人可能比较凶,但从不那样对我。他很支持我的工作。”

  在部落工作了几个月之后,威尔逊迎来了三十岁的生日。为了帮她庆祝生日,她被带到索特的硬件实验室,他们在那里举行了一个聚会,还邀请了脱衣舞男为她助兴。不过,她有点被激怒了,于是想报复一下。在下一个男同事生日聚会的时候,她找了一个女朋友来表演脱衣舞。她朋友还带来了手提式音箱。她打开音乐,开始跳舞,向过生日的小伙子慢慢靠近。突然,她停了下来,看着小伙子说:“他们没付够钱,要我给你脱衣服,没门儿。”然后带着手提式音箱扬长而去。小伙子楞住了,而卡特勒则狂笑不止。

  工作中,卡特勒可以在一眨眼工夫从笑脸菩萨变成一头怒狮。他不喜欢吊儿郎当,建议办公室里禁止娱乐。他从不考虑别人的感受。他并不是故意想让所有人都感觉很糟,而是希望工作时别去顾忌情绪问题。“我们来这儿是工作的。”他说。一个领导不应该“好像走在鸡蛋壳上,四处小心。伙计,今天你感觉怎么样呀?情绪不错,可以工作吧?你能来上班,简直太棒了。”“嘿,我们可是拿薪水的,对吗?所以我希望每个人时刻保持最好的工作状态。我希望他们做好自己的工作:如果他们一直做得很好,他们和我相处得也很好。可如果他们不好好工作,那跟我肯定相处得不好。”

  技术争论既是实验室里的福音,又是祸根。工程和发明总是用不同的方法得到同样的结果。关于技术的恳切争吵在所有的技术公司都很常见。程序员们把一些分歧看作是“信仰不同”。偏执狂喜欢争得你死我活才罢休;中立派则往往会说,两者都可以。可是不能用逻辑说服对方的偏执狂——只能扔下狠话了。

  使偏执狂争论不休的古怪问题之一,是编写C语言程序使用的符号系统。C语言是使用最广泛的计算机编程语言之一。在过去的几年中,微软公司已经形成了自己的一套命名规范,就是“匈牙利表示法”,它的创作者是出生在布达佩斯的查尔斯西蒙尼,他也许是微软最有影响力的程序员。匈牙利表示法把大量的信息用一种紧凑的形式表达出来,但它是由一些晦涩难懂的缩略语组成的,缺少使用英文单词的传统语言那种人们熟悉的表达能力。

  两种不同风格必然会导致数不尽数的讨论。下面有两行指令,它们的内容是一致的,上面那行用的是匈牙利表示法,而下面那行则不是:pfi->pbufCur->ibCur=ibFile;

  File->CurrentBuffer->Offset=File Offset;卡特勒和他的部落们反对使用匈牙利语言。这让伍德很高兴,他曾说匈牙利表示法“是我见过的最愚蠢的东西。”他还补充道,“编程风格之争的确浪费了宝贵的资源,但匈牙利表示法也许浪费的更多。不过,很多宗教也这样。”

  关于匈牙利表示法这个“宗教”问题,伍德是站在卡特勒这边的。可是,没有任何迹象表明伍德会成为卡特勒的又一膜拜者。他觉得前DEC的男人们有些古怪,他们“围着卡特勒走在鸡蛋壳上,神经兮兮,惟恐得罪了他。”他们当中,有些人害怕卡特勒,而有些人对卡特勒却崇拜得不得了。他们对卡特勒的热情真是太直白了,有个微软人问道:“难道卡特勒是弥塞亚?”

  从某种意义上说,答案是肯定的。卡特勒给他的部落成员们以生活的目的,在某种程度上,他像一个天生的领导人一样振奋起他们的精神。他浑身散发的自信力,能使他的追随者们感觉到事物都是正确的和好的。

  然而,伍德更能客观地看待卡特勒,他对卡特勒没那么多热爱之情。“史蒂夫不惧怕戴夫,”卡特勒的一个亲密战友说,“他并不把戴夫看作是一个大英雄,他对戴夫的指令持怀疑态度。”

  伍德有实力为他自由的心灵买单。他在微软的工作使他拥有价值几百万美元的公司股票和经济上的保障——所以在卡特勒面前,他不需要做任何妥协。如果他不想工作,他随时都可以停下来。

  在整个团队中,只有他意识到卡特勒的事业到了十字路口——他的时代也许过去了。许多工程师的黄金期都不长,每个伟大的工程师或发明家的命运大体都这样。伍德觉得卡特勒有许多需要证明的东西。另外,他还觉得卡特勒从DEC的灰烬中走出来,到微软来领导NT的开发的这个故事,也许激励的意味要比知识经验本身多。这个故事应该是这样:卡特勒因为被DEC从背后捅了一刀,并被无情地逐出公司,所以到微软来了。卡特勒的火暴脾气扼杀了Prism,伍德觉得,“卡特勒的过错和DEC一样多。”

  在一些小的方面,伍德把他对卡特勒的不敬流露了出来。卡特勒十分喜欢给他的代码增加大量的注释。这些被程序员们称为“编码注释”是写在程序里的,这样,对编码原作者意图感兴趣的人就可以看到了。读这些注释,虽然有点无聊,但是很有用。原始的代码编写者离开之后,代码还会存在。注释可以帮助理解代码背后的动机和原因。如果想修改或改进一个程序,编写良好的注释作用很大。卡特勒的注释很漂亮,但做得有些过头,实际上他的每行编码都有注释。伍德的异义部分是因为他写代码比卡特勒多很多,所以几乎没多少时间来写注释。“注释的问题是代码总在进化,”伍德说,“我同时在忙五件事儿,代码也天天在变,那注释也得相应地修改。”当然,卡特勒对伍德的难题有个简单的解决方式:修改代码的同时,修改注释。

  伍德对文档化其工作的不情愿态度让卡特勒生气,“史蒂夫是个很难管的家伙,难管极了,”卡特勒说,“他随时可以退休。所以他的态度就像是:我想做什么就做什么。”卡特勒向皮亚佐利抱怨对伍德的不满,但也没别的办法。皮亚佐利觉得与伍德争论他从没有改变过的习惯是没有意义的。而且,有一个未被“改造”的伍德总比完全没有伍德好。

  剑拔弩张。卡特勒说:“我这里没有小事。”有一次,他和伍德就一些失误当面对质。他心里怒火燃烧,说话的声音就像是大口大口地吞水。他站在伍德面前几乎碰到他的鼻子。伍德心里嘀咕:“他会对我动手吗?”

  卡特勒没动手。

  卡特勒和伍德之间的矛盾总算控制在合理范围内,但他和达里尔鲁宾(Darryl Rubin)的摩擦却没有控制好。鲁宾是微软的首席网络软件工程师,他既聪明又富有幽默感:他是软件业里的伍迪艾伦 ?ㄌ乩盏嚼词保他曾十分激动,认为他是“行业中的巨人之一”。他在大学里就用过卡特勒的程序,对卡特勒的设计“超乎一般地熟悉”。但是当他第一次见到卡特勒本人的时候,鲁宾被吓坏了。卡特勒大步迈进房间,“就像空军上校……胡须剃得干干净净,寸短的头发,还有那固执、严肃、坚忍不拔的神态”。鲁宾觉得做软件的人不应该那么一板一眼。

  ∥榈稀ぐ伦是一位20世纪后半期重要的美国电影导演和喜剧演员。——译者注网络设计已成为微软的一个痛处。它纵然是微机和工作站的典型特征,可是在个人电脑世界里,它算是迟到者。除了苹果公司的麦金塔系统使电脑可以简单有效地共享文件和打印机,消费者还没找到可以连接不同品牌微机的标准模式。犹他州的诺维尔公司抓住了这一机遇,它的Netware程序成为同行中的佼佼者。它成功地把很多电脑连接起来,可以共享一台打印机,也可以处理在别的电脑上的文件。打印和文件服务,虽然是平凡的事务,却是个人电脑网络设计的活力源泉。诺维尔的成功很大部分得益于服务的传达很快,微软不仅难以超越,就连追赶都有困难。同时,鲁宾在率领一个团队开发OS/2的网络体系Lan Man局域网,这是微软试图赶超诺维尔的最后希望。

  卡特勒将他的严谨观点也带到了网络设计上。他认为诺维尔的Netware经常出问题,而且缺乏防止入侵者进入操作文件和打印机的有效设置。他认为,如果有一种操作系统能够提供可靠安全的网络,人们肯定趋之若鹜,哪怕速度慢一点。

  鲁宾觉得卡特勒错了。消费者最在乎的是软件的速度。微软除了提供最快的编码,别无选择。鲁宾坚持。而且完成这个任务的最佳人选就是鲁宾,“因为我高度关心性能问题,而卡特勒则不太在乎。”而鲁宾的要求“创造了与卡特勒之间的必然冲突”,卡特勒高调强调他的观点是正确的。鲁宾的一位同盟者把纷争点归纳得很透彻:“我们说别再去买教训了。他们说我们如此聪慧,绝不可能犯错误。”

  他们俩谁也不肯让步。鲁宾跟卡特勒说别插手网络设计的工作。卡特勒冷冰冰地回应:“我就是想告诉鲁宾,他是这个公司的网络设计的架构师,这没有问题。但我们准备做自己的(网络体系),不用他告诉我们去做什么。”

  后来卡特勒对网络设计的干预慢慢淡去,鲁宾写了嘲讽卡特勒大男子主义的一系列新闻快讯来庆祝这胜利。

微软操作系统最核心开发故事第3章:部落 - CNET科技资讯网 微软操作系统最核心开发故事第3章:部落 - CNET科技资讯网 微软操作系统最核心开发故事第2章:代码之王 - CNET科技资讯网 微软操作系统最核心开发故事第4章:死胡同 微软操作系统最核心开发故事 第1章 代码勇士(3) - 天地之大,任我游! - CSDN博... 微软操作系统最核心开发故事 第1章 代码勇士(1) - 天地之大,任我游! - CSDN博... 微软操作系统最核心开发故事 第1章 代码勇士(2) - 天地之大,任我游! - CSDN博... 腾讯马化腾的低调与凶猛(图) - CNET科技资讯网 深度报道:中国IT渠道年度变革 - CNET科技资讯网 CNET 2010软件领域回顾:万亿产业仍待做强做大_软件_商业科技_CNET科技资讯网 新型显示器件都有各自发展空间 - CNET科技资讯网 微软历代手机操作系统一览-华军资讯 微软Windows7操作系统提速技巧总结 百度拟开发手机操作系统 百度拟开发手机操作系统 从头开始编写操作系统(3) 第2章:基本理论 - xiaoxiaoyaya的专栏 - CS... 从头开始编写操作系统(4) 第3章:引导加载器 - xiaoxiaoyaya的专栏 - C... 从头开始编写操作系统(6) 第5章:引导加载器3 - xiaoxiaoyaya的专栏 - ... 施密特:科技公司“四人帮”没有微软 故事第3节 故事第3节 伊朗开发内联网自制操作系统 Google手机操作系统Android应用开发入门 嵌入式Linux操作系统的驱动程序开发要点