《黑客与画家》读摘
《黑客与画家》是“硅谷创业之父”Paul Graham的文集,作者是计算机“黑客”兼“画家”兼“作家”,同时也是世界首个互联网应用程序viaweb(已被Yahoo收购)开发创始人之一(另一个是世界首个蠕虫——“莫里斯蠕虫”的作者罗伯特·莫里斯)。
正如本书的封底所附的书评中苹果机发明人之一Andy Hertzfeld所说:
“他的文章清晰易懂、幽默生动,从艺术、科学、商业互相交织的角度谈论如何写出优秀的代码,充满了与众不同的看法和切实可行的高见。你甚至可能因为看了他的文章而改用Lisp编程哦!”
的确,读完这位本书的确对我个人的一些想法和思维产生了不少影响和改变。比如它改变了我对“黑客”这个概念的一般性的理解;它向我展示了Lisp的魅力,并令我有学习Lisp的冲动;它以一种别样的视角洞察了贫富分化,令我不得不产生心理上的认同;它还教会我什么才是好的设计等等。
有时候读到该书的一些文字的时候,不禁有种令人拍案的冲动。所以我就把这些“激动”的文字摘抄下来与大家分享,希望他人也能从这些文字中获得共鸣和新的认知。当然,如果你对此很感兴趣,不妨读一读这本有趣的书。
“书上说,调试是最后的步骤,用来纠正打字的错误和疏忽。可是的我的工作方法看上去却像编程就是在调试。”
“如果我那时看到其他创作领域,比如绘画或者建筑,我就会想到,自己的方法其实还有一个正式的名称:打草稿。”
相信不少具有长期编程经验的人对此言论必能达成共识。
“黑客的出发点是原创,最终得到一个结果;而科学家的出发点是别人的优美结果,最终得到原创性。”
黑客一词在作者书中的概念是真正意义上优秀的计算机程序员,他们有着对计算机很强的操纵能力。虽然目前黑客一词的概念有所“偏差”,但是我们对他整体上的理解应该还是相似的——他们都是计算机“高手”。作者这么说是为了强调黑客通过实践学习编程,总是做创新性的工作;而科学家通过实验和解题来学习,总是在别人的基础上进行工作。
“黑客就像画家,工作起来是有心理周期的。有时候,你有了一个令人兴奋的新项目,你会愿意为它一天工作16个小时。等过了这一阵,你又会觉得百无聊赖,对所有事情都提不起兴趣。”
作为“程序员”,是不是有同感呢?!反正我觉得就像在说我自己……
“消灭bug的过程就像解一道数学题,已知许许多多的约束条件,你只要根据条件对方程求解就可以了。”
个人觉得用这种形式描述debug的过程可能再合适不过了,debug时我们总是那么小心翼翼,生怕一不小心“出了轨”!
“经济学里有一条拉弗曲线,认为随着税率的上升,税收收入会先增加后减少。我认为政府的力量也是如此,随着对公民自由的限制不断上升,政府的力量会先增加后减小。”
无论是经济还是政治,还是其他方面,这个结论好像很有普适性。不过这也告诫我们,做出任何决定之前不能只看到眼前的利益,要有长远的发展观。就像算法设计中的“局部最优”和“全局最优”的概念似的,有时候“局部最优会导致全局最优”,但是我们的最终目的是获得全局最优的结果。
“即使你没有钱,你也能拥有财富。”
“许多人从小就认定世界上的财富总额是固定不变的,这样想的人数量多得惊人。”
“虽然在某些特定的情况下(比如某个家庭当月的收入),你能用来与他人交换的金钱数量是固定不变的,但是大多数情况下,世界上可供交换的财富不是一个恒定不变的量。人类历史上的财富一直在不停的增长和毁灭(总体上看是净增长)。”
好吧,我承认一向对经济知识不感冒的我一直都有“一些人赚了钱,应该会有一些人变穷了。”这样的愚蠢常识。原来人们不只是在分蛋糕,同时也在做蛋糕!作者打了个比方说“你紧了一下旧汽车上松下的螺丝,其实就是在创造财富”,对此我比较认可。
“我们大多数人都在为他人创造财富,然后用创造出来的财富交换金钱,再用金钱交换我们需要的另一种财富。”
按照作者的看法,财富和金钱根本不是一码事。我们经常读到类似的话:“饿了,米饭和馒头就是财富;渴了,水就是财富。而把你丢到南极,送你一堆金子可能都没有什么价值。”这应该是对金钱和财富区别的最好诠释吧。
总结的看,财富是根据需求产生的,而金钱仅仅是财富的交换物而已。从这里我想很多人都应该明白一个道理:如果你想挣钱,首先要明白的可能不是用什么方法和手段挣更多的钞票,而是要明白自己能有多少财富去可以拿去交换你想得到的金钱。如果一个人不能为他人带来财富或者满足需求,别人如何付给他“薪水”呢?同样的道理,即使送给一个人一座金山,如果他只会挥霍和堕落,那么他到最后剩下的也只是一个没有灵魂的躯壳而已。
“由于每个人创造财富的能力和欲望强烈程度不一样,所以每个人创造财富的数量很不均等。”
“你经常可以听到有人批评某种政策会加剧贫富分化。隐藏的意思就是,贫富分化的加剧一定是坏事,这好像已经成了公理。收入差距的扩大可能确实不好,可是我并不觉得这可以被堪称公理。”
“我提出一种相反的观点:现代社会的收入差距扩大是一种健康的信号”
作者的观点和言论的确“振聋发聩”,但是我并没觉得有何不妥,反倒觉得很有道理。作者举例说,按照古时财富的流动情况看,财富的分配属于“偷窃”行为。比如统治阶级的剥削、贪官污吏中饱私囊、战争的强权掠夺等等,这些和“偷窃”没什么两样,只不过显得更光明正大了。因此财富在旧时可能就和不好的词汇挂上钩,比如欺诈、掠夺、偷窃、垄断、遗产等等。很明显,这种财富的分配方式是不健康的。古时生产力的低下决定着人们不具有“瞬间致富”的可能,而分配的不平均必然会激发社会矛盾爆发战争,而战争的直接结果就是释放贫富差距的压力,表现形式就是抢夺,也就使得一部分人瞬间致富了。
但是如今的社会生产力高度发达,瞬间致富的例子数不胜数。人们可以通过其他更合理的手段获得财富,比如创业。而这样有能力的人便创造更多的财富,虽然看似拉大的贫富差距,但是却反过来提高的社会的生产力。如果说这种情况有问题而强制分配财富的话,那么谁还会去主动创业制造财富呢?
因此,现代的财富创造方式和过去已经明显不同。过去的野蛮式掠夺改变了财富的分配,实际上并未让财富增加(蛋糕变大),甚至由于战争的损害降低了社会的财富总和!而如今通过创新手段提高社会的财富总和,完全是正确健康的信号,对此我们应该完全支持!
“优秀设计的原则是许多学科的共同原则,一再反复的出现。
好设计是简单的设计。
好设计是永不过时的设计。
好设计是解决主要问题的设计。
好设计是启发性的设计。
好设计通常是有点趣味性的设计。
好设计是艰苦的设计。
好设计是看似容易的设计。
好设计是对称的设计。
好设计是模仿大自然的设计。
好设计是一种再设计。
好设计是能够复制的设计。
好设计常常是奇特的设计。
好设计是成批出现的。
好设计常常是大胆的设计。”
“如果你觉得自己在为傻瓜设计产品,那么很可能不仅无法设计出优秀的产品,而且连傻瓜也不喜欢你的设计。”
思考什么是好的设计以及如何设计,或许对我们以后的工作和思维都会受益匪浅。
“无论何时,选择进化的主干可能都是最佳方案。要是你不幸选错了,变成了一个尼安德特人,那就太糟了。你的对手克鲁马努人时不时就回来攻打你,把你的食物全部偷走。
这就是我想找出一百年后的编程语言的原因,我不愿意押错赌注。”
“我已经预测了,一旦未来硬件的性能大幅度提高将发生什么事。新增加的运算能力都会被糟蹋掉。”
作者对计算机行业的感知能力的确令人佩服。他在很早就预测如果苹果把浏览器弄到iPod上,微软就麻烦大了。历史与预测是那么的吻合!
“如果你想当一个黑客,应该学习哪些语言。他建议从Python和Java入手,因为他们比较容易学。相当高级一点的黑客,还应该学习C和Perl。前者用来对付Unix系统,后者用来系统管理和开发CGI脚本。最后,真正非常严肃的把黑客作为人生目标的人,应该考虑学习Lisp。”
是不是忽然发现有些语言应该好好学一学的必要了?
“Lisp语言诞生的时候就包含了9种新思想。其中一些我们今天已经习以为常,另一些刚刚在其他高级语言中出现,至今还有2种是Lisp独有的。按照被大众接受的程度,这9种思想依次排列如下:
(1) 条件结构。
(2) 函数也是一种数据类型。
(3) 递归。
(4) 变量的动态类型。
(5) 垃圾回收机制。
(6) 程序由表达式组成。
(7) 符号类型。
(8) 代码使用符号和常量组成的树形表示法。
(9) 无论什么时候,整个语言都是可用的。”
由此可以看出作者对Lisp的无比推崇和热爱,对于这样的客观性描述,你是否有一种想学习Lisp的热情了呢?反正我是有这种冲动的,也难怪网上说Lisp语言的学习热就是人们在读了《黑客与画家》之后产生的呢!