具体数学(英文版第2版) (豆瓣)



我一直认为,评价一本专业书籍,不仅要知道它讲了什么,也要清楚它没讲什么。有了这样的信息,人们才会知道这本书是不是他要的;而且除了这本书他还需要什么。这比仅仅把它作为"经典"而向人推荐,更有帮助。
  
  一本好的专业书不但要清晰的呈现美丽的结果,也要为人们指出通向这些结果的道路。也就是解决问题的一般途径。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

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts