程序员的自我修养—成为卓越程序员的必备书籍
转自:程序员的自我修养—成为卓越程序员的必备书籍
前言
从小就对计算机比较感兴趣,大学学的是计算机专业,工作以后也是从事的软件编程工作,十几年下来,也屯了不少计算机方面的书籍,我买计算机类书籍有个特点,更倾向于“道”,形而上者谓之“道”,所谓道是一种原理规则类的抽象概念,不管时间如何流逝,其道不会改变,计算机发展了七十年,可直到今天计算机的体系结构基本没有改变,都是冯诺依曼体系结构,虽然还有一种哈弗结构,但是两者还是有很多共性的,今天的pc机性能不知道提升了多少倍,但是最早的X86程序依然能在今天的电脑上运行,为什么?因为PC的体系一脉相承,底层有很多相同的地方。形而下者谓之“器”,计算机领域的“器”我个人的理解是某个领域具体的应用,像office,photoshop等等很多上层应用软件,迭代很快,不同时期会有不同的流行应用。
在这里我就按几个类别介绍一下自己收藏一些经典书籍。这些书籍的作者我就不细细介绍了,毫无疑问都是技术大牛,否则不可能写出这些经典著作,我将从自己的阅读感受说一些值得买的理由。
计算机原理类
编码-隐匿在计算机软硬件背后的语言
这本书最早我是在网上看的PDF版,之前的名字叫编码的奥秘,作者同时也是另一本经典书籍《Windows程序设计》的作者,这本书最大的特点是将计算机原理用很简单的儿时游戏来说明,把复杂的概念简单化,不像大学计算机原理教材那么生硬死板,让你感觉其实计算机原理并不是那么晦涩难懂,非常好的计算机入门读物,同时也能让你对之前学过的计算机原理课程有更独特的理解。
深入理解计算机系统
国内外一众牛逼的大学指定的计算机体系结构教材,最大的特点是从程序员的角度来解读计算机体系结构,不像之前的教材,更多是从电子系统结构的角度来描述计算机系统,造成软硬件的脱离,从而让人难以理解,里面还穿插了不少计算机史上有趣的故事,挺有意思的,
计算机系统-系统架构与操作系统的高度集成
另一本视角独特的计算机体系结构书籍,主要介绍了计算机系统与操作系统之间的联系,如何通过底层实现上层应用,操作系统上的一些功能是如何通过底层硬件实现的。这种联动的描述能更容易让人理解两者之间的关联,你会明白硬件上的一些功能不是拍脑门弄出来的,而是为上层某些应用服务的。
现代操作系统
操作系统领域的经典书籍,当年Linus就是看了这本书写出了Linux,就冲这点,你就知道这本书多牛,不过话说回来,如今我看了还是写不出操作系统,但是能让我更深刻的理解操作系统是如何运作的,不管什么操作系统,内核干的活其实基本差不多。
汇编语言类
汇编语言
这本汇编语言是国内为数不多的写的通俗易懂的汇编入门书籍,没有晦涩的概念,通过一个一个简单的例程,实际操作,让你理解程序底层是如何运作的。
X86汇编语言从实模式到保护模式
上本书看完做完后,进阶就靠这本书了,深入全面的介绍了X86处理器在实模式和保护模式下的工作原理,让你直接控制硬件而不是通过操作系统或者其他应用软件来操作,对下加深对计算机体系的理解,对上加深对操作系统的理解。
X86/X64体系探索及编程
这本书我真是收藏的,没打算看完,除非你是做操作系统,否者真的不用钻这么深了,前面两本汇编书籍足够你理解需要用到的底层知识了。这个也就是碰到问题了,翻下看看相关的知识点。
琢石成器-Windows32位汇编程序设计
这个才是用来进一步进阶的,前面玩的汇编都是为了学习理解,没太大实用性,这个可是正儿八经能运行的32位汇编。需要用到这个的领域也不多,基本是加密,逆向工程,病毒分析,一般人用不上。我也没怎么看,收藏的。
编程卓越之道
这本书的特点也是通俗易懂,用汇编语言的思想设计一种类汇编的高级语言,通过这种高级汇编让你理解汇编语言。有点反其道而行之的感觉,适合学过C语言但没有学汇编的人,可能是思维方式的问题,我还是觉得王爽老师的思路适合国内学生。
C语言/C++
C Primer Plus
C语言的经典,值得收藏的好书,没学过的适合入门,学过的对某个概念不理解可以查阅,C码农案头必备。
C++ Primer Plus
C++语言的经典,值得收藏的好书,没学过的适合入门,学过的对某个概念不理解可以查阅,C++码农案头必备。
就是这么简单,经典无需多言,这两种语言几十年经久不衰必有过人之处,C++虽复杂,却是面向对象语言集大成者,学好这两种语言,不管再学哪一种编程语言都会触类旁通。
编程思想
程序员的自我修养
这本书主要介绍了系统软件的运行机制和原理,让你深入理解程序与操作系统是如何运作的,一个程序是如何在操作系统上运行起来的。国内几个大牛合著的,通俗易懂。
算法导论
这本书我也是收藏的,数据结构的经典之作,研究算法的案头必备,但对我这种主要做控制的码农用处不大,但是书是好书,值得收藏。
编译原理
这本书我能说我是装13的吗?毕竟有几个码农是写编译器的呢,这玩意不是一般人弄得,不过毕竟干这行,没事翻翻理解编译器原理对编程也是大有好处的,直到什么样的代码能让编译器效率更高。看看这版本更新的节奏就知道多牛逼,好了,我还没看,是摆着膜拜的。
UNIX环境高级编程
这本书可不是只为UNIX服务的,其实更多的是为Linux服务,毕竟Linux是一种类UNIX操作系统,两者本质是相通的。
UNIX编程艺术
Unix的经典书籍,更多的讲的是编程思想,全书有点像讲故事,看着没那么累,Linux程序员必备的案头书。
个人工作用书
ARM Cortex-M3与Cortex-M4权威指南
介绍ARMCortex架构的书,这一系列的处理器占据了工控嵌入式市场的半壁江山,我工作基本大部分是和这类处理器打交道,编写底层驱动的参考必备,官方出品,权威性不容置疑。
嵌入式实时操作系统uC/OS-III
搞嵌入式软件开发的人没有不知UcOS这个操作系统,最早是2代,最早系统介绍这个操作系统的书,并且开源了操作系统代码,在国内行业应用非常广泛,这本书是其最新的第三版操作系统的。
FreeRTOS源码详解与应用开发-基于STM32
现在嵌入式领域最流行的操作系统是FreeRTOS,现在的占有率最高,开源,源码完全公开,同时也提供功能更全面的付费商业版本的,系统更精简,而STM32系列又是Cortex系列里最流行的处理器,资源极其丰富,这两者结合就是嵌入式行业开发的利器,相关从业人员必备参考案头书。
总结
“道”类的书籍和“器”类的书籍各有特点,一个更新很慢,几十年也就几个版本,为什么?根本不需要,之前说了,计算机发展到今天体系上并没有本质区别,没有特别新的改变,自然不用重新编写。一个更新很快,没个两年就会有新的版本,再过个十多年可能有些应用就消失了,被新的取代更新。 所以我更喜欢收藏这些“道”类的书,不管放多久,不管什么时候看,都会有所收获有所感悟。