高分编程佳作推荐

编程方面书籍的Top 10榜单大家可能都已经烂熟于心,TAOCP、GoF、CLRS、SICP、《The C Programming Language》、《Clean Code》、《Refactoring》、《Code Complete》、人月神话、龙书等等,这些都是经过了时间考验、需要反复阅读的经典。本文不谈这些人人皆知的经典著作,而是给大家推荐一下比较新的、网评非常好的“新经典”,如果前面那些都已经读过或者读腻了,不妨来看看这些不错的新书,也许能重新激发你学习的乐趣。

高分编程佳作推荐_第1张图片


1.业余数学

1.1 基本素养

书目:《Mathematics: A Very Short Introduction》、《How to Think Like a Mathematician》、《Concepts of Modern Mathematics》

非常好的三本入门书,都已在读,管中窥豹地了解一下什么是数学、数学家如何思考、现代数学中最火的研究主题,稍后会写一篇文章专门总结一下。

1.2 趣味读物

好的数学科普读物非常多,目前最想读的是《The Man Who Knew Infinity: A Life of the Genius Ramanujan》、《The Man Who Loved Only Numbers: The Story of Paul Erdős and the Search for Mathematical Truth》和Surely You’re Joking, Mr. Feynman!: Adventures of a Curious Character》。费曼先生这本小书被放在了卫生间,每天读一章,还挺有趣的……

1.3 正统教材

书目:《Calculus: An Intuitive and Physical Approach》、《Introduction to Linear Algebra》

正统的数学学习,最想读Spivak的《Calculus》和Strang的《Introduction to Linear Algebra》。可惜这两本都是教材,卖的实在有点贵,有一本评价非常不错的微积分书《Calculus: An Intuitive and Physical Approach》,Dover出版,价格公道、童叟无欺,八百多页只要二十刀。于是已经入手,兴致勃勃准备学习一下。概率论不准备读纯数学类教材了,因为有本概率论与算法分析结合的非常好的教材,具体参见1.2 算法部分。


2.CS理论

2.1 计算理论

书目:《Nature of Computation》

《Nature of Computation》是一本新出的大部头,貌似比传统的《Introduction to the Theory of Computation》要轻松一些。还有一本评价非常高的,著名的物理学家费曼的《Feynman Lecture on Computation》。

2.2 算法

书目:《Probability and Computing: Randomized Algorithms and Probabilistic Analysis》、《From Mathematics to Generic Programming》

所有经典的算法书基本都买全了,TAOCP(《The Art of Computer Programming》)准备打折时收藏一下留作查阅用,但估计没机会读完甚至开始读,有机会能读完第一卷Fundamentals就不错了。到头来还是绕不开CLRS(《Introduction to Algorithm》),准备好好重读一遍,好好做一下习题,也不枉读研时导师讲了那么多相关的内容。其他《Algorithm Design》、《The Algorithm Design Manual》、《Algorithms》、《Programming Pearls》等作为补充,比如DP、Combinatorics。另外,这本强大的UCBerkeley的教材《Probability and Computing》是对CLRS非常好的补充,不仅可以复习概率论的基础知识,同时也是对CLRS中算法分析和随机算法部分的有力补充。

《From Mathematics to Generic Programming》是Alexander A. Stepanov的最新著作,比之前那本所谓的编程的本质《Elements of Programming》要通俗有趣,加入了抽象代码等基础知识的介绍和一些数学史的趣事。从数学或者说科学的角度看编程,这方面Stepanov的书,还有David Gries的《The Science of Programming》都是佳作,也很合本人胃口。

2.3 编程语言理论

书目:《An Introduction to Functional Programming Through Lambda Calculus》、《Types and Programming Languages》

学习编程语言理论,这本TaPL是绕不开的经典著作。读研时上过一门叫做《Principle of Programming Language》的课,导师是一位身宽体胖的老大爷。前两节来上课试听的同学还不少,但等到第二周正式注册时却只剩不到10个人。于是老大爷就感慨,现在的学生都去选更容易(至少听名字更容易)的课了,我想其实大家是想留更多时间刷题找工作。但是他认为,每一个严肃的程序员,都应该学习编程语言理论。他说这话时的认真表情,让我久久无法平静。那门课我一直认真听认真做,却遇到了很少有的编程作业做不出的情况,因为第一次接触确实很难。所以毕业后想花时间好好学学这方面的东西,还梦想着有能力设计一门自己的语言,一门都是自己觉得好的语法和特性组成的语言,应该会很酷!


3.编程实践

3.1 新语言

书目:《Fluent Python》、《Java 8 in Action》

