zoukankan      html  css  js  c++  java
  • 给新手程序员和学生的书籍推荐

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

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

  • 相关阅读:
    700. Search in a Binary Search Tree
    100. Same Tree
    543. Diameter of Binary Tree
    257. Binary Tree Paths
    572. Subtree of Another Tree
    226. Invert Binary Tree
    104. Maximum Depth of Binary Tree
    1、解决sublime打开文档,出现中文乱码问题
    移植seetafaceengine-master、opencv到ARM板
    ubuntu16.04-交叉编译-SeetaFaceEngine-master
  • 原文地址:https://www.cnblogs.com/badly1984/p/3161704.html
Copyright © 2011-2022 走看看