Hackers and Painters

最近在亚马逊上买了这本书,也是之前一直想买的「黑客与画家」,正好这几天相对较闲,读了一半多了,以下是从书中摘录的一些文段,里面有一些观点我其实不是完全认同,但是有时候就是那样:P

最好的情况下,那些事情也不过是遥远的将来我们可能从事的实际工作的练习。它所面向的目标是如此遥远,以至于当时我们都不知道自己练习这些到底是为了干什么。更常见的情况是,那些事情不过是一系列随意设置的绳圈,你被要求一个个跳过去。你在学习中遇到的文字都是专为考试而设计的,目的就是为了出题,而不是为了讲清楚问题。

一般来说,他们都是在办公室工作,所以就在上班的路上,顺路把孩子送到学校去关着,这有点像他们周末外出度假时,把狗送到寄养的地方。

许多时候,我们所有人——包括学生和老师——都只是做做样子,走过场而已。

我一直不喜欢“计算机科学”(Computer Science)这个词。主要原因是根本不存在这个东西。计算机科学就像一个大杂烩,由于某些历史意外,很多不相干的领域被强行拼装在一起。这个学科的一段是纯粹的数学家,他们自称为“计算机科学家”,只是为了得到国防部研究局(DARPA)的项目资助。中间部分是计算机博物学家,研究各种专门性的题目,比如网络数据的路由算法。另一端则是黑客,只想写出有趣的软件,对于他们来说,计算机只是一种表达的媒介,就像建筑师手里的混凝土,或者画家手里的颜料。所以,在“计算机科学”的名下,数学家、物理学家、建筑师都不得不待在同一个系里。

很长一段时间我都为此事沮丧,就像小学里老师教我怎么拿铅笔,我却总是学不会的那种感觉。如果我那时看到其他创作领域,比如绘画或者建筑,我就会想到,自己的方法其实有一个正式的名字:打草稿。我现在认为,大学里教给我的编程方法都是错的。你把整个程序想清楚的时间点,应该是在编写代码的同时,而不是在编写代码之前,这与作家、画家和建筑师的做法完全一样。

明白这一点对软件设计有重大影响。它意味着,编程语言的特性应该是允许动态扩展(malleable)。编程语言是用来帮助思考程序的,而不是用来表达你已经想好的程序。它应该是一支铅笔,而不是一支钢笔。如果大家都想像学校教的那样编程,那么静态类型(static typing)是一个不错的概念。但是,我认识的黑客,没有一个人喜欢用静态类型语言编程。我们需要的是一种可以随意涂抹、擦擦改改的语言,我们不想正襟危坐,把一个盛满各种变量类型的茶杯,小心翼翼放在自己的膝盖上,为了与一丝不苟的编译器大婶交谈,努力得挑选词语,确保变量类型匹配,好让自己显得礼貌又周到。

黑客就像画家,工作起来是有心理周期的。有时候,你有了一个令人兴奋的新项目,你会愿意为它一天工作16个小时。等过了这一阵,你又会觉得百无聊赖,对所有事情都提不起兴趣。

但是,很少有人鼓励你继续成长,变成一个怀疑和抵制社会错误潮流的人。

如果自己就是潮水的一部分,怎么能看见潮流的方向呢?你只能永远保持怀疑。问自己,什么话是我不能说的?为什么?

随着对公民自由’限制不断上升,政府的力量会先增加后减小。

如果读美国开国元勋的自述,你会发现他们听起来很像黑客。“反抗政府的精神,”杰弗逊写道,“在某些场合是如此珍贵,我希望它永远保持活跃。”

计划这个词,只是将构思束之高阁的另一种表达方式。只要想到好的构思,我们就立刻着手升级。

Leave a Reply

Your email address will not be published. Required fields are marked *

nineteen − 12 =