读《黑客与画家》

Paul Graham的《黑客与画家》这本书,我是2014年4月21日开始读的,那时读了半本,觉得书中的许许多多地方都值得细品,所以读得很慢,每次只读几页,再反思一会儿。之间中断了好长时间没再看,前两天又翻起书架上的这本书,一口气把后半本读完了。

之所以又翻起这本书,是前些天在看《如何创业》的网易公开课时,第三节看完,觉得演讲者挺幽默的,一查,发现是硅谷创业之父Paul Graham,我立刻联想到自己曾经读过他的文章,于是便回顾了《黑客与画家》这本书的前半部分,并把后续部分读完。不得不说,作者是个睿智的黑客,他的文笔轻松幽默,又充满对既有现象和规则的哲思。他认为黑客与画家最相像,共同之处在于他们都是创作者,与作曲家、建筑师、作家一样,他们都试图创作出优秀的作品。其实,我觉得各行各业上升到一定高度后,都可以成为艺术,都有相通的地方。

这本书主要讲的还是和计算机、编程相关的内容,许许多多生硬的概念在作者的笔触下变得通俗易懂,有时看到作者描述某个计算机专业术语时,甚至感叹:“学了这么多年计算机,原来它是这个意思啊。”引用Robert Morris对这本书的评论再恰当不过了——“此书将迫使你重新思考计算机编程的本质”。


摘抄书中第十四章的最后一篇文章《梦寐以求的编程语言》:

让我们试着描述黑客心目中梦寐以求的语言来为以上内容做个小结。这种语言干净简练,具有最高层次的抽象和互动性,而且很容易装备,可以只用很少的代码就解决常见的问题。不管是什么程序,你真正要写的代码几乎都与你自己的特定设置有关,其他具有普遍性的问题都有现成的函数库可以调用。

这种语言的句法短到令人生疑。你输入的命令中,没有任何一个字母是多余的,甚至用到Shift键的机会也很少。

这种语言的抽象程度很高,使得你可以快速写出一个程序的原型。然后,等到你开始优化的时候,它还提供一个真正出色的性能分析器,告诉你应该重点关注什么地方。你能让多重循环快得难以置信,并且在需要的地方还能直接嵌入字节码。

这种语言有大量优秀的范例可供学习,而且非常符合直觉,你只需花几分钟阅读范例就能领会应该如何使用此种语言。你偶尔才需要查阅操作手册,它本身很薄,里面关于限定条件和例外情况的警告寥寥无几。

这种语言的内核很小,但很强大。各个函数库高度独立,而且和内核一样经过精心设计,它们都能很好地协同工作。语言的每个部分就像精密照相机的各种零件一样完美契合,不需要为了兼容性问题放弃或者保留某些功能。所有函数库的源码都很容易得到。这种语言能够很轻松地与操作系统和用其他语言开发的应用裎序对话。

这种语言以层的方式构建。较高的抽象层透明地构建在较低的抽象层之上。如果需要的话,你可以直接使用较低的抽象层。

除了一些绝对必要隐藏的东西,这种语言的所有细节对使用者都是透明的。它提供的抽象能力只是为了方便你的开发,而不是为了强迫你按照它的方式行事。事实上,它鼓励你参与它的设计,给你提供与语言创造者平等的权力。你能够对它的任何部分加以改变,甚至包括它的语法。它尽可能让你自己定义的部分与它本身定义的部分处于同等地位。这种梦幻般的编程语言不仅开放源码,更开放自身的设计。


不得不提的是,这本书的翻译阮一峰先生,他翻译得通顺易读,这在计算机专业领域里是颇为难得的。读完译者翻译的好书,能让我接触到国外优秀计算机黑客的思想,这是一件无比幸福的事情。我感谢作者Paul Graham先生,也感谢译者阮一峰先生。


书的封面有一幅勃鲁盖尔的绘画作品——《通天塔》:

这幅《通天塔》,又名《巴别塔》,是他移居布鲁塞尔的第一幅作品。

取材于旧约《创世纪》,传说挪亚后代迁居南亚底格里斯河与幼发拉底河之间一块大平原,因为祖先被洪水冲怕了,担心再遭水灾,就齐心修建一座高塔使全体人员都住进去永保平安。塔越修越高达至天界,触怒了上帝。上帝决定施神术搅乱造塔人的语言,使人们互相不能沟通而造不成塔,这是基督教解释不同民族语言的来源。

老勃鲁盖尔以宏大的构图来描绘通天塔,以云雾拦断显示通天塔之高,以风俗画手法描绘人与物、人与环境的关系。画家以细密画的技巧功力,描绘了众多有情节性的人物活动,借以揭示人战胜大自然的力量。

他在这一幅圣经寓意画中表现了“天意”与人在改造世界时的不可调和性,人与自然的斗争具有英雄气魄,同时也充满悲剧性。