[貌似以前看过,今天偶然又看到,转过来存档。翻译原文。另:关注这个]
我读完计算机本科以后,去艺术学校学习绘画。许多人感到奇怪,喜欢计算机的人也会喜欢美术吗?他们大概认为编程序和画画是两种完全不同的工作,编程需要冷静,精密,和正确的方法,而画画是表达某种狂热的情感。
这种印象是不对的,编程和画画有很多共同之处,实际上,在我认识的不同类型的人中间,画家和黑客是最相似的。
画家和黑客的相似之处在于:他们都是创造者,就好像作曲家,建筑师,以及作家一样。黑客和画家类似,他们的目的是创造某种美好的事物。尽管在创造的过程中,也许会发现新技术,但他们的根本目的并不是研究技术。
我从来都不喜欢”计算机科学”这个词,因为这种东西根本就不存在。这门学科的内容,不过是由于历史原因偶然凑合到一起的大杂烩,就好像南斯拉夫国的形成一样。一头是数学家们,他们摆弄计算机是为了得到国防部的资金赞助,中间部分,一伙人在研究仿佛是计算机自然史之类的东西--比如网络上数据流算法的行为特征等等。在另一个极端上,是黑客们,他们编写有趣的软件。对他们来说,计算机是表达的工具,如同水泥之于建筑师,颜料之于画家。这三种人凑在一块的群体,就好像是数学家,物理学家和建筑师被分到一个专业里。
有时候黑客们干的事被称为”软件工程”,这个词也是一种误会。比起建筑师来,软件设计师离工程师的距离更远。建筑师和工程师的分界并不十分精确,但却是实实在在存在的。其分界在于做什么和如何做:建筑师决定做什么,工程师考虑如何做出来。
这两件事情也不能分得太开,如果你不懂得如何做,那么你设计的时候就会陷入难局。但是编程当然不是仅仅决定如何实现某种特性那么简单,在最好的情况下,编程实际上就是设计软件的特性--往往最好的设计方式就是实现它。
说不定哪一天,”计算机科学”会分裂成几个专业,就好像南斯拉夫最终分裂成几个国家那样。这也许是件好事。尤其是这意味着我所擅长的编程,会变成独立的专业。
这些不同类型的工作绑到一个专业里,当然有利于行政管理,但是却会引起智力上的困惑。这也是我不喜欢这个名词的另一个原因。处于中间部分的那伙人所干的,和经验科学差不多,但是另外两头的人,数学家和黑客,可不太象是在干真正的科学。
数学家好像并不为这个问题发愁,他们就象数学系的同行一样,很高兴地做着理论研究,不久就忘了办公大楼的牌子写的是”计算机科学系”。但是对黑客们来说,这个牌子就很成问题。既然他们干的事被称作科学,他们就会感到好歹要象那么回事,于是大学和研究所的黑客们觉得应该写论文,而不是写优美的程序。但是不幸得很, 后者才是他们真正应该干的。
论文充其量不过是一个手续。黑客写出很棒的程序,然后再做一篇论文,论文表示软件上的成绩。但是两者之间的不协调引起了问题:好的软件比起糟糕的软件来,更加不适合做论文的题材。
好的软件不适合作论文的题材。首先,论文要有独创性的,写过博士论文的都知道,要想保证你开垦的那片地是处女地,就等于说是你划出一片别人都不想要的地来。第二,论文必须言之有物。糟糕的软件使论文材料充足,你有很多事实可以描述你是如何克服那些困难的。糟糕的假设总是会产生大量问题。大部分AI 研究就是好例子。比如,你假定,以抽象概念为参量的逻辑表达式列表可以用来表示知识,那你要论证的内容可就多了。就像Ricky Ricardo说的,Lucy,这下可够你解释了。
创造美好事物的过程,常常是对已有事物的细微调整,或者是把已有概念用新方式组合起来。这种事情,恐怕不太好做研究论文吧。 阅读全文»
