读《黑客与画家》
作者:郑凯
其实《黑客与画家》是提前预订的,所以一发售就看了,但现在才动手写读后感,实在是因为回味无穷。
这本随笔集包含了很多观点,对我而言最重要那部分,就是押题的那段:真正的程序员跟画家是如此相似。其实我以前也有类似的模糊印象,但一直没法说清楚:
额外的一个话题,我发现很多人都在 Google Profile 上都写着职业 Engineer。我总觉得,写 Engineer 和写 Programmer 的,代表着两种完全不同的态度。
作者 Paul Graham 一直强调快速创造原型,顺便狂热鼓吹 Lisp,先说我理解的第一层意思,语言对于开发效率的影响。
虽然大家所用的语言都是图灵完备的,且不说能不能把函数作为返回值这类高级货,单看拿 Java 的 syntax 作为靶子,确实惨不忍睹,明明都表达同一个意思,却要多写那么多的冗余关键字,这里要强调一个概念,香农的信息熵,以前我能明白这么个概念但一直不知道是什么词(最早想到这个问题是用来解释为什么 mp3 和 zip 是不同的压缩方式,但 mp3 已经无法被 zip 进一步压缩了
跟 Java 的 syntax 一样傻的,还有 DOS 换行符,虽然这可能是历史原因,干出这事的人可能有理由不被责备,但 \r\n
换行符确实很傻,就像没人会在写字的时候,把“句号”写成“逗号句号;\n
跟 \r\n
差不多傻,所以所有现代语言(就是除了 Java 和 PHP 之外我们常见到的)都把分号去掉了
第二层意思,语言的适用性
其实 Paul Graham 已经在一个不起眼的注释里,借其搭档之口间接的表达了这个意思:智力是分阶级的,而不同语言归属于不同阶级(这个理念属于书中《不能说的话》里说指的那类东西)
(中文版 P173 注释)
莫里斯觉得不用这么保密,因为即使竞争对手知道我们使用 Lisp 语言,对他们也不会有帮助: “如果他们真的聪明,早就已经在用 Lisp 编程了”
对于 Viaweb 为什么是用 Lisp 写的,我只能这么解释这个问题:掌握 Lisp 属于智力上的挑战,倚靠 Lisp 的特性来快速开发产品是极少数高智商的人能做到的事情,Lisp 的始创者将其作为数学表达方式,而从来没想过用 Lisp 做这么具体的产品。所以书中引用别人的话,建议黑客了解 Lisp,哪怕未必在实际工作中用到它,其实和王建硕对微积分的看法是一样的(人的脑子思考问题,除非经过特别的训练(微积分是训练的一种
PHP 能足够流行,主要原因之一是这语言下贱,我想如果所有语言都能测一下开发者的平均智商的话,应该 PHP 的开发者的平均智商是最低的。但这话绝不是冒犯任何人,想承认他流行就必须承认这是因为连智商 90 的人都敢尝试给 PHP 写 Framework 才能导致这么流行,这是一个事实,跟任何一个具体的使用者是谁、怎么用无关。我在开始了解其他语言后,才知道这么个事实:其他几乎所有语言的基础库,都是用同样的语言写就的,唯独 PHP 的基础库都是靠 C 的。去年看到一片文章说 PHP 不是语言,深表同意,我认为 PHP 的位置实际处于伪代码和程序语言之间,以快和下贱为特色,你可以快速搭建原型,需要人手时可以找一群民工来写,这语言当然就很厉害了
我之前相信语言争论的和事佬说法:语言各有各的精髓,但总的来说是相等的。Paul Graham 用一个简单的例子来驳斥:如果承认 Perl 5 比 Perl 4 强,那就应该承认不同语言之间也存优劣之分(这种手法我以前也用过,当时用自己一年间的差距来证明合作的困难