查看原文
其他

我要吹爆这本书!

编程珠玑 2022-09-07

来源:公众号【编程珠玑】

作者:守望先生

ID:shouwangxiansheng

前言

标题有点夸张了,但是这是我个人强烈推荐的一本书。最开始是在图书馆借的,后来粗略看了第一遍之后,果断入手了,中文版原价是139元,这本书就是大名鼎鼎的CSAPP(Computer Systems: A Programmer's Perspective ),中文版被翻译成了《深入理解计算机系统》。

为什么推荐

目前其中文版的评分为9.8分,可见其优秀程度。那么这本书有哪些特点呢?在我个人看来,主要有以下几个方面:

  • 有深度,但又点到为止。

  • 实践性强

  • 易读,注意这里易读不是简单,而是读起来非常顺畅

  • 第三版印刷质量良心

  • 硬件、系统、软件系统结合,构成一整个框架,让你对计算机有一个整体的认识

讲了什么

那么这本书到底讲了什么呢?

作为一个程序员,你平常所接触到的东西在计算机中处于什么样的位置?你对整个计算机系统有整体的认识吗?本书阐述了一些计算机系统的核心概念。以下问题你能回答吗:

  • 一个hello world从本文内容到运行打印出来hello world经历了哪些过程?

  • 在计算机中,信息是如何表示的?

  • 程序的机器级表示又是怎么样的?

  • 处理器又是如何处理这些指令的?

  • 程序性能应该从哪些角度来优化?

  • 存储器的存储结构是怎样的?

  • 链接是什么?为什么它那么重要?

  • 异常,中断又是怎么回事?

  • 虚拟内存是如何工作的?

  • 文件是如何访问的

  • 网络编程需要注意什么?

  • 并发程序的编写有什么技巧?

没错,本书从计算机的底层,循循善诱,一步步往上介绍,虽然不会面面俱到,但让你对整个计算机体系有一个整体的概念。

来源:公众号【编程珠玑】
ID:shouwangxiansheng

如果你不能回答以上问题,那么看完本书,至少让你知道:

  • 一个程序需要经历预处理,编译,汇编,链接这样的过程,了解进程,线程,虚拟内存,堆,栈,文件,并行和并发等概念。

  • 二进制又是如何构建出现代计算体系,各种数据类型又是如何存储,为什么会有大小端等问题?prinf为什么总遇到一些奇怪的数值问题?

  • 计算机执行指令的过程是怎样的,它们又是如何操纵数据的,那些算术或逻辑操作,条件控制又是如何处理的

  • 处理器执行指令有什么特点,根据执行特点我们可以如何写出性能良好的程序

  • 局部性原理是什么?为什么利用它能够写出性能优异的程序?实际中又该如何写才能极大提高性能?

  • 高速缓存有什么用,命中缓存和不命中缓存有什么差别?

  • 你的多个.c编译后是如何组织在一起的?静态库和动态库有什么区别?elf文件又是什么?

  • 进程是如何创建出来的?什么是上下文切换?信号又是什么?

  • 程序的地址空间是怎样的?内存映射,动态内存分配,垃圾回收都是怎么回事?C程序要注意哪些内存问题?

  • 如何读写文件,重定向是怎么回事?

  • 如何编写网络程序?

  • 并发编程又有哪些实现方式,都有什么特点?

除了知道上面这些内容,你还可以通过每个章节后面的习题进行提高,最后也提供习题的答案。而书中也还有很多地方会给你一些提示,同时里面也会告诉你一些小技巧,如命令行输入man ascii可以得到一张ascii表。

适合哪些人

本书并不适合初学者,而在阅读本书时,最好有一定的Linux/C/C++基础,书中的很多例子也都是C语言实现的。同时,如果你完全没有听过前面提到的各种概念,那么你阅读起来可能也会比较困难,尤其是机器级表示和处理器体系结构章节,对于没有学习过汇编的人来说会相当困难。不过私以为可先关注其他章节。

而看这些有什么用呢?说实话,我也说不出来,不过相信你在遇到一些奇奇怪怪的问题的时候会想起它里面的内容,例如

  • 挂死

  • 无大文件,磁盘占满

  • 内存耗尽

  • 链接出错

  • ……

但是可以肯定的是,你在不同的阶段去读它,都会有收获。

如何阅读

看前言。看书,做题,编写并运行程序。

总结

如果你想成为一个更加优秀的程序员,那么这本书你不应该错过。不过如果想要完全搞懂每个章节的内容,那么你还需要阅读其他相关书籍进行补充,它并不能面面俱到。不过对于了解整个计算机体系来说,它非常优秀了。

不说了,吹吹灰,感觉还没有吹够。

老规矩,公众号【编程珠玑】后台回复【深入理解计算机系统】可获取该书第二版电子版,仅供学习交流,建议购买纸质书籍。

推荐阅读:

学Linux到底学什么?

这本书很优秀,但是不推荐入门

好书推荐-C语言必读

一文带你了解静态库和动态库

关注公众号【编程珠玑】,获取更多Linux/C/C++/Python/Go/算法/工具等原创技术文章。后台免费获取经典电子书和视频资源

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存