这是一个,只要是程序员,不管哪个方向、哪个岗位,都可以看、应该看的书单。
本书单主要参考:
- Teach Yourself Computer Science(中文)
- 大学计算机专业课程,比如:清华大学计算机系课程攻略
- 非科班程序员
- 想转计算机相关专业的在校生
- 想提前自学的计算机专业在校生
- 想要补习基础的程序员
一切工科专业都是数学的分支,数学才是基础中的基础,编程只是数学理论的实现与应用。
书中所讲的线性代数 + 图论 + 数论,会出现在计算机行业的方方面面。这也是后续各种算法的理论基础。
这是计算机系统的入门级书籍,“它告诉我们计算机是如何设计和工作的,操作系统有哪些重点,它们的作用又是什么”。
任何软件的基础都是硬件,这本书涵盖了《计算机组成原理》的内容。如果你在自学操作系统相关知识时,如果产生了“它为什么是这样设计?”的问题,或者在这里能找到答案。
在学习操作系统相关的知识前,学习这本书是非常有必要的。
操作系统是最复杂、最大、最优雅的软件之一。
作为从事程序设计的程序员来说,操作系统是必须要学习和研究的软件。
在没有更新的程序设计风格和模式出现之前,面向对象程序设计都是每一位程序员应该学习的基础知识。
算法的重要性就不必多说了,这里需要重点说明一点。
本书从某些方面来说与《数据结构与算法分析》(豆瓣入口)差不多,大家可以二选一,选择标准如下:
- 如果一点数据结构基础都没有的,建议选择《数据结构与算法分析》,因为这本书是先讲数据结构的,侧重点也是数据结构,大学课程一般也是选择这个。
- 如果有一定的数据结构和算法基础的,建议选择《算法导论》。
程序员必须要学设计模式,学设计模式必看这本四人帮的设计模式。
读这本书的最佳实践是:
- 一边看,一边用自己最熟悉的语言实现;
- 实现出例子之后,再配合书籍去思考这个设计模式的用处;
- 结合自己的工作经历去思考,更适合在工作中碰到时再回来翻这本书。
每个人不可能独自存活,人类需要沟通。同样,计算机的软件、硬件也需要沟通,也叫通信。这本书就是讲这方面的理论基础的。
虽然这本书主要是讲互联网网络通信的理论基础的,但只要啃下这本书,就一通百通。
虽然不会经常碰到,但计算机安全的重要性毋庸置疑,这是所有程序员必学的基础知识。
建议学完《计算机网络》之后,再学《计算机安全》。
数据库是程序员接触最多的系统之一,没有理由不学习和研究这个优秀的软件。
相对底层和深入的知识,不一定所有程序员都会涉及到,但是,学习这方面的知识必有收获。
这是本书单唯一一本不在大学计算机专业课表的书,源自 Teach Yourself Computer Science 推荐的书籍。
软件系统本质是数据处理系统,学习数据处理的基础知识和原理是非常有必要的。