《ACM通讯》在1959年发行的时候,其社员发表过以下评论,在后来成为了ACM的追求:
编程如果能在计算机研究和发展方面成为一个重要的部分,必然存在着从艺术到一门严谨科学的过渡。
这个目标在接下来的几年中不断重现。例如,1970年“将编程从艺术过渡到严谨科学的第一步”发表了。同时,我们也成功地以最简单的方式将规则变成科学,称之为“计算机科学”(computer science).
一个领域一旦被归为艺术,就会产生一些让人不愉快的东西,在具备实质性的声望之前,必须先被认作科学。另一方面,我花了十二年写的系列丛书就叫做“计算机程序设计艺术”(The Art of Computer Programming)。经常会有人问我,为什么起了这么一个标题。甚至还有人不相信我用了这么个标题,在很多引用中,我发现他们错把书名引用为“计算机程序行为”(The Act of Computer Programming,这里,错把art当做act)。
在这次演讲中,我想解释一下为什么我觉得艺术是最合适的词、艺术和科学什么不同、艺术是好是坏以及正视这门学科对我们有什么帮助。
我第一次谈论起这个标题是在1966年。那是在加利福尼亚举办的世界性ACM会议上。那时候我的书还没有出版,我和一个早已了解我的自负朋友一起在酒店吃午饭的时候,他打趣道,“新书打算叫做高德纳导论吗”,我回击道,“恰恰相反,我打算用你的名字。”他叫Art Evans。
这个故事告诉我们,艺术(“art”)一词可以有不同的意义。实际上,最有趣的地方是,几乎所有的意思多多少少都和计算机编程有关。准备演讲的时候,我去图书馆查了一下有多少和用了“艺术”一词的出版物。几天之后得出结论,“艺术”可能是语言中最有意思的一个词了。
旧的艺术
如果追溯到拉丁文中,ars,artis表示技巧,和希腊的τεχνη有差不多的意思——技术和技巧的词根。
现在提起艺术,可能你的第一印象就是美术,例如绘画、雕塑之类的。但在二十世纪之前,艺术的意思和现在大不相同。即使现在,某些方言中还保留这艺术原来的意思,特别是和科学相比较的时候,我想花几分钟介绍一下艺术的经典含义。
中世纪时候,第一所大学是为教授七门学科建立的:语法,辩论,逻辑,算数,几何,音乐和天文,叫做“liberal arts”。注意,这和今天的文科大学有很大不同,七门课中至少有三门是和计算机密切相关的。那个时候,艺术一词指的就是人类设计制造的东西,反抗自然和天性。“liberal”就是自由和解放,和耕种等劳动是对立的。中世纪的时候,艺术本身的意思是逻辑,即三段论的学习。
科学 vs 艺术
很多年来,“科学”一词和“艺术”有着差不多的含义。比如,人们讲七门学科统称作“自由的艺术”,有时候也叫做“自由的科学”。15世纪时Duns Scotus称逻辑是“科学的科学,艺术的艺术。”随着文明和科技的进步,它们才逐渐有了区别,“科学”代表知识,“艺术”代表知识的运用。比如,天文科学研究原理,艺术就是研究如何利用其进行导航。和今天科学与工程的差别差不多。
19世纪有很多有关科学和艺术的讨论,我觉得最好的是John Stuart Mill,他写道:
很多时候,几门不同的科学相互联系,来完成一件事情。人们要结合不同的事物ÿ