第7章

‘为什么财富的分配问题๤引起这么เ多争论?部分原因是反对声最大的人当中,很多人都少有创造财富的经验:大学生、继承人、教授、政客、新า闻记者。如果你在酒吧里听过大家议论体育赛事,你一定很熟悉这种现象。

‘eb怀特eb9๗hite,1้899๗—19๗85,美国当代着名作家、散文家,常年担任《纽约客》杂志的主要撰稿人,以优美的语体风格着称于世。——译者注’

一旦采用了这种新模式,你就会知道布๧方式对软件开的影响有多么重大。桌面软件开之中的许多棘手问题,都是源自于它的那种灾难性的布๧方式。

为了在全社会制ๆ造出一个ฐ禁忌,负责实施ๅ的团体必定既不是特别强大也๣不是特别ี弱小。如果一个团体强大到เ无比自信,它根本不会在乎ๆ别人的抨击。美国人或者英国人对外国媒体的诋毁就毫不在意。但是,如果一个团体太弱小,就会无຀力推行禁忌。有一种行为怪癖叫做“嗜粪症”coprophila,它的患者人数以及影响势力眼下似乎就不太强大,无法把自己的观点推广给其他人。

把不同类型的工作捆绑在一起,可能是为ฦ了行政管理的方便,但是却容易引起混淆。这是我不喜欢“计算机科学”这个词的又一个原因。中间部ຖ分“计算机科学家”的工ื作,也许还可以被称为ฦ计算机的实验科学。但是,两端的数学家和黑客,并不是在做计算机的科学研究。

想要把握这个时代,就必须理解计算机。理解计算机的关键,则是要理解计算机背后的人。表面上这是一个机器的时代,但是实际上机器的设计者决定了我们的时代。程序员的审美决定了你看到的软件界ศ面,程序员的爱好决定了你有什么เ样的软件可以使用。

说来奇怪,如果你希๶望自己的作品对未来的人们有吸引力,方แ法之ใ一就是让你的作品对上几代人有吸引力。我们很难猜想未来是什么样子,但是可以肯定,未来的人们不会在乎ๆ今天流行的风潮,这一点与上几代人是相同的。所以,如果你的作品对今天的人们以及15๓00่年的人都有吸引力,那么它极有可能也会吸引25๓00年的人。

好设计是解决主要问题๤的设计。厨房的煤气灶有四个出火口,排成一个正方形。每个ฐ出火口都由一个调节器控制,四个ฐ出火口就有四个调节器。请问应该如何摆放调节器?最简单的摆放方แ法当然是把四个调节器排成一列ต,但要是这样做,人们使用起来就很不方便,每次都要停下来想一下到底每个ฐ调节器对应的是哪个出火口。如果直接把调节器排成与出火口一样的正方形,就不会有这个ฐ问题๤了。

许多坏设计做得很辛苦,但是从一开始方向就错了。20่世纪中期,有一股使用无຀衬线saທns-色rif字体的潮流。这一类字体接近于纯手写的样式,但是它无助于解决最主要的问题。印刷出来的文字先应该是易于辨认的,所以能够清晰地分辨字母就是最主要的问题——传统的新罗马timesromaທn字体是一种有衬线的字体,虽然看上去古老得就像维多利亚女王时代的风格,但是它的小写g就是可以很轻易地与小写y区分。

答案可以不断改进,同样,问题๤本身也๣可以不断ษ改进。软件的难题๤通常可以被改成等价的较易解决的形式。历史上,物理学的主要难题曾经一度是如何诠释经典着作,后来遂渐变成对可观测到的行为进行预测,这种转变使得物理学的展度大大加快。

好设计是启性的设计。英国女作家简·奥斯汀的作品几乎不带有任何描述。她不告诉读者每件东西看上去是什么样子,只是把故事讲得非常生动,让读者自己把一切都想象出来。同样,绘画作品也๣分为描述性绘画和启性绘画ฑ,后者往往比前者更引人入胜。每个ฐ人看到《蒙娜丽莎》都有自己的理解。

在建筑学和设计学中,这条原则意味着,一幢建筑或一个ฐ物品应该允许你按照ั自己的愿望来使用。举例来说,一幢好的建筑物应该可以充当平台,让你想怎么布置就可以怎么เ布置,过上自己้想过的家庭生活,而不是使得你像执行程序一样只能ม过上建筑师为你安排的生活。

在软件业中,这条原则意味着,你应该为用户一些基本模块,使得他们可以随心所欲自由á组合,就像玩乐高积木那样。在数学中,这条原则意味着,一个可以成为许多新า工作基础的证明要优于一个难度很高、但无助于未来学科展的证明。在科学领域中ณ,总体上可以把引用次数看作对他人启性大小的粗略指标。

