第10章(1 / 1)

加入书签 本章报错

黑客与画家强烈推荐:

至于第二个问题๤,函数库的重要性也๣取决于你的应用程序。对于那些条件不苛刻๑的应用,有没有一个好的函数库比语言本身的能ม力更重要。那ว么到底应该怎么选择语言?是根据函数库,还是根据语言本身的能ม力?很难确切地找出一条清楚的规则,但是无论哪种情况,你都必须ี考虑到你开的应用程序的特点。如果你是一家软件公司,你开的程序打算拿到市๦场上销售,那ว么เ这个程序可能会耗费好几个ฐ优秀程序员至少6个ฐ月的时间。为一个ฐ这样规模的项ำ目选择编程语言,语言本身要有强大的编程能力可能就是最重要的考虑因素,比是否有方便的函数库更重要。第三个问题是你的经理担忧雇不到程序员,我认为这根本就是混淆视听。说实话,你究竟想雇用多少个黑客?到目前๩为止,大家公认少于10个人的团队最适合开软件。雇用这样规模的开团队,只要使用的不是无຀人知道的语言,应该都不会遇到很大麻烦。如果你无຀法找到1้0่个ฐlisp黑客,那么你可能选错了创น立软件公司的城市๦。

顺ิ便说一句,我不认为面向对象编程将来会消亡。我觉得,除了某些特定的领域,这种编程方法其实没有为优秀程序员带来很多好处,但是它对大公司有不可抗拒的吸引力。面向对象编程使得你有办法对面条式代码进行可持续性开。通过不断地打补丁,它让你将软件一步步做大。大公司总是倾向于采用这样的方式开软件。我预ไ计一百年后也是如此。

说来奇怪,如果你希๶望自己的作品对未来的人们有吸引力,方法之一就是让你的作品对上几代人有吸引力。我们很难猜想未来是什么เ样子,但是可以肯定,未来的人们不会在乎今天流行的风潮,这一点与上几代人是相同的。所以,如果你的作品对今天的人们以及1้500年的人都有吸引力,那ว么它极有可能也会吸引250่0年的人。

财富从何而来?人类创น造出来的。回到农业时代,这个概念就更容易理解。那ว时大多数人都务农,许多东西都需要自己้生产出来。房屋、牲畜ไ、谷仓等都是每个家庭自己生产出来的。这就很明显地说明,财富总量不是固定不变的,不像大饼那样会被分光。如果你想要更多的财富,自己้生产就可以了。

如果你是一个ฐ黑客,并且想自己้创น业,可能会有两ä件事情令你望而却步,不敢真正开始采取行动。一件是你不懂ฦ得管理企业,另一件是你害怕竞争。可是实际上,这两ä件事都是没有通电å的电å篱笆。

互联网软件带来的最大变化之一,就是软件布方式的改变。对于桌面软件来说,布新版本是一个很痛苦的过程,整个ฐ公司不得不使尽全力,满头大汗地挤出一大块巨เ型代码。从过程和结果上来看,无异于一次分娩ກ。

我猜想,道德禁忌的最大制造者是那些权力斗争中ณ略占上风的一方。你会现,这一方有实力推行禁忌,同时又软弱到เ需要禁忌保护自己的利益。

当然,“做什么”和“怎么做”不应该分得太开。如果你决定做一件事,却不知道怎么做,你就是在自找麻烦。但是,只是单纯地决定如何实现某种规格,那ว肯定不是黑客。黑客的最高境界ศ是创造规格。虽然看起来,做到这一点的最好方法就是先做出一个样品把规格实现了。

我们的时代是程序员主ว导的时代,而伟大的程序员就是黑客。

‘“弱即是强"ิ指的是一种软件传播的模式,由摸nlisp专家理查德·加布里埃尔richardpgaiel于1991้年在lisp:goodne9s,bຘadne9๗s,ho9to9in逼gdreaທmsongs9ibຘhtml一文中先提出。它的含义แ非常广泛,涉แ及软件设计思想的各个ฐ方面,其中ณ的一个重要结论就是软件功能的增加并不必然带来质量的提高。有时候,更少的功能“弱”反而是更好的选择“强”,因为ฦ这会使得软件的可用性提高。相比那些体积庞大、功能全面、较难上手的软件,一种功能有限但易于使用的软件可能ม对用户有更大的吸引力。加布里埃尔本人经常举unix和9๗ix和c在设计上考虑了实际环境,放弃了一些功能ม,但是保证了简单性,这使得它们最终在竞争中胜出,成为主流操作系统和编程语言。——译者注’

