2003 年 5 月
(本文源自哈佛大学的一场客座讲座,其中包括早前在东北大学的演讲。)
当我完成计算机科学研究生学业后,我去了艺术学校学习绘画。许多人似乎对一个对计算机感兴趣的人也对绘画感兴趣感到惊讶。他们似乎认为黑客和画家是非常不同类型的工作 —— 黑客是冷漠、精确和有条理的,而绘画则是某种原始冲动的狂热表达。
这两种形象都是错误的。黑客和画家有很多共同之处。事实上,在我认识的所有不同类型的人中,黑客和画家是最相似的。
黑客和画家的共同之处在于,他们都是创作者。与作曲家、建筑师和作家一样,黑客和画家试图做的是创造好的东西。他们并不是在做研究,尽管在试图创造好的东西的过程中,如果他们发现了一些新技术,那就更好了。
我从来不喜欢 “计算机科学” 这个术语。我不喜欢它的主要原因是它根本不存在。计算机科学是一个由历史的偶然性拼凑在一起的一堆勉强相关的领域,就像南斯拉夫一样。在一端,你有一些真正是数学家的人,但他们称自己所做的事情为计算机科学,这样他们就可以获得 DARPA 的资助。在中间,有一些人正在研究计算机的自然历史 —— 例如研究算法在网络中传输数据的行为。然后在另一端,有黑客,他们试图编写有趣的软件,对于他们来说,计算机只是一种表达媒介,就像对于建筑师来说混凝土或对画家来说的油漆一样。这就好像数学家、物理学家和建筑师都必须在同一个系里。
有时黑客所做的事情被称为 “软件工程”,但这个术语同样具有误导性。优秀的软件设计师不比工程师更像工程师。建筑和工程之间的界限并不明确,但它存在。它存在于 “做什么” 和 “如何做” 之间:建筑师决定做什么,工程师找出如何做。