最近业界又传来一个令人兴奋的消息:经典巨著《计算机程序设计艺术》要在国内出版了!此书的影印版将由北京科海电子出版社和清华大学出版社率先联袂推出(精装本定价240元,平装本定价210元),国防工业出版社也将推出其中文版本。
这是一本让比尔·盖茨曾经如是说的书:“如果你认为你是一名真正优秀的程序员……读Knuth的《计算机程序设计艺术》,如果你能读懂整套书的话,请给我发一份你的简历。”如果你觉得这句话还不能证明本书的价值,那么它还获得过一些这样的评价:“多年来,无论在编程理论上,还是作为学生、研究人员和实际应用者的实践开发,它的前三卷书都提供了无法估量的宝贵资源。这是一套集所有基础运算法则于一身的经典之作。它可以为当今软件开发人员提供他们应该知道的计算机编程知识”(Byte杂志)、“无数的读者都在谈论Knuth的书所带来的深远影响。科学家惊叹于分析逻辑之透彻严谨,而普通的编程人员也已成功地将书中所列方案运用到他们的日常问题中。所有的人都非常赞赏Knuth在这套书中所表现的精确与风趣,并为其明确性与涉及面之广而感到欣喜”(Charles Long)、“无论你的背景怎样,如果你正在进行复杂的计算机编程,你就应该阅读本套书中的每本书,来补充你的专业知识。当一个问题难以解决,而必须使用Knuth的这套书来解决时,总是一件令人愉快的事情。我发现在计算机方面使用它们会有惊人的效果”(Jonathan Laventhol)……这套书作为计算机科学类的一流权威著作已经在世界范围内得到了广泛认可,自从出版以来好评如潮、长销不衰。
《计算机程序设计艺术(The Art of Computer Programming,Addison-Wesley,1997年)》的作者Donald E. Knuth是算法和程序设计技术的先驱者,他同时又是计算机排版系统TeX和METAFONT的发明者。他因为这些成就和大量创造性的影响深远的著作(9部书和160篇论文)而誉满全球,获得了牛津大学、巴黎大学和圣彼得堡大学名誉博士。作为斯坦福大学计算机程序设计艺术的荣誉退休教授,Knuth当前正全神贯注于完成其关于计算机科学的史诗性的七卷集,这一伟大工程在1962年他还在加利福尼亚理工学院读研究生的时候就开始了。Knuth教授获得的奖项和荣誉不胜枚举,包括美国计算机协会图灵奖(ACM Turing Award)、美国前总统卡特授予的科学奖章(Medal of Science)、美国数学学会斯蒂尔奖(AMS Steele Prize)、IEEE的约翰·冯·诺曼奖章以及1996年11月由于发明先进技术荣获的极受尊重的京都奖(Kyoto Prize)。
最新版本的《计算机程序设计艺术》共分三卷:《算法基础(Fundamental Algorithms)第三版》、《半数值算法(Seminumerical Algorithms)第三版》、《排序与查找(Sorting and Searching第二版)》。其中,第一卷以基本的编程概念和技术为开始,随后讲述信息结构——计算机内信息的表示法、数据元素间的结构关系以及处理它们的有效方法,主要应用于模拟、数字方法、符号计算、软件和系统设计,为了适应当前趋势,作者对“精确的初步计算”部分进行了修改;第二卷分“随机数”和“算术”两章对半数值算法领域做了全面介绍,总结了主要算法范例及这些算法的基本理论,广泛剖析了计算机程序设计与数值分析间的相互联系,另外,第三版中特别值得注意的是Knuth对随机数生成程序的重新处理和对形式幂级数计算的讨论;第三卷是对计算机排序和查找一流技术最全面的研究,虽然计算机技术发展迅猛,可此卷的权威性至今仍不容质疑,它扩展了第一卷中数据结构的处理方法,将大小数据库以及内存和外部存储都包含在内,本书包括对计算机方法仔细检查的选择方案及其效率的大量分析,第二版的独特之处在于优化了的排序以及对通用散列法和排列法的新的理论论述。
我有幸抢先看到了原版的《计算机程序设计艺术》,翻开这本书的第一页之后,就一发不可收拾、饥渴地阅读了下去——本来我还有些担心其数学知识太多会枯燥,但Knuth教授清晰的思路、幽默的语言让我如醉春风,轻松地深刻掌握了那些复杂抽象的知识,相信大部分的程序员都可以掌握本书讲授的内容。另外,作者丰富的知识基础也令人由衷赞叹,书中到处旁征博引、左右逢源,各领域的语句信手拈来又不留丝毫斧凿之迹。读了《计算机程序设计艺术》之后真有“登泰山而小鲁”的感觉,在撰写《大师的风格》一文之前我还没有读过这本书,现在才发现那篇文章里没有提到Knuth实在是一大缺憾!
研究基础理论知识也许不会像那些让你能当即就写出一个“Hello,world!”的实战学习那样有趣,可是作为一个程序员如果没有坚实的理论基础,那永远只能停留在“编码(Code)”的层面上,对于真正的“编程(Program)”却是“不得其门而入,不见宗庙之美、百官之富(《论语·子张》)”。如果要真正登堂入室成为优秀的程序员,就一定不要错过这本经典中的经典——《计算机程序设计艺术》。