程序员推荐书籍
阅读这些书可以帮助你避免一些常见的陷阱和错误,一些开发人员早期经历的陷阱和犯过的错误;
一、 建议
摘自「讨论一下《C++ 编程思想》这本书」1讨论帖子中的一段,个人很喜欢;
- 学习编程最好的方法之一就是阅读源代码;
- 不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;
初学编程建议
- 浮躁的人容易说:XX 语言不行了,应该学 YY;——是你自己不行了吧!?
11.浮躁的人容易问:我到底该学什么;——别问,学就对了; - 浮躁的人容易问:XX 有钱途吗;——建议你去抢银行;
- 浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
- 浮躁的人容易问:XX 和 YY 哪个好;——告诉你吧,都好——只要你学就行;
- 浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
- 在任何时刻都不要认为自己手中的书已经足够了;
- 看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
- 别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
- 和别人一起讨论有意义的知识点,而不是争吵 XX 行不行或者 YY 与 ZZ 哪个好;
- 请看《程序设计实践》,并严格的按照其要求去做;
- 学习编程的秘诀是:编程,编程,再编程;
- 请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
- 把在书中看到的有意义的例子扩充;
- 经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
- 不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;
二、 经典书籍
排名分先后
1.《代码大全 2》
Steve McConnell. Code Complete 2.
它被认为是最好的实用性编程指南之一;书中有数以百计的新的代码示例;
无论你的经验水平,开发环境,还有项目规模如何,这本书都可以给你启迪;
2.《程序员修炼之道》
Andrew Hunt, David Thomas. Pragmatic Programmer.
教程序员使用一组特定的工具(编辑器,对象管理,版本跟踪器)生成某种可在一定环境中(硬件组件上的操作系统)工作的产品(程序);
其中的大多数智慧是不能从大学或培训中学到的;大多数程序员只能通过独立的试验,时间一点点的积累,才能掌握这些所谓的技巧;而本书中,汇聚了很多作者作为软件设计者和代码编写者的职业生涯中发现的真理;
作者的一些实用性建议非常具体;它会更清晰地梳理你自己积累的智慧;
3.《计算机程序的构造和解释》
Structure and Interpretation of Computer Programs.
这本书面向于工程;非常适合于计算机科学课程,以及编程语言和程序设计的入门;
这本书进一步解释了4个最著名的编程语言范式——命令式编程,面向对象编程,基于逻辑编程和应用性编程;
4.《算法导论》
Introduction to Algorithms.
对算法的阐述严谨、全面;
5.《代码整洁之道》
Robert C. Martin. Clean Code.
第一部分:介绍原则、模式和编写整洁代码的方法;
第二部分:包括若干个复杂度渐进的研究案例;每个案例研究就是一个代码整洁的练习;
第三部分:启发式案例;
6.《重构》
Martin Fowler. Refactoring.
指导程序员如何重构原有系统;书中列出了 40 多个常用的重构点,并结合例子进行了分析;书中的示例采用的是 java 语言;
7.《计算机程序设计艺术》
Donald Knuth. The Art of Computer Programming.
Bill Gates:“如果你认为你是一个真正优秀的程序员……那么就去读[Knuth的]《计算机程序设计艺术The Art of Computer Programming》吧……如果你能读懂整本书,那么请一定要给我发简历”;
这本书以基本的编程概念和技术开头,然后聚焦于更具体的信息结构——计算机内的信息表示,数据元素之间的结构关系,以及如何有效地处理这些问题;
8.《编码:隐匿在计算机软硬件背后的语言》
CODE: The Hidden Language of Computer Hardware and Software.
这本书整理了创建和开发复杂系统的大量“魔法”,着重关注低层次的细节;他能帮助你了解自己正在构建什么以及整个程序的工作原理是什么;当你需要深入软件或硬件来解决一个讨厌的 bug 的时候,它就能派上用场了;
书中梳理了许多编程概念——从数字系统的十进制,八进制,二进制到高级语言;介绍了基于包的通信协议和TCP;许多章节讲解了有关硬件的概念,有五个章节涉及到了软件和操作系统,浮点运算和图形用户界面;
9.《编程珠玑(第二版)》
Programming Pearls (2nd Edition).
这本书可以帮助一个人“像一个程序员一样思考”;
每个章节。章节通常以一个实际问题的情景呈现开头;然后,提出各种解决方案和相应的经验教训;写作风格清晰明快;
这本书的目的不是教你一些新的东西,而是帮助你成为一个更好的问题解决者;
10.《设计模式》
Design Patterns.
如果你打算成为一名架构师或系统的设计人员,那么这本书很有用;
这本书被誉为有史以来最伟大的有关于软件开发的书;书中详细讲述了许多不同的设计模式,帮助软件工程师避免和处理行业面临的常见问题;遵照这本书的策略可以助你打造更高品质,灵活和可维护的软件;
传说中的“四人帮”就是这本书,因为它是由四个著名的作者共同编写的;
11.《人月神话》
The Mythical Man-Month.
经典的书,与软件产品开发密切相关;
12.《修改代码的艺术》
Michael Feathers. Working Effectively with Legacy Code.
帮助开发人员,技术管理人员和测试人员掌控遗留系统;
三、 小白指导
参考书
- 《程序员成长路线图:从入门到优秀》
四、 算法
建议
:o: 对常用算法原理和实现务必滚瓜烂熟刷题: 大量刷;同时注意总结,举一反三;
参考书
-
《算法导论》
参见经典书籍; -
Robert Sedgewick,Kevin Wayne. 《图灵程序设计丛书:算法(第4版)》
代码详尽,java 实现;
五、 软件工程
建议
:o: 看书:面向对象,设计模式,编码规范;
:o: 实践:不断对过去写的代码重构。多阅读开源项目的代码等;
:o: 基础要打好;学有余力的可以广泛涉猎领域内不同的方向,挑个喜欢的方向专精;
:o: 没有什么书是必读的,没有什么编程语言是必学的;要学会取舍;
:o: 其实学习最后都要归于实践;
参考书
- 《构建之法》
- 《 软件工程——实践者之路》
新版名字叫《软件工程——实践者的研究方法》 讲软件工程非常好;
参考书——敏捷软件开发
- 《解析极限编程--拥抱 变化》
- 《敏捷软件开发-原则、模式与实践》
- 《高效程序员的45个习惯:敏捷开发修炼之道》
六、 计算机理论
建议
:o: 看书:操作系统,网络,安全,分布式架构等;
:o: 编码:从写简单的 crawler 到实现一个精简的 kernel 等等;
参考书
七、 软件测试
参考书
1.《Google软件测试之道》
2.《持续交付》
3.《软件测试的艺术》
4.《代码整洁之道:程序员的职业素养》
参见经典书籍;
5.《软件测试》
6.《测试驱动开发》
7.《软件测试经验与教训》
8.《探索式软件测试》
9.《捉虫日记》
八、 自动化测试
参考资料
- Jason Roell 著. 小峰 译. 12 本最具影响力的程序员书籍[EB/OL]. https://linux.cn/article-6832-1.html. 2016-01-03/2019-01-03.
- 乐搏软件测试学院. 对于软件工程专业学生有哪些书可推荐[EB/OL]. https://www.zhihu.com/question/19865059. 2018-11-07/2019-01-04.
- xin. 现代软件工程的教材和参考书[EB/OL]. https://www.douban.com/doulist/1204928/. 2011-05-24/2019-01-04.
- 邹欣. 《构建之法》参考书和链接汇总[EB/OL]. http://www.cnblogs.com/xinz/p/4470424.html. -/2019-01-04.
-
我心不死. 讨论一下《C++ 编程思想》这本书[EB/OL]. https://bbs.csdn.net/topics/20147884. -/2019-01-21. ↩
Comments