『读书笔记』黑客与画家

前言

朋友推荐了我这本书,我就仔细地读了。这本书虽然看似堆满了零散的观点,但这些观点发人深省,有些又很新奇,有些又充满经验。大致讲了黑客的特点,书呆子气等,与画家类似的创新设计模式,开发互联网软件的过程与经验,财富获得,黑客选择的语言,软件的设计哲学,还有各种夸 lisp(我也想学 lisp 了》_<)。观点比较杂,我就整理我认同的一些观点与经验吧

作者介绍

Paul Graham,他开发了第一个互联网应用软件 Viaweb,该程序被雅虎收购,成为 Yahoo!Store。他创办了创业孵化公司 Y conbinator。


观点与经验

1. 黑客是怎样的

黑客充满书呆子气,不愿参与社交。这是因为他们的心思都放在要解决的问题上了。在学生时代,就会显得不受欢迎。

黑客的学习进步可借鉴其他行业,比如画家,完成一个作品是要不断修改的,不要过早优化。作为创作者,要从原创出发,这里是对比科研人员是在已有成果上做改进,而不是原创。在技术上,应多从优秀代码学习。对待编程要有一丝不苟的认真态度。

2. 财富

财富不等于金钱。获得财富的方法也有很多,但是最好的,最有效的是创造财富 — 创业或是加入创业公司。在创业公司的效率可以是大公司的数十倍(估计,数值不重要),(沟通需要成本),虽然在创业公司创造的财富是数十倍,总体回报也是差不多,但是对于个体是随机的,回报的中位数为 0。人与人创造财富的能力有差距,从而回报也有差距(若用金钱来衡量)比如一般 CEO 是常人的 100 倍,职业篮球运动员是常人的 128 倍…

技术的发展,是否加剧贫富分化? 在收入上是拉大了差距,但是在其他方面可以说是减小了差距,比如 pc,手机人人都可以有,在以前是不可想象的。

3. 编程与软件开发

编程主要在调试,所得有好的 debug 能力。编程的特点不是先把全部思路都想好了再写,可以便携程序边理解,其中可能有其他发现。由于这个特点,程序语言最好支持动态类型,以方便扩展。

人人都想变得聪明,或者让自己,别人觉得聪明。数学,是聪明的一种表现。所以,在编程时,存在诱惑:向数学方法上靠近,这时应该提醒自己:什么是你认为重要的东西。

编程语言,是程序员的思考模式。要选择好的编程语言,语言是有强弱之分的。只是大多数人满足现状:我目前使用的语言能解决问题,某些语言不过是有一些奇怪的特性罢了。这就是思维被语言同化。使用某种语言能做到的事是有极限的。虽然在图灵完备性上程序可以由任何一种语言写,但是代码长度,开发速度,工作量是不同的。他就设想了 100 年后 的编程语言:内核小(如同数学上的公理),eg 尽量少的基础类型,虽然可能速度较慢,但他认为硬件的提升可以忽略这个差异。有强大的函数库,简洁很重要

程序写出来是给人看的,附带能在机器上运行。

代码尽量要简洁,冗余的代码会产生更多的冗余的代码。对于软件开发,在竞争方向上,选择新兴领域会更有市场。如果能发布,就发布,即使还有 bug。开发的技术越困难,对手越难模仿。这就是‘进入壁垒’。提高进入壁垒的方法可以是申请专业,但是打官司是打不过大公司的。所以小的创业公司还是要让自己的产品不能被轻易复制。提高软件可靠性的关键在于开发时全神贯注,而不是降低速度。

4. 设计

好的设计以永不过时为目标。有以下特点。

  • 趣味
  • 艰苦
  • 模仿大自然
  • 对称:重复性;递归性
  • 再设计:反复修改,不断完善
  • 启发性:在软件领域,是指一个产品要有基础夫人模块,供用户组合,就像搭积木。在科研领域,可以看一篇文章的引用送送次数。

5. 不能说的话

他将不能说的话分成几类,以启发我们去寻找。不能说的话是对谁不能说,对谁可以说?这样刻意去做也是有意的。优秀作品往往来自其他人忽视的想法。而且自由思考比畅所欲言更重要。

  • 真话。想想其他人说了,而陷入麻烦?
  • 异端想法。那些我们未经大脑审查而冒出的想法,才是我们的真实想法,让它出现,来好好剖析自己。
  • 时空差异。时过境迁,地域文化差异。
  • 口号禁令。想想一本正经的卫道者在捍卫着什么。

在别人想试探你的立场,观点时,要么保持沉默,要么注意分寸地回答。

“别想在我身上做石蕊试验’

文章目录
  1. 1. 前言
    1. 1.1.
  2. 2. 作者介绍
  3. 3. 观点与经验
    1. 3.1. 1. 黑客是怎样的
    2. 3.2. 2. 财富
    3. 3.3. 3. 编程与软件开发
    4. 3.4. 4. 设计
    5. 3.5. 5. 不能说的话