编程大师访谈录

Table of Contents

https://book.douban.com/subject/7007204/

编程大师访谈录 (图灵程序设计丛书)

拉默斯 (Susan Lammers)

引用 (芝加哥风格): Lammers), 拉默斯 (Susan. 编程大师访谈录 (图灵程序设计丛书). 人民邮电出版社, 2012. Kindle edition.

1. 第1篇 查尔斯·西蒙尼

西蒙尼:当然,这是最重要的一步:最优算法的知识当属科学,结构的想象则是艺术。这些算法的细节,以及编写高效代码实现这些结构的转换,是编程像手艺活的一面。从技术上讲,这就是所谓维护结构的不变性。编写代码以维护不变性是相对简单的技艺,不过这需要非常用心并辅之以大量训练才能练就。

有一次,我其实写了一份极为详尽的工作指令,也就是所谓的元程序。这差不多就是个程序,只不过是用非常非常高级的语言写的。我们从斯坦福大学找了两个机灵鬼作为“试验对象”。他们写的程序完全符合我的要求,这样我们实现了双赢:首先,对我来说,用这种非常高级的语言工作更容易,本质上是在对这些人进行编程;其次,他们真正弄清楚了这个程序,效果远远好过我直接交给他们写好的代码清单,并叮嘱他们仔细研读这个程序。他们掌握了这个程序,因为这是他们写的。瞧,每个人都可以宣称自己写了这个程序。这个程序是我写的,也是他们写的。真是太棒了!我认为管理的最佳方法是言传身教,经常复审代码。我们一直坚持开展代码复审。

我认为“简单崇拜”,即以简单本身作为追求目标的观念,值得高度怀疑。多年来,这个观念一直诱使我们关注那些回报最快的问题。但它只是一种手段。我认为,计算机科学,连同其他所有数理科学(数学、物理和现代分子生物学等),都将通过理解非常复杂的现象而不断改进。数学已经发现了一些复杂的基本对象,在这方面也处于领先地位。有一类这样的对象其传统名称是“简单群”,这颇具讽刺意味地反映出“基本”等于“简单”的旧观念。不过,这两个含义也许并不相同。在计算机中,只是喋喋不休地大谈简单性,我们在实际的人工智能、用户界面和语言等领域也许就会毫无进展。

2. 第2篇 巴特勒·兰普森

采访者:你从事过多个学科的研究。你有没有发现物理学、数学和计算机科学之间的共性?兰普森:就物理学和数学而言,一如其他正统的学科,要想有所成就,必须能够清晰地思考。这就是计算机行业的许多成功人士都来自这些领域的原因所在。而现在人们通常一直待在计算机系,要有所成就会更加困难,因为这是一门非常浅显的学科,无法驱使你全力发挥出自己的聪明才智。采访者:你认为这个领域很浅显,是因为它太过原始和年轻吗?兰普森:这是主要原因。有迹象表明它正逐渐变得不再那么浅显,不过这个过程很缓慢。

兰普森:因为从长远来看,你学的内容大部分都没什么价值。你学不到施展聪明才智的新方法,而这些方法对你来说,要比学习如何编写编译器的细枝末节有用得多,尽管后者可能是你本科念计算机科学时的学习内容。我认为,要是所有计算机科学研究生院联合起来,一致决定不接受本科念计算机科学的毕业生,世界会变得更好。学校应当要求这些人补习一年,学习数学或历史等科目,才能继续攻读计算机科学的研究生。不过,我还没看到有学校这么做的。采访者:是什么样的训练或想法给计算机领域带来最大生产率?兰普森:通过数学,你学会逻辑推理。你还会学到如何证明,以及怎么处理抽象要素。通过物理学等实验科学或人文学科,你学会如何应用这些抽象在现实中建立联系。

采访者:你认为要写出优异的程序或系统是否有赖于特定的技术?兰普森:是的。最重要的目标是尽可能准确地定义系统和外界之间的接口,以及系统自身各主要部件之间的接口。多年来,我的设计风格最大的变化是越来越重视待解决的问题,并寻找准确定义接口的技术。这么做非常值得,不仅能更好地理解程序真正做些什么,还能鉴别程序的关键部分。它还可以帮助人们了解该系统是如何组合在一起的。这才是设计程序最重要的一环。

采访者:那么我们应该如何做好准备去迎接未来?兰普森:让计算机普及教育见鬼去吧!它实在是荒谬绝伦。学习数学。学会思考。阅读。写作。这些东西会更有持久的价值。学习如何证明定理:过去几个世纪累积下来的大量证据表明,这项技能可以运用到其他许多事情上。只学 BASIC编程实在不靠谱。

3. 第3篇 约翰·沃诺克

采访者:对你来说,现在是不是比 10年或 20年前更容易写出好代码?沃诺克:工具更好更强大了。编程环境也更优越。语言更具表现力。现在的计算机性能远比 10年或 20年前的强大。但是选择更多也就意味着犯更多错误的可能性也越大。采访者:但是,难道以前积累的所有经验不会使编程容易很多吗?沃诺克:噢,不是的。其实这是交换——获得这些经验的同时也失掉了年轻时拥有的活力。随着年龄的增长,我也许不会再犯那么多错误,但是我也无法再像以往那样充满活力,精力充沛。采访者:现在你写代码的方法有无改变?你会采取不同做法吗?你会事先把每件事计划妥当吗?沃诺克:在动手做任何事情之前,我都会深思熟虑。但一旦开始做事,我就不怕把它扔到一边儿。有一点非常重要,程序员看待一段代码应当像对待一本书的烂章节那样,弃之如敝屣。千万不要过份迷恋一个想法,绝不要固守某样东西以致不能在必要时把它丢掉,这才是程序员应有的态度。另外,绝不要假设你知道的东西别人不知道。总会有聪明的家伙横空出世,提出更妙的算法,或者想出更简单的方法执行某个任务。这一行的一个诀窍就是尽早认识到这点,迅速采纳并善用之,而不必心存“非我创造不可”的烦恼,非要用自己的方式不可。

采访者:早点学习计算机为什么帮助不大?沃诺克:我上了大学,一直念到硕士,因此接受了扎实良好的通识教育。我相信在数学、英语和基础科学方面拥有坚实的基础极为重要。然后,等到读研时,可以尽管放手去学习计算机知识。如果你真想取得成功,先适应社会其他领域,然后再进入计算机行业,这才是更为可取的成功之道。我喜欢计算机,因为它能让你实现之前只能以数学方式写在纸上的东西。你会得到有形的结果。还有调试程序,真正让程序运转起来,真是令人沉醉其中。最后,你可以给机器设定一组参数,让它提供正确的答案。这真的很有意思。它给人带来极大的满足感,有点像登山。这就像生活中的许多活动:当你成功地把它做出来,并最终让它工作正常,那种感觉妙不可言,你也会因此而无比快乐。

4. 第4篇 加里·基尔代尔

采访者:你曾在海军研究生院教过课。如果再回去教的话,讲课方式会有不同吗?基尔代尔:应该不会,因为我现在的编程方式与我当年教课时的编程方式没有任何区别。我最喜欢教的课程是数据结构。它把人带回到了编程的基础,即如何简化问题。编程过程中的部分工作就是解决问题。对于一个复杂问题,不论是设计计算机程序还是建造一座建筑物,解决问题的方式是什么?刚开始你会觉得问题太难解决了,随后你把问题分解成一个一个的小问题。这就是我想教给学生们的。 在做博士论文时,我曾试图解决一个很难的全局信息流分析( global flow analysis)问题。我知道肯定存在解决办法,但就是找不到答案。最后,我得到了一个清晰的数学模型,我用 LISP对算法进行了编码。那个程序只用了两个小时就完成了,很美,精准地实现了我想要的功能。在当时,没有直接证据可以证明那个程序是能够运行的,但通过 LISP运行的每个例子都按照预期的方式在执行。我还用 XPL写了一个同样的程序, XPL是一个运行编译器的系统语言。后来,我证实了程序是正确的,我发现那个正确的程序是建立在那个非常漂亮的 LISP程序概念上的,而不是建立在那个用相对丑陋的 XPL程序开始的概念之上。

5. 第5篇 比尔·盖茨

采访者:你认为计算机编程中最困难的部分是什么?盖茨:最困难的部分是确定采用什么算法,然后还要尽可能地简化算法。做到最简单的形式是很难的。必须在心中模拟程序是如何工作的,必须完全了解程序各部分是如何一起工作的。最好的软件是其中有一个程序员完全了解程序的工作方式。要做到这一点,必须要特别热爱编程,集中精力让程序变得极为简洁。

盖茨:优秀的程序员对于软件产品的开发是至关重要的。但是我们不赞同独行侠的做法,不会仅仅因为一个人很优秀,就允许他在代码中不添加注释,或允许他不与其他人沟通,或是允许他把自己的想法强加给别人。我们希望程序员能够相互尊重。我认为大多数优秀的程序员都希望周围有其他优秀的程序员。当他们想出了一个很好的算法时,他们希望周围有能够欣赏其绝妙之处的同事。因为你在构想那个算法、脑海中产生那样一个模型时,那是个寂寞的事情。如果你原来以为处理过程很复杂,但却找到一个办法,让过程变得很简单,那种感觉好极了。不过你需要从其他程序员那里得到一些反馈。如果已经有了几个优秀的程序员,就会吸引更多优秀的程序员。

采访者:经过多年的经验积累后,编程是否一定会更容易呢?盖茨:不,我认为在过了最初的三四年后,就会非常明显地显现出你是否是一个优秀的程序员。刚开始的几年中,你可能会更多地知道怎样去管理大型项目和不同个性的人,但在三四年后,就能很清楚地看出你会成为什么样的程序员了。在微软没有哪个程序员是在平庸了几年之后突然间一鸣惊人的。我和一个人谈谈他的程序,马上就能知道他是否是个好程序员。如果他真的很棒,每个细节他都会脱口而出。

编程需要非常大量的精力,所以大多数程序员都比较年轻。这就会带来一个问题,因为编程需要很多的训练。在年轻时,目标不是很持久,可能会被这样那样的事分心。但是年轻的程序员应当坚持下去,他们会变得更出色。

采访者:学习计算机科学是成为一名程序员的最佳途径吗?盖茨:不是,成为程序员的最佳途径是编写程序并研究其他人编写的优秀程序。我自己以前就是去翻计算机科学中心的垃圾桶,找出他们的操作系统的程序清单。你要愿意去看别人写的代码,然后写自己的代码,再让其他人复查你的代码。你需要身处这个不可思议的反馈循环当中,让世界级的专家告诉你,你做错了什么。你不能让一些小小的个人习性阻碍你获得这些反馈信息。有些世界级的专家会在一些纯属个人偏好的细节上喋喋不休,比如说该怎样注释程序。你必须跳过所有这些东西,因为在某种程度上,他们是试图以自己的形象来塑造程序员,并试图让你按他们的方法行事。而这些可能并没涉及程序的纯质量问题。

盖茨:对于微软和那些规模比微软大上百倍的公司来说,建立这一领域的标准需要强有力的政治手段。目前可能会出现两种甚至三种不同的、相互不兼容的光盘阅读器。考虑到编写不同版本的软件的成本,这种做法是不合适的。所以在标准上我们投入了很多的注意力和精力。我们正在努力确保我们的标准就是标准。这是很难的,很有挑战性。我们要非常非常迅速地让所有的活动都围绕一个标准开展,并且我们必须确保这个标准是合适的。

6. 第6篇 约翰·佩奇

在设计 PFS时,我偶然发现了一个奇怪的软件设计原则:和想象的恰好相反,复杂的程序远比简单的程序容易编写。复杂的程序容易编写,是因为你把程序的复杂性丢回给用户了,你强迫用户做各种困难的决定。例如,假设用户想知道一个文件中有多少个数据块,你在程序中提供了这个功能,让他自己找出答案。但他用这个信息要做什么,谁知道呢?而如果是一个非常简单的程序,设计者自己必须清楚用户为什么要了解这个信息。从为程序员设计非常复杂的软件到为普通人设计出可用的软件是一个非常有趣的转变。

佩奇:我仍旧觉得编程很好玩,但不能像我喜欢的那样再编写很多程序了。考虑到公司的士气,你不能太深地陷在项目或编程中。在一个大点儿的公司里,领导者需要知道每件事,但又不能多到让员工觉得自己不够好或不再被需要了。公司员工需要觉得他们是在负责自己的工作,并且在心理上觉得他们是正在实施的项目的主人,否则就没有积极性了。

佩奇:我不是工作狂,只有当我去做那些非常具体的工作,并且像我刚才所说的那样,不再考虑其他事情时,我才会是个工作狂——我已经有一段时间没有那样做了。身处领导者的角色,我发现不能长时间地工作了。领导是一种人际交往活动,需要在正常工作时间内完成。同时也是非常消耗精力的,付出很多却没有回报。当身边的人在成长、新的项目开发成功并走向市场、公司持续增长时,你会看到间接的效果。这些令人心情愉快,但却没有编程的那种成就感所带来的直接喜悦。由此,我觉得工作时间不能太长。我必须为自己留出些时间来,这样才能保持平衡的状态而不至于发狂。

7. 第8篇 丹·布兰克林

DEC搬到新罕布什尔州,我不想跟着搬过去,于是开始另谋出路,跟猎头接洽。我强烈意识到自己应该去拿个 MBA学位,这样我在职场上就会更抢手。另外,我也察觉到,当程序员没有前途,他们要跟我这样的毛头小子竞争;新人受过良好的训练,肯接受低薪,愿意工作更长时间。我看到要保持巅峰状态异常困难。我发现程序员到了 50多岁再找工作困难重重。另外,我一直想自己开公司,觉得商学院会给自己提供适当的训练。

8. 第9篇 鲍勃·弗兰克斯顿

采访者:你对年轻程序员的忠告是什么?弗兰克斯顿:总的来说,不要以为你知道所有的东西,要尝试学习并质疑那些假定的东西。要信心十足,但要保持谦虚,要猜想你可能做错了什么。要有刚好够多的罪恶感——不要太多,不然就会害怕去做任何事情——但要足以建立美感。尝试去做更深刻的理解。不要因为你曾使它运行成功了,就以为再也没有什么需要去了解的了。

9. 第10篇 乔纳森·萨奇

萨奇:我在开发 Lotus 1-2-3软件的那 10个月,除了吃和睡,一直都在工作。因为时间不够,其他什么事情都顾不上了——我现在还有一些这样的感觉。在大公司担任重要职位有很大压力,你不能松懈。我曾有过在麻省理工学院持续奋战一两个月的时候,但从来不曾持续高强度地工作 10个月。在那种压力下连续工作好几个月,在很多方面来说都是一种自我毁灭。

有些人很擅长优化每一步指令。他们可以让一小段代码变得极为紧凑。而另一些人只注重算法和实现过程。我介于这两者之间。我不是很擅长非常紧凑地压缩代码。多年前我就发现,如果那样编程的话,每次需要修改代码时,都必须拆开整个程序并重写一遍。但如果稍退一步,只在非常重要的几个点上让代码非常紧凑,那么程序在完成后就容易维护得多了。

10. 第11篇 雷·奥奇

我已经有足够的经验,非常清楚自己能做什么。非程序员出身的管理人员负责的复杂编程项目往往注定要出差错,因为他们既不理解项目组件之错综复杂,也不了解程序员的个性脾气。软件项目经理必须熟悉手下的员工。我会尽力了解与自己共事的每个人的家庭状况、生活方式以及工作习惯。我知道,要是每天朝九晚五地工作,项目肯定完不成。另外,我也非常清楚,不能逼着大家在整个项目期间没日没夜地工作。但我相信,遇到紧要关头时,如有必要,我可以依靠他们夜以继日地工作。我还得知道什么时候该让大家放松一下。

许多经理发现程序员很难相处。我很少有这类问题。管理人员试图颁发条令或过度管制时,往往很容易滋生问题。程序员很有创造力,善于自我指导和自我激励。你必须预先认识到这一点,不到万不得已,千万不要介入。如果你特意让团队日子好过,他们也能意识到的话,在关键时候他们自然会为你着想。整个环境必须有利于编程。不同的人对工作环境要求不同。在我们看来,好的工作环境要有漂亮的办公室,要尽可能提供最好的设备,每个房间一台立体声,冰箱里总是装满食物。在 Iris公司,有些团队成员喜欢在家里工作,他们在家用的全套机器配置跟公司的完全一样。程序员不必担心自己做的是否跟他们的同侪(或管理同行)一样多,因为这些不安全感可能会对积极性造成负面影响。他们应该感觉得到自己是团队的一部分。这就是为什么团队规模应该尽量小,并且尽量不要分等级的原因。

我们按期完成的另一个原因是沟通十分顺畅。在封闭环境中,规模小的开发团队沟通非常有效。后来,跟莲花总部的沟通开始逐渐成为瓶颈,我们的应对措施是关闭分公司,搬回总部。最后一个原因是开发团队规模小。我认为,可能的话,产品的设计和实现不应超过 5个人。当然,如果你正在实施某个大型系统,比如美国国税局税务审计系统,用规模这么小的开发团队,显然不切实际。不过,小团队往往占有很多优势。

采访者:你怎么防范职业倦怠?奥奇:时间不要排得太紧,开发过程中要合理安排休息次数。如果打算集中一段时间进行编码,我会排好时间,在开始下一轮重负荷的编码工作之前,留足 6个月的时间做些概要设计之类的工作。我会让自己休息一阵。等到重新投入高强度的编程时,我已经巴不得早点开始了。

采访者:你对现在的年轻程序员有什么建议?奥奇:如果你是硬被拉入编程这一行的,我建议你保持乐观的心态,尽量多编程,同时尽可能参加各种不同的项目。尽可能多把时间花在计算机上,还要学会准确判断自己的职业倦怠状况( burnout level)。要是别人觉得你很古怪,不用放在心上。

11. 第12篇 彼得·罗伊森

采访者:你认为公司里的程序员必须要妥协吗?罗伊森:不一定。有人付你薪水时,你总要在某种程度上做他们希望你做的事情。我们得面对这一点:金钱能买到影响力。这是这片土地上的规则。但我不会把这叫做妥协。事实上,有些公司把这称作成熟,认为这是积极调整。当我为这些大机构工作时,对于某些分派到的工作,我做得很开心,对结果也很满意,没有什么需要妥协的地方。

罗伊森:大机构并没有创造环境来鼓励员工进行创造性的思考。员工做到了要求做的事情,就可以得到报偿,多做也没有用。没有动力的话,给程序员提要求的人拿不出引人入胜的项目,而程序员也不会花时间去思考解决问题的有趣方式。在我工作过的机构里,很多时候,我们甚至根本没有去解决什么问题,因为我们首先要做可行性分析,其费时往往超过真正完成工作所需的时间。

采访者:自从你写了 T/ Maker之后,生活变化多吗?罗伊森:我的生活变了很多,特别是我对工作和薪水的看法有了很大改变。当我为其他人工作时,我认为再找工作的话,一定要比前一份工作至少高出 5%的收入,而且我很不愿意冒险。我总是想着薪水和下一个发薪日,因为我可能想要买个新电视或立体声音响什么的。当我还在做这些早期的工作时,我常常禁不住想:为什么会有人给我这么好的薪水,而我并没有做什么对世界有益的事——我只是无所事事地和别人一起喝咖啡,写永远不会被实现的可行性报告和没人会去用的程序。我的工作只对我有好处,而且这唯一的好处就是我的薪水。过了一段时间之后,我开始感到自己很没用,因为我没做任何有用的事情。现在我的感觉则变成了发现自己有一些相当有用的技能。我从作品本身得到满足,而不再老是想到薪水。如果现在给我两个选择,一个是拿一半的钱做我喜欢做的事,一个是拿两倍的钱做别人让我做的事,我会选择低收入和自由。当在工作上很快乐时,我并不需要开一辆保时捷,因为那并不是生活的重要组成部分。做自己喜欢的工作则是我生活的一个重大组成部分。

采访者:如果一个程序员写了一个优秀的程序,它是不是一定会成功呢?罗伊森:我过去是这么认为的。但现在我真的不确定了。这取决于你如何定义成功。我对成功的理解是,白天可以做自己喜欢的事情,月末可以付得起账单。这样的成功不难获得。基本上你做任何事情都可能达到这样的成功。但是,我也知道,即使写出一个好 10倍的软件包,你也取代不了像 Lotus这样非常成功的产品。不仅如此,好的主意是很难获得的。不是说你坐下来说“我今天一定要有一个好主意”就能成的。也不是说你拉 10个人过来,就能想出 50个点子。我这一生也只有三四个点子令人满意,可以开发成有用的产品。其中的一个就是 T/ Maker,至于其他点子,因为没有去实行它们,现在我连它们究竟是什么都想不起来了。

采访者:你关心计算机在社会中的作用吗?罗伊森:不太关心。对于整个行业或者整个世界,我都不那么关心。对于世界,我的关心程度只限于我希望世界是安宁的,我也希望尽我能尽的本分让世界安宁。就我的工作而言,我不关心我的程序的营销战略是否很好,计算机行业是否会经历衰退,或者现在是否是时候做某个特别项目。对这些我毫不关心。因为人如果花上一辈子的时间去想是否该做某件事,到最后就会没时间真正完成一件事了。这有点像交税。我乐意交税,因为这是对社会的贡献,而没有社会的话我也赚不了钱。我知道有些人时常为交税烦恼,在烦恼上花的时间都可以用来赚很多钱了。

12. 第13篇 鲍勃·卡尔

采访者:你当时做 Framework软件研发的目标和工作规则是什么?卡尔:我得到的一个忠告就是尽可能推迟编码。一旦写了一堆代码后,就很难改变方向了。它就好比混凝土一样成了阻碍。因此,我尽可能推迟编码,但程序设计却一直在我的脑海中,从没有停止过。原本我对 Framework软件的设想是一个包含字处理、电子表格、图形和数据库等在内的多功能产品。后来,我又雄心勃勃地想实现引导程序的概念,换句话说,在底层实现一个系统或是一种语言,系统的其余部分都可以在这个基础上构建起来。我想做出一台神奇的、时髦的机器,可以作为 Framework软件的语言和系统。但我相当沮丧,因为我无法驯服那个怪物。所以我缩减了原来的设计。

我倾向于把事情简化到一个相当简单的框架——如果你不介意使用框架这个术语——然后再把它扩展开来应用到现实世界中。我不苛求完美,并不指望框架对每个应用它的功能来说都非常适合,但我希望不论是什么主题,这个框架都能为使用者提供深刻的见解和指导。我的数学非常糟糕,但是如果做一个物理学家,我会很高兴的,因为我认为物理学家和我做的是一样的:他们把物理现实简化成为数不多的定理和规则,然后用它们去预测和解释物理现实。我在软件上做着同样的事情——努力提出一些定理。

13. 第14篇 杰夫·拉斯金

采访者:你的整个做法似乎逆行业发展趋势而行,这行的趋势是制造更大的计算机以容纳更大的程序……拉斯金:是的。我们不追求大而又大,我们奉行好上加好。在向投资人描述这个项目时,我告诉他们:“我们将打造一个字处理器,支持信息检索和远程通信包,只有 15个命令和 64KB的代码。”其他所有公司给出的都是数以百计的命令和几百 KB的代码。我们公司(信息设备)惊讶地发现它最终只需 5个命令。随着时间的推移,项目越来越简单而不是越来越大或越来越复杂,我见过的只此一例。

如果我想告诉全世界位图屏幕太棒了,不管我写多少文章,没人会理会。施乐公司发表过几十篇文章,有谁在意?但是,把 Macintosh做出来并以公道的价格卖上几万台,你猜怎么着?那些买过一台或有所耳闻的人都会发现位图屏幕和图形的整个想法,还会发现单独的图形和文字模式已不再需要,字母不过是图形的另一种形式,不需要额外的硬件就可以制作花哨的字体。这样的状况无疑令人生厌,但是很遗憾,这就是当下的现实:你赚的钱越多,愿意聆听你的人就越多。如果你的话没被《财富》、《福布斯》或《华尔街日报》引用过,就没有人会理睬。如果你说某样东西能赚很多钱,无论你说的是真是假,人们都会洗耳恭听。

采访者:你指的是在硅谷时自己一直身陷复杂性的漩涡之中?拉斯金:图标、窗口、鼠标、庞大的操作系统、臃肿的程序、集成软件包……我想提醒世人:有两样东西在同一张菜单上,并不代表它们配在一起也好吃。

人工智能相关的许多承诺都被误解了。人工智能已经教导我们的有关语言的东西是美好的。那么,我是否认为人工智能值得做?绝对是。我是否认为这会转化出很棒的产品?会有一些。我是否认为这会实现你在大众传媒上了解到的承诺?根本不会。我会投很多钱到人工智能领域吗?没门。

劳斯莱斯让我看尽世间人情百态。我去机场时会有 5个家伙迎上来,打开车门献殷勤:“先生您好,欢迎来到旧金山国际机场。”开别的车到机场时,我可从没享受过这种待遇。他们盼着会捞上大笔小费。在圣何塞闹市区的低底盘汽车之间驾驶也是妙趣横生。那些驾驶者对我这笨重的铁疙瘩投来的敬意,不亚于我对他们低底盘汽车的爱慕。

14. 第18篇 加隆·兰尼尔

采访者:嗯,那你怎么看象形文字?它们已经消失了。兰尼尔:那是因为使用它们的人都被杀死了。但是,即使他们还在的话,也很可能在用一种象形文字的派生文字。我认为计算机会提供一种新的表达方式,人们会认识到英语和计算机各自适用于表达不同的东西。在某些领域,英语已经有些捉襟见肘。当你讨论哲学、经济学、政治中的思想时,人们几乎不明白他们彼此在说些什么。使用计算机,你可以实际建立起完整的思想或概念的交互系统的模型,甚至可以建立起思维方式的交互系统。这些都能更好地用建立在计算机上的模型来表达。英语适合用来描述,而计算机适合用来建模。在将来,这两者将会混合到一起,都会成为我们互相之间沟通方式的一部分。两者一起将会改进我们的沟通方式。无论人们在什么时候沟通,他们都更可能与对方产生共鸣。

15. 第19篇 迈克尔·霍利

一天,我正在和弗朗西斯·科波拉( Francis Ford Coppola) [7]的混录师聊天,他过来看我们的机器。这是个灵巧又淘气的家伙,正被技术搞得晕乎乎的。谈到现在有那么多新工具可用,有那么多新东西需要思考时,没想到他说:“不要忘记这 5分钟的倒带时间从来就没有被浪费。如果你是个好的混录师,你总是在计划下面你要做的手势和效果,你总是为了有 5分钟的连贯操作而在脑海里练习这一过程。使用机器,你就丧失了这一思考时间。”你得到了一些东西,但你也丧失了一些东西。每得到一个新特性,看来总有一些想要的老特性会消失,或至少被扔在了一边。但是,还是有空间让两者共存的。人们必须意识到,出品好的艺术、好的电影、好的音乐仍然是需要花时间的。

愿意呆在黑暗里、继续无知的人们永远不会了解烛光下读书是何种滋味,也不会了解在漂亮的音乐厅里演奏老鲁特琴是什么样的感觉。但如果人们勇于学习的话,他们除了探索新科技外,也会研究老科技,这样他们才能同时重视两者、理解大图景里各个事物的关系。人们可能会很粗浅地使用计算机技术,而不去充分重视技术的背景和来源,这样的风险很大。