程序员必读书单 1.0.pdf
文本预览下载声明
目 录
前言
标准
快速通道
程序员必读书单
入门书籍
必读书籍
程序设计
软件开发
个人成长
如何使用这个书单
来自他人的书单
参考
本文档使用 看云 构建 - 2 -
前言
前言
作者 :Lucida
微博 :@peng_gong
豆瓣 :@figure9
原文链接 :http//lucida.me/blog/developer-reading-list/
本文把程序员所需掌握的关键知识总结为三大类19个关键概念 ,然后给出了掌握每个关键概念所需的入门
书籍 ,必读书籍 ,以及延伸阅读。旨在成为最好最全面的程序员必读书单。
前言
Reading makes a full man; conference a ready man; and writing an exact man.
Francis Bacon
优秀的程序员应该具备两方面能力 :
良好的程序设计能力 :
掌握常用的数据结构和算法 (例如链表 ,栈 ,堆 ,队列 ,排序和散列 );
理解计算机科学的核心概念 (例如计算机系统结构、操作系统、编译原理和计算机网络 );
熟悉至少两门以上编程语言 (例如C++ ,Java ,C# ,和Python );
专业的软件开发素养 :
具备良好的编程实践 ,能够编写可测试 (Testable ),可扩展 (Extensible ),可维护
(Maintainable )的代码 ;
把握客户需求 ,按时交付客户所需要的软件产品 ;
理解现代软件开发过程中的核心概念 (例如面向对象程序设计 ,测试驱动开发 ,持续集成 ,和持
续交付等等 )。
和其它能力一样 ,程序设计能力和软件开发素养源自项目经验和书本知识。项目经验因人而异 (来自不同
领域的程序员 ,项目差异会很大 );但书本知识是相通的——尤其是经典图书 ,它们都能够拓宽程序员的
视野 ,提高程序员的成长速度。
在过去几年的学习和工作中 ,我阅读了大量的程序设计/软件开发书籍。随着阅读量的增长 ,我意识到 :
经典书籍需要不断被重读——每一次重读都会有新的体会 ;
本文档使用 看云 构建 - 3 -
前言
书籍并非读的越多越好——大多数书籍只是经典书籍中的概念延伸 (有时甚至是照搬 );
意识到这两点之后 ,我开始思考一个很功利的问题 :如何从尽可能少的书中 ,获取尽可能多的关键知识 ?
换句话说 :
优秀的程序员应该掌握哪些关键概念 ?
哪些书籍来可以帮助程序员掌握这些关键概念 ?
这即是这篇文章的出发点——我试图通过程序员必读书单这篇文章来回答上面两个问题。
本文档使用 看云 构建 - 4 -
标准
标准
标准
进入必读书单之前 ,我先介绍下书单里的书籍选择标准和领域选择标准。当然你也点击这里直接跳转到书
单开始阅读。
书籍选择标准
1. 必读 :什么是必读书籍呢 ?如果学习某项技术有一本书无论如何都不能错过 ,那么这本书就是必读书
籍——例如Effective Java于Java ,CLR via C#于C# ;
注意我没有使用 “经典”这个词 ,因为经典计算机书籍往往和计算机科学联系在一起 ,而且经典
往往需要10年甚至更长的时间进行考验 ;
2. 注重实践 ,而非理论 :所以这个书单不会包含过于原理性的书籍 ;
3. 入门—必读—延伸 :必读书籍的问题在于 :1. 大多不适合入门 ;2. 不够全面。考虑到没有入门阅读和
延伸阅读的阅读列表是不完整的——所以书单中每个关键概念都会由一本入门书籍 ,一本必读书籍
(有时入门书籍和必读书籍是同一本 ),和若干延伸阅读书籍所构成。
概念选择标准
1. 全面 :全面覆盖软件开发中重要的概念 ;
2.
显示全部