第8章

好设计是永不过时的设计。只要没有错误,每一个ฐ数学证明都是永不过时的。所以,数学家哈代才会说:“丑陋的数学在世界ศ上无法生存。”他的意思与飞机设计师凯利·约翰逊的观点是一样的:如果解决方法是丑陋的,那就肯定还有更好的解决方法,只是还没有现而已。

以永不过时作为目标也๣是一种避开时代风潮的影响的方法。“风潮”这个词,从字面上就可以看出,它就是一阵风似的,随着时间经常改变。如果一件东西长盛不衰,那么它的吸引力一定来自本身的魅力,而不是来自风潮的影响。

为什么不尝试一下?

‘ebຘ怀特eb9hite,18๖99—1985,美国当代着名作家、散文家,常年担任《纽约客》杂志的主要撰稿人,以优美的语体风格着称于世。——译者注’

流行的道德观念与其他普通的流行时尚的产生方แ式似乎ๆ是不一样的。一般来说,流行的时尚产生于某个ฐ有影响力的人物,他突奇想,接着其他人纷纷模仿。15世纪晚期,欧洲流行一种宽头鞋oad-ๅtoedshoe,原因是当时的法国皇帝查理八世长了六根脚趾。20่世纪20年代,着名电影明星frank9k改成一个印第安纳州工ื业小镇的名字gaທry,以便突出自己粗犷硬朗的铁汉形象,结果导致这个ฐ名字风靡一时,很多父母都为儿子取名为ฦgary。但是,流行的道德观念不是这样,它们往往不是偶然产生的,而是被刻意创造出来的。如果有些观点我们不能说出口,原因很可能是某些团体不允许我们说。

为了在全社ุ会制造出一个ฐ禁忌,负责实施的团体必定既不是特别强大也不是特别弱小。如果一个团体强大到无比自信,它根本不会在乎ๆ别人的抨击。美国人或者英国人对外国媒体的诋毁就毫不在意。但是,如果一个团体太弱小,就会无力推行禁忌。有一种行为怪癖叫做“嗜粪症”coprophila,它的患者人数以及影响势力眼下似乎就不太强大,无法把自己的观点推广给其他人。

电子技术的展,使得计算机日益成为人类社会必不可少的一部分。

想要把握这个时代,就必须理解计算机。理解计算机的关键,则是要理解计算机背后的人。表面上这是一个ฐ机器的时代,但是实际上机器的设计者决定了我们的时代。程序员的审美决定了你看到的软件界ศ面,程序员的爱好决定了你有什么样的软件可以使用。

但是,真正的问题在于,并行计算到เ底能达到เ哪个抽象层次?一百年后它就会影响到เ开应用软件的程序员吗?或者,它还只是编译器作者需要考虑的事情,在应用软件的代码中根本就无处寻觅?

一种可能是,大多数可以用到เ并行计算的场合,人们都会放弃使用并行计算。虽然我总的预测是未来的软件会挥霍掉大部ຖ分新增的硬件性能ม,但是并行计算是一个特例。我估计随着硬件性能得到เ惊人的提升,如果你明确地说想要并行计算,那么肯定可以得到它,但是通常情况下你不会用到เ它。这意味着,除了一些特殊的应用程序,一百年后的并行计算不会是那种大规模的并行计算maທssivepaທrallelism。我预料,对于普通程序员来说,一切更像对进程进行分叉,然后让多个进程在后台并行运行。

这是编程进行到เ很后期才要做的事情,属于对程序的优化,类似于你想开一种特定的数据结构来取代现有的数据结构。程序的第一个版本通常会忽略๓并行计算的各种好处,就好像编程开始时会忽略某种特定的数据结构给你带来的好处一样。

除了某些特定的应用软件,一百年后,并行计算不会很流行。如果应用软件真的大量使用并行计算,这就属于过早优化了。

一百年后会有多少种编程语言?从最近来看,出现了大量的新语言。硬件性能ม提高是一个原因,这就允许程序员根据使用目的在运行度和编程便利ำ性之间做出不同的取舍。如果这就是未来的趋势,那么一百年后强大的硬件只会使得语言数目变得更多。

伹是,另一方แ面,一百年后的常用语言可能只有很少几种。部分原因是基于我的乐观主义,我相信在未来,如果你的作品确实很出色,你可能ม选择的是一种开起来很方便的语言。使用这种语言写出来的软件第一版的运行度很慢,只有对编译器进行优化设置后运行度才会提升。既然我抱有这种乐观主ว义,那么เ我还要做一个预言。有些语言可以达到机器的最高效率,另一些语言的效率则慢到刚刚可以运行而已,两者之ใ间存在巨大的差ๆ距。我预ไ言一百年后,这段差距之ใ间的各个点上都会有对应的编程语言存在。

因为这段差距正在变得越来越大,所以性能分析器profiler将变得越来越重要。目前,性能分析并没有受到重视。许多人好像仍然相信,程序运行度提升的关键在于开出能够生成更快代码的编译器。代码效率与机器性能的差距正在不断加大,我们将会越来越清楚地看到เ,应用软件运行度提升的关键在于有一个好的性能分析器帮助指导程序开。

我说将来可能只有很少几种常用语言,但没有把用于特定领域的“小众语言”little浪uage算进去。我觉得,这些嵌入式语言的想法很不错,一定会蓬