前  言

对当代最有声望的程序员进行系列访谈的这个想法,是由微软出版社的出版人Min S. Yee提出的。Yee熟悉软件创作过程中的艰难与喜悦,自己又写过几本书,所以当他在微软(主要是一个软件公司,不过也是一个出版社)工作时能注意到作家和程序员工作的相似性,也就不足为奇了。他与微软程序设计人员之间的交谈揭示出了编程的艺术、手艺和科学之间大量细微的差异。Yee发现书店中有无数有关“如何”编程的书,但是以个性化、深入的方式展示软件设计人员的经验、方法和哲理的内容却非常匮乏。所以,微软出版社决定揭示软件背后的思想和个性。而我们认为最好的办法就是让这些人在出版的访谈录中讲述自己的故事。

这些访谈不是为了询问程序员有关项目的秘密,也不是要收集他们对软件业日常进展情况的意见。我们的目的是讨论那些在这个激动人心又快速发展的行业中常常被忽视的、不受时间影响的事情。我们想要揭示开发Macintosh那样的操作系统、Lotus 1-2-3那样的应用程序、《吃豆人》(Pac Man)那样的计算机游戏的神秘之旅。我们问了这样的问题:那些想法是从哪里来的?把想法转化为现实有多难?开发大型程序是什么感觉?这是一门艺术还是一门科学?是手艺还是技能?同样的事情还能再做一次吗?

作为采访者,我的目标不是支配、欺骗或操控。我没有想着要教别人怎样说话。我的目标是尽可能不被人注意,让程序员自由地反思、反省,然后用言语把他自己的编程方法表达出来。

在访谈过程中,我尽可能问所有程序员相同的问题,这样以后可以对这些访谈进行研读和比较。我们觉得开放式的常规问题有助于突出编程方法间的相似与差异,让每个程序员的个性和特殊兴趣都显现出来。实际情况也是这样的。有些人,如加里•基尔代尔和巴特勒•兰普森,给出了关于编程理论和实践方法的真知灼见;另一些人,如丹•布兰克林和鲍勃•卡尔,把主要精力放在了对特定程序开发过程的探讨上;还有一些人,如鲍勃•弗兰克斯顿和加隆•兰尼尔,对软件和微机的未来进行了思考。这些发人深省、内容各异的讨论开始勾勒出当今各种各样、不落窠臼的程序员的群像。

有些时候,我会和程序员们见两三次面,谈上几个小时——沉思、谈论、探索。但是,访谈结束并不意味着整个过程也结束了。我们从磁带上将访谈内容记录下来,编辑、精简,然后返给程序员们,这样他们可以读一读自己说过的话。他们可以对访谈内容再加工,确保能确切表达出自己的意思。

此外,我们还请每位程序员都提供一份与工作相关的样本,可以是一段代码、一个程序、一些程序设计的草稿或是信手涂鸦,这样读者可以看到程序员在纸上写下想法时的风格。我们收到了各种各样的材料,有些具有很高的历史价值。比如,我们从丹•布兰克林那里收到了VisiCalc早期设计的草图。安迪•赫兹菲尔德送来的样本也是别具一格:一个完整的程序,有30多页,是Macintosh计算机上叫做IconBounce的程序。所有这些都深刻揭示了这些人的想法和工作。

世界上的优秀程序员为数众多,他们不会都出现在本书中。所以,这是对当代杰出程序员进行访谈的系列图书的第一本。

在这个不断变化的行业中,每一天都有新的突破,会引入一个创新的软件,会成立一家新公司。行业中,明星起起落落只是一夜之间的事情。要找出所谓世界上最优秀的20个左右的程序员,那是在抓瞎。所以我们选取了具有特定专长和阅历的一群人。访谈对象主要是微机程序员,不过有些程序员在小型机和大型机上也有丰富的经验。 “程序员”一词有不同的含义,所以本书的书名是有点问题的。在软件行业,“程序员”一般用来描述编写和开发能在计算机上工作的软件的人。随着软件行业越来越尖端,软件越来越复杂,软件设计人员和程序人员之间正出现越来越多的差别。针对本书,程序员一词指软件开发人员或软件设计人员,常常但并非总是涉及实际代码的编写。书中的有些人,像巴特勒•兰普森、岩谷徹和杰夫•拉斯金,承认自己并没有参与到程序源代码的编写工作中,他们认为自己并不是程序员,而是软件设计人员。他们可能构思了程序的总体想法、开发了算法、编写了规格说明书、设计了功能,但也许并没有一行一行地输入那些构成程序的代码。把这些各不相同、多才多艺的人归到某一类总是很困难的。

本书努力从大量优秀程序员中筛选出一些人,他们中有些人的照片曾出现在杂志封面上,而有些人则鲜为人知。他们代表了不同年龄段、经历各不相同的人。有的年纪大些,现在正是40多岁,是他们最早发起了微机革命;有的年轻,他们充满活力、不守旧,正准备推动新计算机革命超越了已往的成就。这里有上班族,像C. 韦恩•莱特莱夫和查尔斯•西蒙尼;也有坚定的独立工作者,如乔纳森•萨奇和彼得•罗伊森;还有热情的企业家,如雷•奥奇、加里•基尔代尔和比尔•盖茨。我们发现有些人能够带给我们许多启发,有些人能让我们幡然猛醒;有些人取得了巨大成功,有些人却不太成功。但是毫无疑问,书中访谈的程序员都是杰出的,我们体会了他们对编程这个创意过程的深刻见解,看到了计算机行业中各种各样的人和经历。

