Knuth:将计算机编程视作艺术

《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,他写道:

很多时候,几门不同的科学相互联系,来完成一件事情。人们要结合不同的事物ÿ

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1卷首先介绍编程的基本概念和技术,然后详细讲解信息结构方面的内容,包括信息在计算机内部的表示方法、数据元素之间的结构关系,以及有效的信息处理方法。此外,书中还描述了编程在模拟、数值方法、符号计算、软件与系统设计等方面的初级应用。此第3版增加了数十项简单但重要的算法和技术,并根据当前研究发展趋势在数学预备知识方面做了大量修改。 第2卷对半数值算法领域做了全面介绍,分“随机数”和“算术”两章。本卷总结了主要算法范例及这些算法的基本理论,广泛剖析了计算机程序设计与数值分析间的相互联系,其中特别值得注意的是作者对随机数生成程序的重新处理和对形式幂级数计算的讨论。 本书附有大量习题和答案,标明了难易程度及数学概念的使用。 本书内容精辟,语言流畅,引人入胜,可供从事计算机科学、计算数学、计算技术诸方面的工作人员参考、研究和借鉴,也是相关专业高等院校的理想教材和教学参考书。 《计算机程序设计艺术排序和查找(第3卷)(第2版)》内容简介:这是对第3卷的头一次修订,不仅是对经典计算机排序和查找技术的最全面介绍,而且还对第1卷中的数据结构处理技术作了进一步的扩充,通盘考虑了将大小型数据库和内外存储器。它遴选了一些经过反复检验的计算机方法,并对其效率做了定量分析。第3卷的突出特点是对“最优排序”一节作了修订,对排列论原理与通用散列法作了全新讨论。 ——《豆瓣读书》

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值