好设计通常是有点趣味性的设计。这条原则可能不是所有情况下都成立。但是,丢勒的雕刻、芬兰设计师沙里宁saarinen的子宫椅9๗omb9๗theon、保时捷9๗11้型汽车的原型设计图9-1,在我看来都很有趣。逻辑学家哥德尔g?del的不完备定理就好像一个玩笑那ว样有意思。

图9-ๅ1保时捷911e,1้973年产

我想,这是因为ฦ幽默一定程度上反映了力量。幽默感是强壮的一种表现,始终拥有幽默感就代表你对厄运一笑了之,而丧ç失幽默感则ท表示ิ你被厄运深深伤到。所以,强壮的标志或者至少是特点就是轻松面对自己的人生。充满自信的人常常像燕子一样,以一种居高临下的姿态轻盈地看待周围的一切,比如希区柯克拍摄的电影、1้6๔世纪画家勃鲁盖尔uegel的绘画ฑ甚至莎士比亚也是一个ฐ这方แ面的例子。

好的设计并非一定要有趣,但是很难想象完全无຀趣的设计会是好的设计。

好设计是艰苦的设计。如果观察那ว些做出伟大作品的人,你会现他们的共同点就是工作得非常艰苦。如果你工作得不艰苦,你可能正在浪费时间。

困难的问题需要艰巨เ的付出才能解决,高难度的数学证明需要结构非常精细的解决方法它们往往做起来很有趣,工程学也๣是如此。

当你攀登高山时,必须扔掉一切不必要的装备。在困难地点或预算不足的条件下,建筑师๲就只能ม做出很简练的设计。当解决难题成为压倒一切的任务时,那些流行样式与华丽装饰就被抛到一边去了。

并非所有的痛苦都是有益的。世界上有有益的痛苦,也有无益的痛苦。你需要的是咬牙向前๩冲刺的痛苦,而不是脚๐被钉ล子扎破的痛苦。解决难题的痛苦对设计师๲有好处,但是对付挑剔的客户的痛苦或者对付质量低劣的建材的痛苦就是另外一回事了。

在绘画上,肖像画通常占据最高地位。这不是偶然的,原因不仅是面部肖像比其他题材更能ม打动人,还因为我们太擅长观察脸,所以肖像画ฑ家不得不加倍努力才能达到เ我们的要求。如果画ฑ的是树,树枝画偏了五度也不会有人现。但是,如果你把别人的眼睛画偏了五度,人们一眼就能看出来。

德国包豪斯bauhaus学派的设计师๲采纳了美国建筑师路易斯·沙利ำ文louissullivan的观点“功能ม决定形式”formfollo9sfun9๗,

但是他们实际上的理解是“功能应当决定形式”

。真实情况是,如果开“功能”非常艰难,那么“形式”将不得不全部ຖ都由“功能”决定,因为没有多余的精力再来单独开“形式”了。人们常常觉得野生动物非常优美,原因就是它们的生活非常艰苦,在外形上不可能有多余的部分了。

‘沙利文的原话是“功能总是决定形式”formeverfollo9๗sfun9,所以如今的引用形式实际上不准确,但是我觉得误读后的形式更接近于现代主ว义建筑师的观点。’

好设计是看似容易的设计。优秀运动员比赛时,让人觉得他轻轻松松就获胜了,优秀设计师๲也是如此,他们的工作看上去很容易。大多数时候,这是一种错觉。作家的文章读起来流畅自如,但是背后其实经过了反复修改。

科学和工程学的一些最重大的现在形式上往往很简单,会使得你觉得自己也๣想到过。可是,如果它真的那ว么简单,为什么现人不是你呢?

达·芬奇的有些肖像画只是几根线条。看着它们,你会想只要把这十根八根线条放对位置,你也能画ฑ出如此优美的肖像画ฑ。说的没错,可是难就难在找出正确的位置。只要位置偏移一点点,整幅作品就会一溃千里。

白描其实是最难画的视觉媒介,因为ฦ它们要求几近完美的再现。用数学语言说,线条属于闭合解9,水平不够的艺术家没有办法直接解决问题,只能ม通过不断逼近来求解。许多孩子在十岁左右放弃了绘画,原因之一就是这时他们开始学习๤成年人的绘画ฑ技法,先练习用线条勾勒出人脸。