与之ใ对照,还有另一种软件设计思想,也๣许可以被称为ฦ“万福玛丽亚”模式。它不要求尽快拿出原型,然后再逐步优化,它的观点是你应该等到完整的成品出来以后再一下子隆重地推向市场,就像圣母玛丽ษ亚降临一样,哪怕整个过程漫长得像橄揽球运动员长途奔袭、达阵得分也๣没有关系。在互联网泡沫时期,无຀数创น业公司因为相信了这种模式而自毁前๩程。我还没听说过有人采用这种模式而获得成功。

软件领ๆ域以外的人可能没听过“弱即是强”,所以意识不到这种模式在艺术领域普遍存在。以绘画ฑ为例,文艺复兴时期就有人现了这一点。如今,几乎所有的美术老师都会告诉你准确画ฑ出一个事物的方แ法,不是沿着轮廓慢慢一个ฐ部ຖ分、一个ฐ部ຖ分地把它画ฑ出来,因为这样的话各个部ຖ分的错误会累็积起来,最终导致整幅画失真。你真正应该采用的方法是快地用几根线画出一个大致准确的轮廓,然后再逐步地加工草稿。

在大多数艺术领域,原型使用的材料é与成品的材料é一般来说是不一样的。印刷็活字先画在纸上,然后才做成铅字。雕塑先用石蜡创作,然后才用青铜浇铸。地毯图案先用墨水画出纸型,然后才织成地毯。建筑物先做出木模型,然后才做成石头建筑。

为什么15世纪油画ฑ次亮相会引起轰动并很快流行起来?原因就是油彩使得画家可以在原型上直接画出最后的样子。你可以按照自己的想法画ฑ出初稿,但是它并不对你构成限制ๆ。接下来你可以逐步加上细节,甚至对初稿做出重大修改,直到最后完成。

软件开也可以这样做。原型prototype并不只是模型摸del,不等于将来一定要另起炉灶,你完全能够在原型的基础上直接做出最后的成品。我认为,只要有可能,你就应该这样做。这样的方式使得你可以利ำ用在开过程中一路产生的新想法。不过更重要的是,这样做有助于鼓舞士气。

士气是设计的关键因素า。令我吃惊的是,大家很少提到这一点。我的一位美术启蒙老师告诉我:如果你觉得画某样东西很乏味,那ว么你画ฑ出来的东西就会真的很乏味。比如,假设你必须ี画一幢建筑物,你决定从每一块砖头开始画ฑ起。你觉得自己可以坚持下去,但是画ฑ到一半的时候突然感到很厌倦,于是你就不再认真观察每块砖头并画ฑ出它们各自不同的特点,而是以一种机械重复的方แ式草草地把砖头画ฑ完了事。这样一来,你的作品效果就很差ๆ,甚至还不如一开始就不采用写实手法,只是若隐若现地暗示砖头的存在。

先做出原型,再逐步加工ื做出成品,这种方แ式有利于鼓舞士气,因为ฦ它使得你随时都可以看到工作的成效。开软件的时候,我有一条规则:任何时候,代码都必须能ม够运行。如果你正在写的代码一个ฐ小时之后就可以看到运行结果,这好比让你看到不远处就是唾手可得的奖励,你因此会受到激励和鼓舞。其他艺术领域也๣是如此,尤其是油画ฑ。大多数画家都是先画一个草图,然后再逐步加工ื。如果你采用这种方式,那么เ从理论上说,你每天收工ื的时候都可以看到整体的效果,不会对最后的成品一点感觉都没有。跟你说实话吧,画家之ใ间甚至流传着一句谚语:“画ฑ作永远没有完工ื的一天,你只是不再画下去而已。”这种情况对于第一线的程序员真是再熟悉不过了。

士气也可以解释为什么很难为ฦ低端用户设计出优秀产品。因为优秀设计的前提是你自己必须喜欢这种产品,否则ท你不可能对设计有兴趣,更不要说士气高昂了。为ฦ了把产品设计好,你必须对自己说:“哇,这个ฐ产品太棒了,我一定要设计好!”而不是心想:“这种垃圾玩意,只有傻瓜才会喜欢,随便设计一下就行了。”

设计意味着做出符合人类特点和需要的产品。但是,“人类”不仅包括用户,还包括设计师,所以设计工ื作本身也必须符合设计师的特点和需要。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━⌒

↑返回顶部↑

书页/目录

黑客与画家