我一直认为,评价一本专业书籍,不仅要知道它讲了什么,也要清楚它没讲什么。有了这样的信息,人们才会知道这本书是不是他要的;而且除了这本书他还需要什么。这比仅仅把它作为"经典"而向人推荐,更有帮助。
一本好的专业书不但要清晰的呈现美丽的结果,也要为人们指出通向这些结果的道路。也就是解决问题的一般途径。Polya所著的那本经典读物,可以很好的概括之:"how to solve it"。
用这个统一的标准去衡量,《具体数学》是很优秀的。这本书就是专门为了上课而写,就是为了让原本无知的学生能够掌握一般的解题思路。这一点它作的非常好。
讲解是一流的。那么就让我们来看看内容,看看《具体数学》讲了什么,更重要的,它没讲什么。
用一句话粗暴的归纳:讲的是技巧,没有讲结构。
如果从数学分支去概括,《具体数学》所涉及的内容基本上没有超出计数组合数学(enumerative combinatorics)和分析组合数学(analytic combinatorics)的范围,间或涉及一点数论和离散概率内容,但对这些内容的取舍依然具有很强的组合数学趣味。
与组合数学的专著相比,《具体数学》对这些论题的阐述,处处都在强调"演算"的技巧;但基本忽略了一般的(general)数学定理、抽象的(abstract)数学体系。可谓"具体"的实至名归。
这样选择,是出于计算机科学专业需求的考虑。《具体数学》中的数学,是计算机科学所做之事(例如算法分析)的"工具",但并非是计算机科学的"主题"。因此计算机科学专业的学生,毋须在这些数学体系上做文章,但若掌握了娴熟的演算技巧,却的确可以事半功倍。
计算机科学的数学工具箱――这就是《具体数学》要扮演的角色。在这个角色上,它是独一无二的。
但数学之于计算机科学,并非时时刻刻都是工具而已,很多时候也可能成为主题本身。这样的内容就是《具体数学》所没有涉及到的。
计算机科学有个俗气的时髦外表,点缀着各种新鲜而短命的技术词汇,但也有个朴素而美丽的硬核,就是计算机科学的理论根基(theoretical foundations)。《具体数学》为我们展示了这个硬核的一面:分析和演算;却也有意的忽视了另一面:结构(structures)和刻画(characterizations)。
而这部分没有被《具体数学》覆盖的内容,对于计算机科学而言已不再仅仅是工具,而可以影响到我们对计算本身的认识。
任何形式的计算(computation),都受限于具体的计算模型(computational model)。也因这样的限制,问题和算法,作为数学对象,都有了各自的结构。计算的界限也因此产生。怎样刻画这些结构,关系到人类对于计算本质的认识,而这也是理论计算机科学永恒的主题。从这个意义上说,理论计算机科学基本上就是在研究组合数学:面对算法或问题这么个离散对象,对性质的分析,对结构的刻画。《具体数学》的内容是前者,而后者从风格上则是完全不同的另一类东西了。
并不是每一个计算机科学专业的人都有必要去关注这些内容,毕竟大多数学习计算机的人是为了谋得更好的生活,而不是为了探索未知。这也是为什么《具体数学》展现着精巧和实用,却藏起了美丽和永恒。因为后者会吓跑很多人,也难免耽误一些人。《具体数学》的英文副标题更诚实:"A Foundation for Computer Science",声明这只是计算机科学的基础之一。到了中文,那个"a"就被含糊掉了,整个就成了全部"计算机科学基础"。
但愿这只是个翻译上的瑕疵,而不是我们实际的选择:精巧实用尚存一席之地,美丽和永恒已被彻底遗忘。
Read full article from 具体数学(英文版第2版) (豆瓣)
No comments:
Post a Comment