《黑客与画家》读书笔记

Fenng 说这本书的三个主要的主题是黑客精神、创业和编程语言,我深以为然。当然,这本书还涉及到了其它很多有意思的话题。比如不能说的话、财富等等。

翻译经常是一件吃力不讨好的事。即使翻译的再好,如果原著本身很经典的话,大家都还是喜欢看原著。当然,像《歌德尔、爱舍尔、巴赫》之类的书得排除在外。本书的译者是阮一峰,其译文和博客行文流畅自然,都值得一读。

关于财富

人们往往因为财富的分配而忽略了财富的创造。人们常常抱怨财富分配的不均匀。这很正常,没有一种分配方式能让所有人觉得公平公正。然而人们在抱怨分配不均时,往往会犯一个认知上的错误,即财富的总量是个 const。然而,人类社会的财富实实在在是在不断甚至是以极快的速度在增长着。所以,获得财富的手段是争取财富分配上的增加或者直接创造财富。后者即创业。

黑客们喜欢创造。有些创造可能仅仅是黑客们自己把玩的玩具。有些则转化为我们人类社会的财富。

禁忌

人类社会的禁忌并不常常是合理的。有些源于历史上的无知,然而不幸的传承了下来。黑客们不喜欢禁忌,黑客们向往自由。然而有时候,黑客们也只能是沉默的大多数。关于这个话题,详见《黑客与画家》第三章。

编程语言

本书中提到了 LISP 这门古老而极具生命力的编程语言,也谈论了一些作者本人对编程语言的看法。本人对编程语言的了解十分有限。下面是我的看法。

哪种编程语言最好

经常在邮件列表里面看到一群人,为了自己喜爱的编程语言争论。那么哪种语言最好呢?其实往往这些问题的提出者不怀好意,或者不知道如何提问?这种人通常被称为Troll

那么哪种语言最好呢?

首先能回答这个问题的人必须是了解至少两门编程语言的人。否则谈何比较?!

其次,如果要讨论好不好的问题,首先需要度量好坏的标准,在这些标准下面,这个问题才真正具有意义。总不能说“我喜欢它,它就是好,这不需要理由!”。实际上,从编程语言的历史上看,一门语言的出现往往是因为某种需求,或者是解决现有的一些编程语言存在的问题。而且在设计编程语言的过程中,很难避免 trade offs——为了某些特性,就必须得牺牲另外一些特性。

问:争论,到底怎样才好?

讨论过程中难免争论,局内人争个热火朝天,局外人看个不明所以。网上的争论尤为如此,经常是断章取义,且双方似乎互相理解不了对方的文字。

我的观点是在讨论过程中,尽量考虑阅读者的感受,另外要含有一定的信息量,而不是噪音。

问:LISP 家族的后代会是“好”的语言吗?

问:编程语言的本质是什么?

计算的本质是什么?

问:理想的编程语言是怎样的?

Guile: 作为一种扩展语言

以上的一些问题是我思考过,有些得到了自己答案,有些还没有想明白。寒假趁闲, 接触 了一下 scheme。接触即平时也只是用Guile,简单的试一下自己写的 scheme 代码能不能运行,结果是不是符合预期。

目前在读《The Little Schemer》,此书且不论内容,形式上便令人耳目一新:

阿基里斯:《The Little Schemer》讲的是什么?
乌龟:讲的是计算的本质。
阿基里斯: 计算机的本质是什么?
乌龟: 是计算的本质,不是计算机的本质。
……(这是我杜撰两个问答)

Guile 是 GNU Ubiquitous Intelligent Language for Extensions 的缩写,可以说是 scheme 的解释器之一。然而一开始写 Guile 并不是为了写一个解释器,从名字可以看出,Guile 是为了方便扩展而诞生的。

我们从 Emacs 可以看出一种优秀软件的特点:高度可定制性。而高度可定制性依赖于表达力丰富的扩展语言。于 Emacs, elisp 正是这样的一门语言; 于 TeXmacs,scheme 正是这样的一门语言。

有意思的链接和广告

http://lambda-the-ultimate.org
http://vivid.chengyichao.info
LUG 书库目前(Sat Mar 2 14:52:04 CST 2013)有《计算机程序的构造与解释》一书,图书馆没借到的话,今晚 LUD 后可以去书库借。

更新时间: