程序员必读书籍[分类好]
这里写下一些我觉得比较经典的书籍,纯属个人建议,或许有些书我没看过,或是看的不细,但这里也给出我的一些看法。
首先给出一些我目前已知的比较有名的书系,欢迎大家补充。
----------------------------------------------书系--------------------------------------------------------------
- O’Reilly书系:动物书,有口皆碑,可惜我看过的几本中文版的书翻译质量相当的糟糕(都是机械工业出版社翻的……),建议直接看英文。
- head first书系:这个书系也很有名,书的编排、写作风格诙谐幽默,整个书系的定位就是入门书籍,通俗易懂。
- in action书系:这个是最近发现的一个书系,貌似也很有名,没怎么读过这个书系的书,先不做任何评价,不过应该不错。
- 图灵书系:感觉这个系列的书质量还是满不错的,讲知识点讲的比较细,而且翻译质量也不错。
---------------------------------------------书单-----------------------------------------------------------------
扩展视野:
- 《程序员修炼之道》:大三的时候读过一遍,感觉不错,主要是给程序员提出一些比较实用的建议,比如说一年学1到2门新语言,使用版本控制系统,选择一个适合自己的文本编辑工具(如vim或是Emac)……这里就不一一列举了,我觉得如果你想知道作为一个程序员,应该怎样提高自己的话,最好先看看这本书。(PS:尤其推荐学计算机的女生看一看,因为就我个人的了解,好像相当一部分学计算机的女生,很多东西都不是很了解,比如说vim、svn,可能在接触实际项目前,连听都没听过……)
- 《浪潮之巅》:不少人都推荐,吴军博士写的,稍微扫了两眼,主要将目前IT行业中的几个大公司是如何诞生,以及正在衰落的公司是如何一步步走到今天这个地步的。
- 《数学之美》:2012年国庆的时候花了几天读完,也是吴军写的,介绍了数学理论如何在IT领域发挥其巨大的作用,通俗易通,强烈推荐。如果在大一大二的时候读了这本书,至少学计算机的童鞋们就会明白数学到底有多用。
- 《黑客与画家》:硅谷天使投资人Paul Graham写的,想创业的同学可以看看,有不少给创业者的建议,当然,对于不想创业的人而言,也有一些参考意义。之前我草看过一遍,重点看了Paul给程序员的一些建议,最近重新翻阅了几页,发觉有新的体会。
- 《UNIX编程艺术》:刚刚过去的寒假读了一下,感觉不错,介绍了有关UNIX的方方面面的知识。
- 《七周七语言》:列举了几种经典的不同类型的编程语言,建议童鞋们有时间看看,毕竟我们平时接触的C/C++ Java其实都属于命令式语言,多接触一下其他泛型的语言,还是很有好处的。
- 《这就是搜索引擎》:介绍有关搜索引擎方方面面的技术,适合作为搜索引擎入门书籍。
计算机系统以及系统管理相关:
- 《深入理解计算机系统》:这本书是老师推荐的,因为在开例会的时候老师说现在我们对计算机底层的实现还是太肤浅,推荐了这本书,结果整个实验室研二研三的几乎都买了……china-pub上这本书的评价是“价值超过等质量的黄金”(其实我更希望有人能用黄金跟我换),目前已经看了3章,感觉相当不错。
- 《maven实战》:其实我主要是想说明一下maven大致的功能——进行大型项目的管理,一个师兄在Adobe公司实习,在公司里他就是用这个进行Java开发,师兄说这本书不错,目前还没有细看,不做评论。
算法:
- 《编程珠玑》:这个应该算是经典中的经典吧,抽时间读了第一章,感觉很容易理解,每章也很短,应该有不少人都听过其大名。
- 《算法导论》:这本书也是经典,写的很细,各种算法基本都有讲,写的很细,砖头一样的厚度与重量,不是每个人都有勇气读下去的……借着上算法课的机会草草读了大部分章节,感觉其实如果能静下心来看书的话,这本书还是蛮容易读懂的。目前已经出到了第3版。
- 《数据结构与算法分析》:刚刚读2章,感觉不错
- 《编程之美》:这本书……一般都是被人用作笔试前突击算法用的,相当一部分人是冲着这书的副标题去的,我前两天翻了两页,感觉例子还比较有意思,也可以作为扩展自己编程思路的书籍。
- 《剑指Offer》:推荐这本书还是因为笔试……听研三的师兄说,2012年招聘的时候,不少HR已经不看《编程之美》改看这本书了(毕竟《编程之美》已经出了很多年了~~),目前还没有看,先写在这里。
程序设计语言:
- 《C程序设计语言》:C语言之父写的书,质量肯定是有保证的(自从第2版之后过了近20年都没做过什么修订),现在底层的东西还是要靠C来写,所以还有必要看看的。
- 《C++ Primer》:C++经典啊,我看的是大红皮的第4版,感觉很不错,看这本书可以了解到C++的一些细节,比如说我们平时写for循环,变量都是int i,而实际上,比较好的做法是用size_t或是size_type(这个记不清了,手头没带书……这里只是举个简单例子说明一下)。
- 《Effective C++》:主要讲如何写出执行效率更高的C++代码,列出了不少原则,平时用C++比较多的童鞋可以看看。
- 《Java核心技术》:共两卷,我觉得第一卷就够用了,主要是用做工具书,平时要用了查一下,这本书刚好。
- 《Java编程思想》:没怎么看,感觉说的都是思想性的东西,不过前两天听师兄说面试的时候面试官问他Java的线程模型是什么,印象里好像《Java编程思想》里有提到过,所以……为了了解Java更深入一下,建议看一下。
- 《Effective Java》:同样讲如何写出高效的代码,只不过这次针对的是Java。
- 《深入理解Java虚拟机》:主要将JVM,因为研究方向的需要拜读了这本书,感觉写的不错,把JVM各个重要的方面基本上都介绍到了,而且还是蛮容易理解的。作为国人出版的原创书籍,已经相当不错了。
框架:
- 《struts 2 in action》:我学struts的时候是看马士兵的视频,顺手借的这本书,没看内容,只看了下目录,从目录来看感觉还不错,一条条的知识点列的很清楚。
- 《Data-Intensive Text Processing with MapReduce》:刚过去的这个暑期去北大上有关云计算的暑期课,老师用这本书作为教材,主要讲了MapReduce的编程模型,建议刚开始学习MapReduce和hadoop的童鞋看这本书,感觉讲的很清楚,国内貌似还没有,在网上可以找到电子版,也不厚。感觉对MapReduce编程模型讲解的很细致,有关算法的描述也很简洁。
- 《hadoop权威指南》:学习hadoop的经典书籍,我个人觉得在懂的MapReduce模型后(尤其是看了《Data-Intensive Text Processing with MapReduce》这本书之后),hadoop权威指南更适合当做手册性质的书,需要的时候查查应该怎么使用hadoop提供的各种类。当然,平时没事的时候也应该翻阅一些这本书,看看hadoop都能做哪些事情。
- 《hadoop in action》:这本书还没读,不过不少人学习hadoop的时候都是看这本书,所以也推荐一下。
数据挖掘:
- 《数据挖掘导论》:我学习数据挖掘的时候就是用这本书做教材,感觉书写的比较全面,可能因为当初读的是中文版,有些地方感觉行文的比较奇怪,豆瓣上评分蛮高的,而且大家都建议读英文版,说英文版比中文更加通俗易懂。
- 《大数据——互联网大规模数据挖掘与分布式处理》:今年新出的书,chinapub上卖的蛮火的,目前买了还没翻阅,暂不评论。
设计模式:
- 《设计模式——可复用面向对象软件的基础》:GoF写的书,这本书可是第一次提出“设计模式”的概念,并总结了23种设计模式,如果是想以后当架构师,估计这本书需要深入钻研。
- 《head first设计模式》:GoF写的那本我读了3~4章吧,实在有些不好理解,就没继续读,如果仅仅是想了解设计模式是什么,或者说想找本设计模式入门书籍的话,《head first设计模式》是个不错的选择,和head first系列其他书的风格一样,风趣幽默,简单易懂,轻轻松松让你明白设计模式是什么。建议读英文原版,中文版的我跟同学借来读过一点,感觉翻译很别扭,比如说Singleton模式,至少我看到过的帖子、视频,都是翻译成“单例模式”,GoF那本书的中文版也是“单例模式”,head first设计模式则翻译成了“单件模式”,还有Flyweight,一般都会翻译成“享元模式”,head first设计模式则翻译成了“蝇量模式”,感觉很别扭。所以,还是推荐看英文,反正英文版也很容易看懂。
软件工程:
- 《代码大全》:看过目录,感觉主要讲大型项目如何管理,这个离我比较遥远,所以也就没去看,但不少人都推荐,经典书。
- 《重构:改善既有代码的设计》:没听说过,一同学告诉我的,豆瓣上评价很高,有时间拜读一下。