第9章(1 / 11)

加入书签 本章报错

黑客与画家强烈推荐:

它会在未来实现吗?过去二十年,人们都在说并行计算马上就会来临ภ。但是,到目前为止,它对编程实践并没有太大影响。这是真的吗?芯片设计师已经不得不把它考虑在内,为ฦ多cpu计算机开系统软件的程序员也是如此。

顺便说一句,我不认为面向对象编程将来会消亡。我觉得,除了某些特定的领ๆ域,这种编程方法其实没有为优秀程序员带来很多好处,但是它对大公司有不可抗拒的吸引力。面向对象编程使得你有办法对面条式代码进行可持续性开。通过不断ษ地打补丁,它让你将软件一步步做大。大公司总是倾向于采用这样的方式开软件。我预ไ计一百年后也是如此。

‘为什么财富的分配问题引起这么多争论?部分原因是反对声最大的人当中,很多人都少有创造财富的经验:大学生、继承人、教授、政客、新闻记者。如果你在酒吧里听过大家议论体育赛事,你一定很熟ງ悉这种现象。

财富从何而来?人类创造出来的。回到农业时代,这个ฐ概念就更容易理解。那时大多数人都务农,许多东西都需要自己้生产出来。房屋、牲畜、谷仓等都是每个家庭自己生产出来的。这就很明显地说明,财富总量不是固定不变的,不像大饼那样会被分光。如果你想要更多的财富,自己生产就可以了。

一旦采用了这种新า模式,你就会知道布方式对软件开的影响有多么重大。桌面软件开之ใ中的许多棘手问题,都是源自于它的那种灾难性的布方แ式。

互联网软件带来的最大变化之一,就是软件布๧方式的改变。对于桌面软件来说,布新版本是一个很痛苦的过程,整个公司不得不使尽全力,满头大汗地挤出一大块巨型代码。从过程和结果上来看,无异于一次分娩。

把不同类型的工作捆绑在一起,可能ม是为了行政管理的方便,但是却容易引起混淆。这是我不喜欢“计算机科学”这个词的又一个原因。中间部分“计算机科学家”的工ื作,也许还可以被称为计算机的实验科学。但是,两ä端的数学家和黑客,并不是在做计算机的科学研究。

当然,“做什么”和“怎么做”不应该分得太开。如果你决定做一件事,却不知道怎么เ做,你就是在自找麻烦。但是,只是单纯地决定如何实现某种规格,那肯定不是黑客。黑客的最高境界是创造规格。虽然看起来,做到这一点的最好方法就是先做出一个样品把规格实现了。

随大流的代价

使用一种不强大的语言,你的损失有多大?实际上有一些现成的数据可以说明这个问题。

衡量语言的编程能ม力的最简单方法可能ม就是看代码数量。所谓高级语言,就是能ม够更强大抽象能力的语言,从某种意义上,就像能够更大的砖头,所以砌墙的时候用到的砖头数量就变少了。因此,语言的编程能力越强大,写出来的程序就越短当然不是指字符数量,而是指独立的语法单位。

强大的编程语言如何让你写出更短的程序?一个技巧就是在语言允许的前๩提下使用“自下而上”bottom-up的编程方法。你不是用基础语言ba色浪uage开应用程序,而是在基础语言之上先构建一种你自己的语言,然后再用后者开应用程序。这样写出来的代码会比直接用基础语言开出来的短得多。实际上,大多数压缩算法也๣是这样运作的。“自下而上”的编程往往也便于修改,因为ฦ许多时候你自己添加的中间层根本不需要变化,你只需要修改前๩端逻辑就可以了。

代码的数量很重要,因为开一个程序所耗费的时间主要取决于程序的长度。对于同一个ฐ软件,如果用一种语言写出来的代码比用另一种语言长三倍,这意味着你开它耗费的时间也会多三倍。而且即使多雇人手,也无助于缩短开时间,因为当团队规模过某个ฐ门槛时,再增加人手只会带来净损失。fredooks在他的名着《人月神话》中ณ描述了这种现象,我的所见所闻印证了他的说法。

如果使用lisp语言,程序能变得多短?以lisp和c的比较为ฦ例,我听到的大多数说法是cນ代码的长度是lisp的7倍到เ1้0่倍。但是最近,ne9๗arcນhitect杂志上有一篇介绍ita软件公司的文章

,里面说“1行lisp代码相当于2๐0่行c代码”,因为ฦ此文都是引用itaທ总裁的话,所以我想这个数字来自ita的编程实践。如果真是这样,那么我们可以相信这句话。ita的软件不仅使用lisp语言,还同时大量使用c和c++,所以这是他们的经验之ใ谈。

‘jenmuehlbaທuer,“or逼tz的新า突破”or逼tzreaທ9๗e9architect,2002๐年4月号。’

我认为,这种比例肯定不会是一个ฐ常数。如果你遇到更困难的问题,或者你雇到了更聪明的程序员,这个比例就会增大。一种出色的工具到了真正优秀的黑客手里,可以挥出更大的威แ力。

总之,根据上面的这个数字,如果你与ita竞争,而且你使用c语言开软件,那ว么ita的开度将比你快2๐0倍。如果你需要一年时间实现某个功能ม,它只需要不到三星期。反过来说,如果itaທ开某个新功能ม用了三个月,那么你需要五年才能ม做出来。

↑返回顶部↑

书页/目录

黑客与画家