之前Ruby很火,但因为种种原因似乎现在不那么火了。现在“新语言”的典范应该是Python吧,被Google、Amazon以及很多大公司广泛接受。而这本《Fluent Python》在Goodreads上的评分高的吓人,买了一读发现实至名归,阅读体验非常棒!以前一直在找一本Python进阶的书,因为对于一名其他语言熟练的老程序员来说,从头开讲Python的基础语法真的是种折磨,慢慢就失去了学习Python的热情。而这本书则字字珠玑,讲的都是Python之所以出色的特质。

而后一本则是对Java 8中引入的Lambda有不错的讲解。从本科到工作,一直非常热爱Java,6中的各种新语法特性如数家珍,但从Java 7和8开始就渐渐没有关注,等Java 9出来了一定要好好学习一下,重燃热情~(美亚上显示经典的《Effective Java》第三版明年会出,而且会包含Java 9方面的内容,到时一定要入手一本)

3.2 方法论

书目:《Working Effectively with Legacy Code》

在编程方法方面,《Clean Code》、《Refactoring》和《Code Complete》都是永恒的经典,都是要反复读的,在这里推荐另外一本。作为程序员,我们最经常做的就是修改遗留代码,而这方面容易忽略的一本经典著作就是这本《Working Effectively with Legacy Code》。之前看到一本不错的二手版本,都已经下单了,后来不知道怎么想的又取消了,结果现在特别贵,肠子都悔青了,:|

3.3 工具

书目:《Practical Vim: Edit Text at the Speed of Thought》

这本《Practical Vim》在豆瓣评分高达9.1,在Goodread上也有很高的分数,在中外程序员心中都是一部佳作。使用Vim少说也有了五六年了,看到评价这么好的一本书,不免想买来看看还有哪些高级技巧,让自己Vim的水平更上一层楼。


4.系统开发

4.1 分布式系统

书目:《Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems》

分布式系统编程方面一直没有特别好的书,要么就太泛泛,要么就枯燥。而这本《Designing Data-Intensive Applications》在网上的评价几乎是一边倒的好评,十分好奇所以入手备着,准备细细品读,同时对读研时上的《Distributed System》课里学过的知识都梳理一遍。当时最震惊的就是,原来分布式的理论也可以统一地用数学语言去表达甚至证明。之前一直以为自己擅长这方面的东西,其实学得并不扎实,所以抽时间一定要重新学习一遍。

4.2 架构设计

书目:《Clean Architecture: A Craftsman’s Guide to Software Structure and Design》

Bob大叔最新的著作,2017年9月才正式发售,在美亚上还没有几个人评论。口碑如何目前还不够了解,只是简单的看了一下目录。但Bob大叔名声在外,有《Clean Code》和《Clean Coder》珠玉在前,相信这本也差不了。

4.3 运行维护

书目:《Site Reliability Engineering: How Google Runs Production Systems》

Google的运维工程师手册,从方方面面讲述高可用系统的维护,用科学的方法和思维做事。目前在Amazon工作了一小段时间,深感Amazon在系统监控、运维方面的强大。所以对这方面很感兴趣,想看看Google分享的经验。这本书的缺点据说是有点啰嗦,网上有免费的在线版,想节约资金的同学可以直接在线看。


5.其他佳作

5.1 机器学习

书目:《Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems》、《Gödel, Escher, Bach: An Eternal Golden Braid》

机器学习和AI现在非常火,之前一直没有关注因为觉得自己的数学和理论水平不够,学了也只是皮毛。自从开始自学一些数学知识后,对学习AI有了些信心,相信假以时日还是能够学明白的。这本《Hands-On Machine Learning》评价非常不错,比较基础也比较实用,最后部分还讲到了现在最火的深度学习,绝对值得拥有。另外还有一本超高分的MIT的《Deep Learning》,第一部分也有前置知识的铺垫,但后面部分据说太过权威和严谨,所以本人始终没敢挑战,学有余力的同学不妨一读,相信大家的评价是不会错的。

《Gödel, Escher, Bach: An Eternal Golden Braid》大名鼎鼎的旷世奇书GEB,好不容易买到了一本精装版的,准备好好拜读。从编程、音乐、绘画等科学和艺术人文方面开讲,Goodreads上口碑炸裂不可不读,这样的旷世好书可遇不可求。

5.2 休闲读物

书目:《Coders at Work: Reflections on the Craft of Programming》

《Coders at Work》包含了对十五位编程大师的访谈,谈到了他们是如何喜欢上编程,如何学习,对编程的发展又有何看法。虽然还没有读,但对这本书还是很期待的,相信每位大师振聋发聩的言语会对每个人的职业生涯都产生深远的影响。还有一本《Beautiful Code: Leading Programmers Explain How They Think》,中文名《编程之美》。之前在国内买过但没有随身带过来,网上评价一般,可能因为大家觉得内容比较零散,每章的代码片段像拼凑的,但个人觉得有时间不妨一读,可以激发灵感,因为评分不高所以就没放在上面书目中。

你可能感兴趣的:(高分编程佳作推荐)