百万年薪技术大佬的读书之旅
作为一个 IT 从业人员,持之以恒的学习是这个行业永远无法避免的行业特性,也是 IT 技术人员为了能避过 35 岁大限不得不一直奋进的必做之事。
在当今这个时代里,学习有多种方式,视频、播客、技术文章等等等等。但是,无论如何,一本好书,绝对是学习中无论如何不可避开的最大助力。
我读过许多许多的技术好书,学习了各种架构知识、设计模式,还有各种最佳实践和中间件原理。
但是,何为好的技术书籍?不同种类的技术书籍有不同的技术特色。但是也无外乎以下几点:
写的深入浅出
对自己的能力提升能有很大的帮助
对自己的职业生涯有一定的促进
对自己的技术观念有巨大的革新
要找到好的技术书籍并不是件容易的事情,很多时候,往往买来的书籍并不如意。所以,为了节省时间,在这里,四猿外给大家推荐一些我认为的比较经典的书籍。
与其说是罗列一些书,不如说是一次读书之旅。
1. 《C 程序设计语言典藏版套装》
首先,由于很多经典书籍大部分是用 C 语言或者类 C 语言实现,所以,C 语言本身应该作为计算机学习前的任何前置基础。
C 语言设计最经典的书籍《C 程序设计语言典藏版套装》是一定要提及的。
这本书原著即为 C 语言的设计者之一 DennisM.Ritchie,另外一位作者则是著名的计算机科学家 BrianW.Kernighan。
这本书是 C 语言最经典的著作。我们现在见到的大量论述 C 语言程序设计的教材和专著均以此书为蓝本。
这本书本身比较薄,内容充实紧密,花费不长的时间即可读完。对于程序员来说,更是耗费两三天即可读完。
2. 《深入理解计算机系统(原书第 3 版)》
当完全了解 C 语言特性后,我们自然要开启一系列的计算机基础知识之旅。
首当其冲的自然是神书《深入理解计算机系统(原书第 3 版)》
这本书评分高达 9.9 分,可以说是豆瓣上计算机相关书籍中评分最高的一本了。
这本书像一张网一样,从计算机硬件讲起,描述了一台主机中都有什么部件,主板上有什么零件,CPU、内存和硬盘之间怎么连接起来的。
这本书还描述了一个程序是怎么从一个文本文件被编译、链接变成汇编码,又是怎么从汇编语言变成机器码,以及怎么被计算机执行的。
同时,这本书还讲到了计算机网络、组成原理、进程、线程等等。它从硬件讲到软件,从里讲到外,它把我们整个计算机生涯中可能遇到的知识给组织起来了。它就像我们整个职业生涯中所需要的所有基础知识的总纲,有了总纲,我们才能更有调理更有自己的节奏的去进一步学习各种总纲中的知识。
但是,这个总纲对新手甚至对一些基础知识不扎实的程序员可能都不是那么友好,所以建议配合哈佛大学的 CS50 课程一起配合为佳。
当我们看完了总纲之后,我们就可以按照一个固定的体系去安排我们自己的学习计划了。
3. 《算法导论(原书第 3 版)》
在我们学习完计算机系统后,我们需要明白,计算机能运行本质是通过运行在硬件之上的软件来实现的。我们这些 IT 从业人员的职业生涯也主要就是围绕着这些计算机软件展开。
而计算机软件中最为核心的就是其数据结构和算法。谈到这些,我们就自然需要推荐史上最权威最经典的《算法导论(原书第 3 版)》
这本书英文名为"Introduction to Algorithms",有时也被称为 CLRS(取自作者四个人名字的首字母),在计算机领域经典书籍中有时会与 SICP(计算机程序的构造和解释)、CSAPP(深入理解计算机系统)相提并论。
算法导论是国内外公认的算法学习的经典教材,国内外很多知名院校如 MIT、CMU 都有开《算法导论》的课。
这本书号称:
如果一个人能用一种语言独立完成 90% 以上的算法,那么全世界工作就可以随便挑选了。
如果我们了解了数据结构以及相关算法,那么随后我就需要知道这些数据结构与相关算法的最佳实践:操作系统
4. 《现代操作系统(原书第 4 版)》
为什么我们要学习操作系统?
我们学习操作系统并不是为了去实现一个操作系统。我们学习操作系统可以知道操作系统能做什么,在实际项目中,我们对一些莫名其妙的问题,我们就能更好的归类,更好的追踪,更快的去解决这些问题。
同时,操作系统可能是我们职业生涯中可以遇见的最复杂的软件。
作为复杂的软件,它的设计,它的接口,它的抽象,它的体系架构都是我们自己做软件设计,做系统设计,做架构设计的最佳实例。
另外,操作系统本身也是并发并行的最佳实践。这里,你也可以学习到时序,分时,信号量,各种调度算法。明白了操作系统的并发,你再遇到任何并发问题,都可以从容的迎刃而解了。
学习操作系统我推荐:《现代操作系统(原书第 4 版)》
这本书对进程、内存管理、文件系统、I/O 都有很详细地讲解,最后还有专门的的章节介绍 Linux 和 Windows Vista 系统。
与国内的教材相比其优点主要在于并非是知识点简单的罗列,而是通过一个个问题去引导出用以解决这些问题的技术,从而加深读者的理解。
5. 《计算机网络:自顶向下方法(原书第 7 版)》
知道了操作系统,我们就需要去了解当代社会最重要的发明:计算机网络。
《计算机网络:自顶向下方法(原书第 7 版)》
这本书对于网络就像是深入理解计算机系统这本书对于整个计算机基础知识,是对整个计算机网络体系的一个总纲。
你从这本书中可以学习到现代网络是如何通信的,最初网络是如何设计的以及为何要这样设计,协议和协议是如何互相沟通的。
这本书同样也需要在线课程搭配着来,可以参考如下两门课程(B 站上可以搜到):
国防科技大学-计算机网络(国家级精品课)
斯坦福大学 Introduction to Computer Networking
6. 《TCP/IP 详解(套装共 3 册)》
当我们学懂了计算机网络之后,你会发现,这个网络的灵魂是网络通信和数据传输。而能达到这种目的,通信之间所凭借的核心就是 TCP/IP。
在实践中,我们会发现,我们只有深入理解了 TCP/IP 协议,才能从容的面对各种复杂混乱的网络问题,才能在生产中顺利的当我们的技术大牛,为公司各种项目的顺利进展保驾护航。
TCP/IP 的学习不用说,只能是唯一的经典书籍《TCP/IP 详解(套装共 3 册)》
要注意的是,这是一套书,其中卷一是最经典的,需要反复看。
对于几个基础的协议一定要非常清晰,比如 IP、TCP、UDP、ICMP,一定记住每个协议所有字段细节,ping、traceroute 的工作原理。可以做一些小实验。
卷二、卷三更多偏重于编程细节,可以粗看了解内容即可。
7. Java 相关的几本书
当我们学会了以上的基础知识,我们想成为一个技术超级大牛,还需要做好自己的本职工作才好。
以上的基础知识给与我们在日常技术工作中,能快速设计系统,快速解决问题的超级能力。我们有了这些超级能力,还需要一套非常有用的工具,去把这些超级能力落地——这就是编程语言。
我之前是一个 Java 工程师,所以,我会在下面给大家推荐一下大家能深入掌握 Java 这门语言的必备好书。
7.1
《深入理解 Java 虚拟机:JVM 高级特性与最佳实践(第 3 版)》
这本书不用多说,这是每个 Java 程序员要从中级到高级必须看的一本书。
7.2
《Java 并发编程实战》
这本书,如果你还没有读通、读懂,那么 Java 的多线程开发对你来说难度会不小。
7.3
《Effective Java 中文版(原书第 3 版)》
这本书不用说了,绝对是一名热爱代码、追求代码质量的开发人员的必备书籍。
最后
上面的这些书,不仅有计算机基础知识的内功,也有 Java 编程语言这类的外功。我们如果真的想靠自己的技术拿到百万年薪,那么以上这些书对你来说绝对是助力。
版权声明: 本文为 InfoQ 作者【四猿外】的原创文章。
原文链接:【http://xie.infoq.cn/article/ea8db711207f35e5a3aac293e】。未经作者许可,禁止转载。
评论