虽然访谈的目的是介绍活跃在业内的程序员,但是本书也成为了一部软件行业的外传,这是由一些主要参与者讲述的。本书的顺序大致反映出这个行业的历史,虽然很多人现在已经转向新的产品,拥有了新的专长。

本书的第一位被访者是查尔斯•西蒙尼。他于20世纪60年代在匈牙利开始计算机研究,那时他用的是一台苏联制造的Ural II计算机。接着受采访的是巴特勒•兰普森,他是查尔斯•西蒙尼在加州大学伯克利分校的教授,也是西蒙尼后来在施乐公司帕洛阿尔托研究中心(下文简称施乐PARC)的工作伙伴。兰普森参与了Alto个人计算机的开发工作,他参与的其他很多基础研究工作都直接推动了微机革命。约翰•沃诺克,另外一位在施乐PARC工作过的研究员,也是PostScript的开发人员,是从犹他大学来到西海岸的。在犹他大学的时候,曾参加了在Evans和Sutherland领导下的计算机图形研究最鼎盛时期的工作。

接下来受访的是加里•基尔代尔,他开发了个人计算机上的第一个操作系统,叫做CP/M。因为比尔•盖茨在BASIC方面的工作,我们接下来采访了他,BASIC是使用最广泛的一种计算机语言。约翰•佩奇,PFS软件产品线的设计人员,是最早一批为商业领域中新出现的个人计算机用户定制程序的人。C.韦恩•莱特莱夫开发了dBASE,这是最先进的数据库程序之一,在微机革命的很早期就树立起了声誉。然后我们转而介绍了东海岸软件行业的情况,我们找到了丹•布兰克林和鲍勃•弗兰克斯顿,他们是个人计算机上一种最早的电子表格程序VisiCalc的创始人。接下来是Lotus 1-2-3的程序员乔纳森•萨奇,然后我们又与雷•奥奇进行了交谈,他在为Lotus开发Symphony之前,先后在Data General(总部设在波士顿的一家小型计算机公司)为乔纳森•萨奇工作、在Software Arts为丹•布兰克林和鲍勃•弗兰克斯顿工作。接下来我们采访了彼得•罗伊森,他开发了T/Maker,这是另外一个电子表格程序,比VisiCalc晚6个月问世。再接下来是鲍勃•卡尔,他开发了Framework,那是Symphony的竞争产品。然后我们又把注意力放到了Macintosh计算机上,我们对杰夫•拉斯金进行了采访,他是最初负责Macintosh项目的人。还有安迪•赫兹菲尔德,Mac操作系统的开发要归功于他。

本书最后一组程序员是一些更加喜欢革新的、具有艺术气质的程序员。我们在日本东京找到了极为成功的《吃豆人》游戏的设计者岩谷徹,听他谈了他的作品背后的理念。斯科特•金,一位图形设计人员、音乐人,同时也是一名程序员,讨论了第四方软件和全新的用户界面设计理念。加隆•兰尼尔也是一个音乐人,之前开发过游戏,目前正在参与可视化编程的工作,他认为可视化编程将为我们的计算机体验增加一个新的维度,会给编程带来一场革命。最后,我们采访了卢卡斯影业公司的迈克尔•霍利。他24岁,是本书中最年轻的程序员(同时也是音乐人)。他目前参与的工作是为SoundDroid开发软件。SoundDroid是一种新型计算机,将用于编辑和创作电影中的音频部分。

我们希望本书可以为雄心勃勃的年轻程序员,以及那些希望从专家那里了解到软件行业成功秘密的专业人士提供指导。不过本书不仅仅具有指导价值,它还是一本非常好的读物,它将软件行业幕后的一幅幅场景活化在你面前,并且详述了在开发创新软件产品时出现的大量思想、方法和业界的风云人物。

Susan Lammers

目录

  • 版权声明
  • 本书赞誉
  • 译 者 序
  • 中文版序
  • 前  言
  • 第1篇 查尔斯·西蒙尼
  • 第2篇 巴特勒·兰普森
  • 第3篇 约翰•沃诺克
  • 第4篇 加里•基尔代尔
  • 第5篇 比尔•盖茨
  • 第6篇 约翰•佩奇
  • 第7篇 C. 韦恩•莱特莱夫
  • 第8篇 丹•布兰克林
  • 第9篇 鲍勃•弗兰克斯顿
  • 第10篇 乔纳森•萨奇
  • 第11篇 雷•奥奇
  • 第12篇 彼得•罗伊森
  • 第13篇 鲍勃•卡尔
  • 第14篇 杰夫•拉斯金
  • 第15篇 安迪•赫兹菲尔德
  • 第16篇 岩谷徹
  • 第17篇 斯科特•金
  • 第18篇 加隆•兰尼尔
  • 第19篇 迈克尔•霍利
  • 词 汇 表
  • 附  录