给新手程序员和学生的书籍推荐

毕业六年,专职从事开发三年,现在回想一下当年上学的时光,觉得在学习程序开发的道路上走了不少弯路,当时真是缺少一个指路人。

现在基本脱离了新手区成为了不那么新的手,为了不让后来人重蹈覆辙,推荐一些书籍给大家,这些书都是毕业后看过的(绝大部分是从事开发工作三年来看的)、有意义的好书,附本弱B的简评

 

排名不分先后

 

与特定语言不相关的书

1. 《代码整洁之道》(英文名:Clean Code,下同)

学会语法后第一本该看的书!

它会告诉你原先在学校课本上那些int a, bc;/*啊,白痴!*/ int funA();之类的写法是多么的荒谬!

当然在看的过程中会有许多不明白的地方,把这些不明白的地方当成你继续前进的路标

 

2. 《重构:改善既有代码的设计》(Refactoring: Improving the Design of Existing Code)

许多书里都会提到这本书,它会告诉你如何去写易读易懂的代码

 

3. 《程序员修炼之道》(The Pragmatic Programmer)

坊间给这本书起的别号为:代码小全,以对应那本著名的《代码大全》。不过我既然看过小的了就没再看大的。

整本书描述了程序员的哲学、程序员应具备的技能、程序员应有的工作态度,可就是没详细地告诉你怎么去做到这些。

书中的80多条提示字字真言!书中有许多有趣的类比,破窗户和煮青蛙理论深得人心

 

4. 《敏捷软件开发:原则、模式与实践》(Agile Software Development: Principles, Patterns, and Practices)

本书文献编号为PPP或PPP02(Java、C++版)、PPP05(C#版),所以我通常亲切的称它为:3P

这是一本名为讲敏捷,实为讲OOD和OOP的、极为面向实际应用的好书。

MarkIV咖啡机那一章的抽象过程令人叹为观止,而且本书还深入浅出地讲解了最常用的设计模式。有人认为3P上讲的设计模式与GoF相比不全,但是3P里讲的的确是最常用的,其它未出现的3P中的DP基本都不怎么用。

本书的C#版增加了UML讲解,同样是面向实际应用,把庞大的UML体系中最有可能用到的数种图形单独拿出来讲解,未讲到的部分读者根本不用去管它们了

3P这书还有一个神奇的地方:当你水平不够的时候,你会觉得这书超级简单;当你水平增长之后,你会觉得本书到处是坑,许多一句话带过去的东西蕴含了惊人的智慧。所以,本书绝对不是那种读一次就扔掉的书。

 

5. 《企业应用架构模式》(Patterns of Enterprise Application Architecture,简称PoEAA)

这本书有些尴尬,因为当你水平和经验足够的时候,PoEAA上讲的东西你全明白,甚至都明白它们应该怎么应用,在哪些场景下应用;可是当你水平不够(或者没遇到实际场景)的时候,你是万万不可能看得懂这本书的。

总之,如果遇到了实际的问题可以稍微参考一下PoEAA吧。

 

6. 《xUnit Test Pattern》

先说一句:千万不要去买本书的中文版!除非你想打击你对汉语水平掌握程度的信心!

本书教你如何写单元测试,说的粗鄙一点:你TMD就应该照这本书的要求来写单元测试!

如果你正在使用TDD开发,如果你正在写单元测试却遇到了以下的情况:单元测试运行速度慢、单元测试有时能跑过有时跑不过、单元测试不可维护等等问题,来看这本书吧

 

7. 《深入理解计算机系统》(Computer Systems: A Programmer's Perspective,简称CSAPP)

如果你是学生、如果你有许多空闲时间、如果你是一名C/C++开发者,请完整的阅读本书!

如果你从事其它方面的开发,请参考老赵的书评

本书讲的不深,但是讲的面却很广,它可以让你明白许多计算机系统的基础知识。(比方说IEEE浮点数看似奇怪的Round逻辑的原因等)

 

8. 《离散数学及其应用》(Discrete Mathematics and Its Applications)

如果你是学生或者你有许多空闲时间并且你想学习算法,本书是引路者。

这本书不仅仅讲的是离散数学,还包括概率论等学习算法的必备知识。

如果你是学生,仅仅是想通过离散数学的考试,那么《离散数学导学》(Discrete Mathematics by Example)更适合你

 

9. 《算法导论》(Introduction to Algorithms,简称CLRS)

首先我要说:CLRS不难,真的!尤其是在抛开所有数学证明部分之后!(其实要看懂所有的数学证明部分也不难,不过要先多学一些数学方面的知识。本弱B不是学数学的也一样对着公开课视频把本书前1/3的数学部分弄明白了80%)

你完全可以用这本书来学习数据结构,你也完全可以用这本书算法研究部分介绍的算法来解决实际问题!如果你的目标是M$、Google等大公司,本书更是必读的课本!

 

与特定语言相关的书

       C#(纯C#,不包括ASP.Net、Win Form、WPF等)

        1. 入门:《C#本质论》(Essential C#)

    C#入门必读,超级简单超级傻瓜

 

        2. 提高:《深入理解C#》(C# in Depth)、《CLR via C#》

    建议首先阅读《深入理解C#》,当然,你要写高效率和C#代码,《CLR via C#》也是必读的,就好比你想写高效率的C/C++代码,汇编也是你必学的一样

 

       JavaScript

        1. JavaScript高级程序设计(Professional JavaScript for Web Developers)

    JavaScript入门必备。如果你不是一名专业的前端开发人员,那么你不需要买犀牛书(JavaScript权威指南,JavaScript: The Definitive Guide)了,犀牛书坑太多了

 

        2. JavaScript语言精粹(JavaScript: The Good Parts)

    JSON的发明人Douglas Crockford的书,字里行间透露着“你TMD就该这么用JavaScript”的霸气!

 

        3. 编写可维护的JavaScript(Maintainable JavaScript)

    告诉你如何在网页上正确地使用JavaScript操作DOM

posted @ 2013-06-28 21:11  算法不好玩儿  阅读(3419)  评论(1编辑  收藏  举报