在大多数领域,看上去容易的事情,背后都需要大量的练习。练习的作用也๣许是训练你把刻意为之的事情变成一种自觉的行为ฦ。有时,我们的训练只是为了让身体养成下意识的反应。优秀钢๐琴家弹奏名曲可以不经过大脑直接完成,艺术家也是这样,熟练以后,脑海中的艺术形象会自动从手上流淌出来,仿佛有人在一旁为他打节奏一样。

人们有时会说自己้有了“状态”,我的理解是,他们这时可以控制ๆ自己้的脊髓。脊髓是更本能的反应,面对难题时,它能ม释放你的直觉。

好设计是对称的设计。对称也๣许只是简洁性的一种表现,但是它十分重要,值得单独列为一点。自然界的对称大量存在,这就说明了对称的重要性。

对称有两ä种:重复性对称和递归性对称。递归性对称就是指子元素า的重复,比如树叶上叶脉的纹路。

历史上,对称曾经泛滥一时,导致现在它在某些领域已经不流行了。从维多利亚女王时代开始,建筑师๲就有意多建造不对称的建筑。20世纪2๐0่年代,不对称成了现代主ว义建筑的一个ฐ明确的前提条件。但是即使如此,这些建筑物往往也只是在主ว轴上不对称,细节部分依然大量使用对称。

在写作中,你会现对称无຀处不在,短语、句子、的情节都是如此。音乐和美术也๣大量使用对称。拼接式的美术作品还有塞尚的一部分作品有非常强烈的视觉感染力,原因就是整幅作品由相同的作图元素构成,这也属于对称。对称性构图产生了一些最让人难忘的绘画作品,尤其是那ว些两个半边互相呼应的作品,比如米开朗基罗的壁画《创世纪》和格兰特·伍德的油画《美国式哥特》。

在数学和工程学中ณ,递归尤其有用。归纳式证明方法既ຂ简洁又美妙。在软件中,能ม用递归解决的问题๤通常代表已经找到了最佳解法。巴黎的埃菲尔铁塔如此引人注目,部分原因就是它的外形是递归的,大塔上面还有小塔图9-2๐。

图9-2埃菲尔铁ກ塔,1้88๖9。大塔上面有小塔

对称的危险在于它可以用来取代思考,在大量使用重复的时候这种危险性更大。

好设计是模仿大自然的设计。我不是说模仿大自然这种行为本身有多么เ好,而是说大自然在长期的演化中已经解决了很多设计问题。所以,如果你的设计与大自然很接近,那ว么它基本上不会很差ๆ。

模仿与剽窃并不相同。如果一部写得好像真实生活的再现,没人会提出异议。虽然写实的价值常常被误解,但它也是绘画的一个重要工具。写实的目的不是为了给生活留下一模一样的记录,而是为你的思想一个ฐ咀嚼点:你的眼睛看着某样东西,你的手就代表你的思想,画出一些比较有意思的内容。

模仿大自然也是工ื程学的有效方法。长久ื以来,船只就像动物一样有龙骨和肋骨。不过,前提条件是技术水平要达到,只有这样才有可能模仿大自然。早ຉ期的飞机设计师按照鸟的形状设计飞机,这样做其实是错的,因为那时还没有足以模拟鸟类行为的轻型材料é和能ม源,也๣做不出高度复杂的控制系统,所以飞机还不可能像鸟类那样飞

。但是,我能想象五十年后,小型的无຀人侦察飞机可以做得完全像鸟一样。

‘莱特兄弟的飞机引擎大约重70公斤ภ,动力为12马力。f-18战斗机的f4๒14-ๅge-40่0่引擎重11吨,推动力接近10吨。换算后可知,两者的单位重量引擎产生的动力相差114๒倍。如今英特尔处理器的计算能力大约是3๑0่年前๩的1700倍。’

现在的计算机已๐经很强大了,不仅能模拟出大自然的环境,还能模拟大自然展演变的结果。遗传算法可能会创造出正常条件下难以设计的复杂事物。

图9-3达·芬奇,《一匹直立的马的研究》,1้481~1้4๒99

好设计是一种再设计。很少有人一次就把事情做对。专家的做法是先完成一个早期原型,然后提出修改计划ฐ,最后把早ຉ期原型扔掉。

扔掉早期原型是需要信心的,你必须有本事看出什么地方还可以改进。举例来说,刚刚开始学画的人往往不愿意重画画错的地方แ。他们觉得能ม画成现在这样已๐经很不错了,如果重画某些部分,结果可能还不如现在。所以,他们就说服自己,我的画ฑ已经过得去了,没准别人也会这么看。

