计算机专业书籍推荐
学了几年的编程,也买了不少专业书籍,虽然谈不上自己技术有多厉害,但是砸了那么多银子买书还是积累了一些对购书的理解与看法:
关于计算机专业书籍,个人比较推荐去购买和阅读一些大家耳熟能详的经典书籍。这些书籍经得起时间考验,每次我阅读都能学到新的内容,这些内容可能是前几次学习并没有完全理解的,也有些是经过实践后有了经验与体会的,所以我推荐购买一本保留在身边,可以随时拿出来反复阅读。
目前市场上出现频率最高的书籍可能都是关于框架学习这类的,通常我们对这些书籍的了解可能完全来自于各种社交媒体的推广。我个人的观点是学习各种框架技术并不一定需要依靠这类书,我们可以根据自身情况考虑。其实很多讲解框架类的书籍,出版发行的时候往往已经过时,有些垃圾一点的书事实上就是官方文档的机翻汉化而已,这些书往往翻过一遍就不会再看第二遍。学习各种框架最好的办法就是照着官方文档操作一遍,除非碰到那种官方文档写的很烂的。
C++
- 《C++ Primer Plus》
自己学习 C++ 的第一本书(不算大学里的教学用书)。书中错误还是比较多的,代码标准为 C++98,优点是每章节有大量的代码供读者参考。 - 《C++ Primer》
同样是 C++ 入门书籍,但是对于初学者这本书可能更难上手。相比《C++ Primer Plus》,这本书理论内容更多,提供的代码参考较少,同时代码标准为 C++11。(我实际上更推荐这本)。 - 《A Tour of C++》
虽然中文译名叫做《C++ 语言导学》,但是这本书适合于学过 C++98,想要快速了解现代 C++ 语法的程序员。 - 《现代 C++ 教程:高速上手 C++11/14/17/20》
同样是快速学习现代 C++ 的书籍,建议作为《A Tour of C++》的补充阅读。 - 《C++ 程序设计:原理与实践》
难度介于入门和进阶之间,适合有 C++ 语言基础的程序员,但本书的重点不在于代码,而是以讲解理论思想为主。 - 《C++ 高级编程》
C++ 进阶书籍,深入讲解 C++ 各个版本的语言标准,同时也介绍了软工相关的各种最佳实践。 - 《STL 源码剖析》/ STL 标准库与泛型编程
- 《C++ 并发编程实战》
- 文章:《C++ 并发编程(从 C++11 到 C++17)》
Python
- 《Python 基础教程》
这是一本基础入门书籍,类似的还有: - 《Python 工匠:案例、技巧与工程实践》
虽然可以算作是 Python 的入门书籍,但更适合已经有一些 Python 编程基础和项目经验的读者。 - Python GUIs
一个用于学习 PyQt / PySide 图形界面开发的网站 - 《Python Cookbook》中文翻译
Go
JavaScript / TypeScript
- 现代 JavaScript 教程
学习 JavaScript 不需要看什么理论书籍,这个教程网站就足够了。 - TypeScript 入门教程
C
- 《C 程序设计语言》
经典书籍《K & R》,内容简单易懂,非常适合用于 C 语言的快速入门,但因为该书比较古老(早于 C89 标准的出现),所以涉及的语言语法非常有限,建议继续阅读下面一本书作为补充。 - 《C 语言程序设计:现代方法(第 2 版 • 修订版)》
这本书非常适合想要学习 C 语言的初学者或任何想要复习巩固和补充 C 语言新标准的人。该书涉及面广泛,从基础知识,代码风格,编程技巧到计算机的认识都有很好的讲解。
Linux
- 《Linux 命令行与 shell 脚本编程大全》
这本书前半部分讲解 Linux 常见命令,后半部分讲解如何编写 Shell 脚本。学习 Linux 最好的办法就是在虚拟机里安装一个 Linux 系统,然后使劲折腾,当你重装过几遍系统后,你就熟悉 Linux 了。
Docker
- 《Docker — 从入门到实践》
一本开源的 Docker 教程。 - 《Docker 技术入门与实战》
相较于上一本书它的内容更详细,但是作为出版书籍,其中的很多内容并不能及时更新。
Git
- Learn Git Branching
以可视化的方式学习 Git。
计算机网络
- 《计算机网络 自顶向下的方法》/ 中科大郑烇、杨坚课程
相当经典的教材,同时中科大的配套课程通俗易懂,两者结合着学基本就没什么难度了。 - 《计算机网络》
与《自顶向下》内容非常相似,只不过讲解顺序是自底向上,但算是质量比较上乘的国产技术书籍。 - CS144: Introduction to Computer Networking
该课程的实验十分著名且硬核,一步步教你实现一个 TCP 协议栈。 - 《TCP/IP 网络编程》
网络编程的入门书籍。 - 《Linux 高性能服务器编程》
Linux 网络编程实践的入门书籍。 - *《图解 HTTP》
浅显易懂的入门书籍,内容都是点到为止。 - *《Wireshark 网络分析实战》
Wireshark 还是建议边用边学,光看书没什么用。 - *《HTTP 抓包实战》
Fiddler 的使用要比 Wireshark 简单,同样边用边学就好了。
操作系统
- 《现代操作系统》
学习操作系统的入门好书,每个知识点都讲解十分详细,所以从另一方面来讲该书又显得十分硬核,需要反复阅读才有所理解。 - *《操作系统概念》
如果有能力推荐阅读英文版,该书的几版中文翻译口碑都很差。 - 《深入理解计算机系统》
经典书籍,建议反复翻看。
汇编
- 《深入理解计算机系统》第三章 - 程序的机器级表示
这章内容我用来学习 Linux 汇编基础。
编译原理
- 斯坦福大学 - CS143
要是看不进书可以看这门课对应的视频。 - *《现代编译器的 Java 实现》
- *《Flex & Bison》
介绍一种词法分析和语法分析器的使用。 - *《Flex in a nutshell》
快速上手 Flex。
ML & DL
吴恩达 - 机器学习
基本概念学习。《Python 深度学习》第二版
通俗易懂的深度学习入门书,涵盖了深度学习的基础知识、Keras 使用模式以及深度学习最佳实践。同时本书译文流畅准确,是难得的翻译作品。《深度学习入门》
真正的零门槛入门深度学习,教你通过 numpy 快速学会神经网络。
数据结构和算法
- 《算法图解》
没有太多实质性内容,就当作入门概念了解。 - 《数据结构与算法分析(C++ 语言描述)》
上课所用的教材。该书使用的编程语言主要涉及 C++11,及模板、指针和引用,解释上并不是特别详细。
数据库
- 《MySQL 必知必会》/《SQL 必知必会》
看其中一本就可以,主要是讲解 SQL 语法的使用。 - 《Redis 入门指南》
浅显易懂,适合想要快速上手 Redis 的读者。
软件工程
- 《人月神话》
软件工程领域经典必读书籍之一。 - 《构建之法》
邹欣老师所著,涵盖了软件工程所需要了解的大部分知识(至少这本书所涵盖内容其实已经强过我大学开设的软工相关的课程)。 - 《软件工程 —— 面向对象和传统的方法》
算是比较系统地讲解软件工程的各方面内容,但是跟自己所学的软工课程相比,这本书涉及到的内容还是偏少。 - 《图说设计模式》/《深入设计模式》
建议两者结合起来看会比较完整。
Java
- 《Java 核心技术 · 卷 I》 和 《Java 核心技术 · 卷 II》
当年学习 Java 的入门书籍。
其他
- 《浪潮之巅》、《硅谷之谜》、《智能时代》 等。
当科普图书看就行,just for fun。 - 《我是一只 IT 小小鸟》
这本书里都是一些前辈的大学经历总结,适合大一新生阅读,虽然这本书出版时间比较久远,但书中很多内容对现在的国内大学环境还是非常适用。对于准大学生而言,你会知道大学四年里哪些需要去做,哪些不应该做。 - 《程序员必读书籍 1.0》
另外一篇类似主题的书籍推荐,更加专业和全面。