第8章

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

事实上,财富与金钱是两个概ฐ念。金钱只是用来交易财富的一种手段,财富才是有价值的东西,我们购买的商品和服务都属于财富。你到เ海外旅行时,不用看当地人的银行账户就会知道你来到的是富国还是穷国。你只要看看他们的财富就行了:建筑、街道、服装、健康状况等。

先,管理企业其实很简单,只要记住两点就可以了:做出用户喜欢的产品,保证开支小于收入。只要做到这两ä点,你就会过大多数创业公司。随着事业的展,你自己้就能琢磨出来其他的诀窍。

软件的布

大多数的斗争,不管它们实际上争的是什么,都会以思想斗争的形式表现出来。16世纪的英国宗教改革englishreformaທtion本质上是为了争夺权力和财富,但是却表现为英国人要求自主的精神与罗马教廷腐化的控制之ใ间的斗争。思想斗争更容易争取支持者。不管哪一方แ获胜,他们所代表的思想也๣就被认为获得了胜利,仿佛上帝通过选择胜利ำ的一方แ表示了自己้的倾向。

‘在英语中,“建筑师”architect和“架构师”arcນhitect是同一个词,所以这里用的是双关语,意思是优秀程序员不仅负责建造,还负责架构。后一句中的“建筑学”aທrchitecນture也是这种双关用法,同时指“架构学”aທrchitecture。一译者注’

本书就是帮助你了解黑客、从而理解这个时代的一把钥匙。

但是,真正的问题๤在于,并行计算到底能ม达到เ哪个ฐ抽象层次?一百年后它就会影响到开应用软件的程序员吗?或者,它还只是编译器作者需要考虑的事情,在应用软件的代码中根本就无处寻觅?

一种可能是,大多数可以用到并行计算的场合,人们都会放弃使用并行计算。虽然我总的预ไ测是未来的软件会挥霍掉大部分新增的硬件性能ม,但是并行计算是一个特例。我估计随着硬件性能得到惊人的提升,如果你明确地说想要并行计算,那ว么肯定可以得到它,但是通常情况下你不会用到它。这意味着,除了一些特殊的应用程序,一百年后的并行计算不会是那ว种大规模的并行计算maທssiveparallelism。我预料,对于普通程序员来说,一切更像对进程进行分叉,然后让多个进程在后台并行运行。

这是编程进行到很后期才要做的事情,属于对程序的优化,类似于你想开一种特定的数据结构来取代现有的数据结构。程序的第一个版本通常会忽略并行计算的各种好处,就好像编程开始时会忽略某种特定的数据结构给你带来的好处一样。

除了某些特定的应用软件,一百年后,并行计算不会很流行。如果应用软件真的大量使用并行计算,这就属于过早优化了。

一百年后会有多少种编程语言?从最近来看,出现了大量的新语言。硬件性能提高是一个原因,这就允许程序员根据使用目的在运行度和编程便利性之间做出不同的取舍。如果这就是未来的趋势,那么一百年后强大的硬件只会使得语言数目变得更多。

伹是,另一方แ面,一百年后的常用语言可能只有很少几种。部分原因是基于我的乐่观主义แ,我相信在未来,如果你的作品确实很出色,你可能选择的是一种开起来很方便的语言。使用这种语言写出来的软件第一版的运行度很慢,只有对编译器进行优化设置后运行度才会提升。既然我抱有这种乐观主义,那么我还要做一个ฐ预ไ言。有些语言可以达到机器的最高效率,另一些语言的效率则ท慢到刚刚可以运行而已,两ä者之间存在巨เ大的差距。我预言一百年后,这段差距之间的各个点上都会有对应的编程语言存在。

因为这段差距正在变得越来越大,所以性能分析器profiler将变得越来越重要。目前,性能分析并没有受到เ重视。许多人好像仍然相信,程序运行度提升的关键在于开出能ม够生成更快代码的编译器。代码效率与机器性能ม的差ๆ距正在不断加大,我们将会越来越清楚地看到,应用软件运行度提升的关键在于有一个ฐ好的性能分析器帮助指导程序开。

我说将来可能ม只有很少几种常用语言,但没有把用于特定领ๆ域的“小众语言”little浪uage算进去。我觉得,这些嵌入式语言的想法很不错,一定会蓬ศ勃展。但是我判断这些“小众语言”会被设计成相当薄的一层,使得用户可以一眼看出在底下作为基础的通用型语言,这样就减少了学习时间,降低了使用成本。

谁来设计这些未来的语言?过去10年最激动人心的趋势之ใ一就是开源语言的崛起,比如perl、python和rubຘy。语言设计已经被黑客接管。到目前๩为止这样到底是好是坏还看不清楚,但是展势头令人鼓舞。比如,