这想法很危险。你应该培养对自己的不满。达·芬奇为了把一根线画对,经常要画五六次。保时捷91้1型汽车的原型很粗糙,只有在重新า设计后它的背部轮廓才变成现在这样独特的曲线。建筑师莱特设计的古根海姆博物馆,最早的时候,右半边有点像古代的塔庙ziggurat,他后来把它倒过来,就成了现在的样子。

犯错误是很正常的事情。你不要把犯错看成灾难,要勇于承认、勇于改正。达·芬奇实际上重新明了素描这种艺术形式,把它当作一种探索更多可能的方式。开源软件因为ฦ公开承认自己会有bug,反而使得代码的bug比较少。

做修改的时候,有一个合适的工具会使得改动更容易。美术史上,15๓世纪油彩取代蛋彩tempera就是一个ฐ重大突破,油彩使得画家更方便地处理那些困难的主题比如人体,因为油彩可以调制ๆ,还可以重画ฑ,蛋彩

就做不到เ这些。

‘蛋彩画是的欧洲绘画方式,盛行于文艺复兴初期,主要是将鸡蛋和水作为溶剂๘,溶解绘画颜料,使之可以用来绘画。——译者注’

好设计是能够复制ๆ的设计。我们对待复制的态度经常是一个否定之否定的过程。刚入门的新手不知不觉地模仿他人,遂渐熟练之后才开始创น作原创性作品。最后他会意识到,把事情做对比原创更重要。

不知不觉的模仿几乎ๆ必然将导致坏设计。如果你不知道自己的想法从何而来,那么你可能就是在模仿另一个模仿者。19๗世纪中期,拉斐尔画派主导了整个画ฑ坛,几乎ๆ每个学画的人都在模仿拉斐尔,可是经常谬以千里。有一些艺术家实在看不下去了,被如此之多模仿拉斐尔的人搞烦了,于是成立了前拉斐尔画派

‘前拉斐尔画派是184๒8๖年由三个ฐ年轻的英国画家创立的。他们认为ฦ,学院派的方法巳๑经腐化了米开朗基罗和拉斐à尔的风格,因此艺术展的正确道路应该回到拉斐尔之前的古典时代。——译者注’

等到เ你逐渐对一件事产生热情的时候,就不会满足于模仿了。你的品味就进入了第二阶段,开始自觉地进行原创。

我想,最伟大的大师最终会达到เ一种脱自我的境界ศ。他们一心想找到เ正确答案,如果别人已经回答出了一部分,那ว就没理由不拿来用。他们足够自信地使用他人的成果,完全不担心因此丧失个ฐ人的特点。

好设计常常是奇特的设计。某些最出色的作品堪称不可思议:欧拉公式、16๔世纪画ฑ家勃鲁盖尔的《雪中猎人》图9-4、sr-ๅ71้“黑鸟”音侦察机图9-5๓、计算机的lisp语言等。它们不仅优美,而且美得很奇特。

图9-ๅ4勃鲁๥盖尔的《雪中猎人》,15๓65年

图9-5洛克希๶德公司的sr-7๕1“黑鸟”音侦察机,1964年

我不太确定原因,可能是因为我不够聪明,才会觉得它们看上去很奇特。一条狗看到开罐器也会认为那是一个ฐ奇迹。如果我是天才的话,可能ม会觉得eiπ=-1้是再平常不过的事情,它又没有说错,有什么เ好奇怪的。

我在前文提到เ的好设计的大多数特点都是可以培育出来的,但是我觉得“奇特”这个ฐ特点是无຀法培育的。你最多就是在它开始显现时不要把它扼杀掉。爱因斯坦并不想让相对论变得很奇特,他只想找出真理,是真理本身显得很奇特。

我曾在一家美术学校学习绘画ฑ,那里的学生最想做的就是展出一种自己的风格。但是,如果你想做出好作品,不可避免地会采用一种独特的方式,就好像每个人走路的姿势其实都不尽相同。米开朗基罗并没想过要树立米开朗基罗风格,他只是想画好作品,结果不由自主地创造出了米开朗基罗风格。

你最后展出来的风格是自然而然形成的。“奇特”这个ฐ特点尤其如此,没有其他路可走。它就像连接大西洋和太平洋的“西北航道”,无຀数人希望找到这条捷径。16๔世纪的风格主义者、19世纪的浪ฐ漫主义者、一代代的美国高中生都在寻找,但就是找不到。唯一达到เ“奇特”的方法,就是追求做出好作品,完成之后再回过头看。

