书 · 2004-05 · 保罗·格雷厄姆(Paul Graham)

《黑客与画家》

计算机与 AI书单第 11 名

一句话结论

格雷厄姆认为,写程序的人本质上是和画家一样的“创造者”,好软件靠动手、反复修改和好品味做出来,而创业是让这类人把创造的价值变成财富的最好办法。

值不值得读完整本?

值得读,但不必按顺序读完。这是一本由 15 篇独立随笔组成的文集,前半部分谈人和社会,后半部分偏编程语言。第 2、6、7、12 章是精华,其余按兴趣挑着读就够了。

  • 先读第 2 章《黑客与画家》,它定下全书的基调,也是书名的出处。
  • 接着读第 6 章《怎样创造财富》和第 7 章《注意差距》,这两篇讲创业和贫富差距,是全书最有影响也最有争议的部分。
  • 第 12 章《打败平均水平》讲他用 Lisp 做 Viaweb 的经历,是全书最具体的案例。
  • 第 1 章《书呆子为何不受欢迎》和第 3 章《你不能说的话》不需要编程知识,可以单独当随笔读。
  • 第 8 章《反垃圾邮件计划》讲的是 2002 年前后的技术,可以当历史材料略读。第 10、11、13、14 章谈编程语言,没有编程基础的读者可以快速翻过。
  • 这是一本观点集,不是论文集。作者常凭个人经历下判断,读的时候要自己多问一句“这个结论的证据够不够”。

核心观点

1. 黑客是创造者,和画家最像,不是科学家或工程师

格雷厄姆认为,写程序更接近绘画和写作这类“做东西”的工作,而不是做科学研究或按图纸施工。好软件靠边做边改磨出来,不是事先规划出来的。

为什么:他的推理是这样的:“计算机科学”这个名字把几种不同的工作捆在了一起,其中真正写软件的人,目标是做出好东西,而不是发现新定律。做东西的人靠动手学习,画家靠临摹和画草稿,黑客靠写代码和读别人的代码。程序和画一样,开工前很难完全想清楚,只能一边做一边发现问题,所以他主张语言要灵活,方便随时改动和试验,而不是把一切都事先固定死。因此“好的设计往往是重新设计出来的”,第一版错了不丢人,不愿意改才是问题。品味也不是纯主观的,简洁、经得起时间、解决真问题这些标准是可以学会的。

2. 创业是创造财富最有效的方式:小团队让贡献可衡量、能放大

财富不等于金钱,而是人们真正想要的东西。要想靠自己的能力致富,需要“可衡量”和“杠杆”这两个条件,创业公司恰好能同时提供。

为什么:他先区分财富和金钱:金钱只是交换的工具,真正的财富是食物、住所、技术这些人们需要的东西。在大公司里,一个人的贡献被许多人的产出平均掉了,你做得再好也很难被单独衡量,回报也就和你的贡献脱钩。创业公司很小,每个人做了什么很容易看清楚,决策的结果也会被放大,这就是“衡量”和“杠杆”。能力强的人在这样的环境里可以拿到与贡献更匹配的回报,所以聪明又愿意拼的人会流向创业公司。随着技术进步,个人能创造的价值还在上升,创业也就越来越可行。

3. 贫富差距不是问题本身,强行压平会削弱财富创造

格雷厄姆认为,收入差距大往往只是有人创造了很多价值的结果。真正该问的是财富是不是创造出来的,而不是差距有多大。

为什么:他认为很多人觉得差距不公平,有几个原因:一是小时候形成的“爸爸模型”,以为财富是由权威分配的,而不是被创造出来的;二是历史上大多数财富确实来自掠夺,所以人们习惯性怀疑富人;三是技术放大了个体差异,极个别人能创造出极大的价值。就像一支篮球队不会拿一名顶尖球员去换 100 个普通人。如果为了缩小差距而不让人保留自己创造的财富,创造财富的动力就会消失,所以财富创造会像“风扇的噪音”一样时有时无。他还指出技术让富人和穷人的物质生活差别变小了,差距主要体现在数字上。

4. 编程语言的能力有高有低,强大的语言本身就是竞争优势

不同语言的表达能力差别很大。用更强的语言做事的团队,能在同样时间里做出别人做不出的东西。