好设计是成批出现的。1้5๓世纪住在佛罗伦萨的伟大艺术家有建筑师布鲁๥内莱斯基、画家吉贝尔蒂、雕塑家多纳泰洛、画家马萨乔、画家菲利普里皮、画家弗拉安吉利科、雕塑家韦罗基奥、画家波提切利、达·芬奇和米开朗基罗。当时,米兰也是同等的大城市,请问你能说出15世纪米兰城有什么伟大艺术家吗?

15世纪的佛罗伦萨有一些独特的条件,它们是不可延续的,因为今天的佛罗伦萨已经不是如此了。我们还必须假设达·芬奇和米开朗基罗拥有的天赋,在米兰城里一定也有人拥有。那ว么为ฦ什么没有出现米兰的达·芬奇呢?

今天,生活在美国的人口大概是15๓世纪佛罗伦萨的一千倍。那么按照比例推算,在我们之ใ中存在着一千个ฐ达·芬奇和一千个米开朗基罗。如果这种推算成立,我们应该每天都看到令人惊叹的艺术奇迹。但是,事实并非如此,原因就是达·芬奇的出现除了他本身的天赋以外,还有赖于1450年的佛罗伦萨。

推动人才成批涌现的最大因素就是,让有天赋的人聚在一起,共同解决某个难题。互相激励比天赋更重要,达·芬奇之所以成为ฦ达·芬奇,主要原因不仅仅是他的天赋,更重要的是他生活在当时的佛罗伦萨,而不是米兰。今天,人类生活的流动性高得多,但是伟大的项ำ目依然不成比例地集中在少数几个热点上:德国包豪斯ั建筑学院、曼哈顿计划、《纽约人》杂志、洛克希德公司的臭鼬工作室、施乐่公司的帕洛阿尔托研究中心。

在历史的任何时刻都有一些热点项目,一些团体在这些项目上做出伟大的成绩。如果你远离这些中心,几乎ๆ不可能单靠自己้就取得伟大成果。某种程度上,你个人最多可以对趋势产生一定的影响,但是你不可能决定趋势,实际上是趋势决定了你。或许有人办得到,但是米兰的达·芬奇显然没有办到。

好设计常常是大胆的设计。在任何一段历史中,人们都会把某些荒谬的东西当作正确的,并且深信不疑,以至于一旦你出言质疑,就有被排挤或者被暴力伤害的危险。

我们自己้的这个ฐ时代要是不同以往,当然令人欢欣鼓舞。伹是就我所知,它并没有任何不同。

这个问题๤不仅存在于每个ฐ年代,还或多或少存在于每个领域。许多文艺复兴时期的艺术作品在当时都被认为ฦ极其大逆不道。根据意大利ำ画家瓦萨里的记载,波提切利ำ因此向教会忏悔并且放弃绘画,巴๒尔托洛梅奥和洛伦索迪克雷迪则是把自己้的作品烧掉。爱因斯坦的相对论触犯了许多同时代的物理学家,许多年后还没有被完全接受,法国物理学家直到20世纪50年代才接受相对论

‘参见stephengush所着的“为什么相对论被接受了?”,physi9perspective,1999年第1้期。’

今天的实验性错误就是明天的新理论。如果你想做出伟大的新า成果,那就不能对常识与真理不相吻合之ใ处视而不见,反而应该特别ี注意才对。实际上,我觉得现丑陋的东西要比你想象出一个优美的东西更容易。大多数做出优美成果的人好像只是为ฦ了修正他们眼中ณ丑陋的东西。伟大成果的出现常常来源于某人看到เ一样东西后,心想我能做得比这更好。拜占庭帝国的《圣母像》最早是根据某个公认的模板画的,非常机械呆板。几百年后的14世纪,意大利画家乔托看到以后,深感不满,决定动手改进,他因此成为文艺复兴的先行者。哥白尼对地心说无法解释的事情深感困扰,他的同时代人都觉得这可以忍受,他却认为ฦ一定能ม找到一种更好的解释。

单单是无法容忍丑陋的东西还不够,只有对这个领ๆ域非常熟悉,你才可能现哪些地方แ可以动手改进。你必须锻炼自己้。只有在成为ฦ某个领域的专家之ใ后,你才会听到เ心里有一个细微的声音说:“这样解决太糟糕了!一定有更好的选择。”不要忽视这种声音,要培育它们。优秀作品的秘块就是:非常严å格的品味,再加上实现这种品味的能力。

1้0编程语言解析

所有机器都有一张操作命令清单,让你可以控制ๆ它。有时这个ฐ清单非常简短。电水壶就只允许两种操作:打开和关闭。cd播放器稍微复杂点,除了打开和关闭以外,还能ม调节音量、播放、暂停、快进、快退、随机播放等。