为什么:他的推理链条是:语言越强,表达同一件事所需的代码就越少,开发就越快,改起来也越容易。创业公司比的就是速度,所以语言选择会直接转化为竞争力。要看清这一点却很难,这就是他提出的“Blub 悖论”:一个只会 Blub 语言的程序员,看比自己弱的语言会觉得“缺东西”,看比自己强的语言却只觉得“怪”,因为他不理解那些功能有什么用。所以用主流语言的人往往意识不到自己落后了,这个信息差就成了先用强语言的人的机会。他认为 Lisp 的宏是其中最大的优势之一。

5. 书呆子不受欢迎,是因为他们“有别的事要想”

他认为书呆子在学校受排挤,主要不是因为聪明,而是因为他们不愿把全部精力花在经营人气上。

为什么:他的推理是:在美国中学里,受欢迎本身就像一份全职工作,需要持续的、常常是无意识的投入。书呆子的注意力放在学习和自己的兴趣上,自然在这场竞争里落后。更深一层的原因是,学校本质上只是把青少年集中看管起来,让成年人腾出手去做事,学生没有真实的任务,于是只能用人缘高低来排序,这就造成了残酷又没有意义的等级。这套体系是人为的、暂时的,进入成人世界后,会做事比会讨好人重要得多,所以书呆子在学校受的苦是学校环境造成的,不是他们本身有问题。

6. 每个时代都有“不能说的话”,要有意识地检查自己的盲区

格雷厄姆认为,每个时代的社会都有一些无法公开质疑的观点,当时的人察觉不到,后人回看却觉得荒谬。要想想得清楚,就得主动找这些盲区。

为什么:他把道德观念比作服装潮流:身处其中的人觉得它们是自然的、理所当然的,其实带有很强的任意性。但违反禁忌的代价比穿错衣服大得多,会被解雇、排斥,甚至更严重,所以大多数人宁愿不想,也不开口。他据此提出“从众测试”:如果你的所有观点都和当下主流完全一致,很可能只是照单全收。找禁忌的办法包括留意哪些想法会让人生气、哪些标签被用来堵住讨论、别的时代和地方对同一件事怎么看。但他同时建议,想法可以私下保持独立,公开场合则要谨慎。

反对意见

编程本质上是数学,不是画画(迪科斯彻)

迪科斯彻在 1988 年的《论真正教授计算机科学的残酷性》(EWD 1036)中主张,程序应被当作形式化的数学对象来推理,并告诫人们不要用类比、拟人化的说法理解计算机。这与“把写程序当画画”的类比正好相反:他认为靠感觉边画边改不可靠,正确性要靠推导来保证。

没有一种技术能单独带来数量级的提升(弗雷德·布鲁克斯)

布鲁克斯在《没有银弹》中认为,软件的困难主要来自问题本身的复杂(本质复杂度),而不是工具的缺陷(偶然复杂度)。没有任何单独的技术或管理方法能带来一个数量级的提升。这对格雷厄姆“强语言带来决定性优势”的说法是一个有力的质疑:语言再强,也只能削减偶然复杂度。

收入差距来自资本回报高于增长,不是单纯的创造(托马斯·皮凯蒂)

皮凯蒂在《21 世纪资本论》中的核心论点是:资本回报率常常高于经济增长率,财富因此会向少数人集中,而且主要靠继承积累。他主张累进税和全球财富税。皮凯蒂并没有直接回应格雷厄姆,但他的论证与“差距是创造的副产品”这个看法相反。

书中的推理过度概括、有自相矛盾(亚伦·克劳塞特,书评)

克劳塞特在 2005 年的书评中批评:书里暗示没钱的人是“选择了不那么努力”;语言流行程度被当作能力的证明,但 Lisp 不流行时却归因于“政治和尖头发的中层经理”;学者设计的语言被批评,除非是 Lisp 这样的好语言。他认为这种写法“诱人地简化”,隐藏了没说出口的假设。

许多判断缺乏证据,技术章节对普通读者太密(戴维·伊夫斯,书评)

伊夫斯在 2007 年的书评中指出,书中有些大胆断言缺少支撑,例如物理学家完成文学博士比文学教授完成物理博士更容易这类说法;他也觉得最后几章对编程语言谈得太深,会让一般读者失去兴趣。

相关推荐

导读由 AI 根据公开资料整理,没有读取原书全文,一切以原著为准。导读 Primer 首页