当前位置: 首页 > news >正文

CSAPP,永远滴神!

大家好,我是小林。

今天跟大家聊聊《深入理解计算系统》,这本书的英文全称叫:

ComputerSystem:A programer perspective

英文名翻译过来是「程序员视角下的计算机系统」,也被简称为 CSAPP。

可能大家以为这本书是讲操作系统的,我最开始也以为是这样。后面当我开始啃这本书的时候,发现我大错特错,它远不止我想的那样。

这本书是从程序员的角度学习计算机系统是如何工作的,通过描述程序是如何映射到计算机系统上,程序是如何执行的,以及程序效率低下的原因,这样的方式可以让大家能更好的知道「程序与计算机系统」的关系。

CSAPP 涵盖的内容非常多,有计算机组成 + 操作系统 + 汇编 + C语言 + Linux系统编程,涉猎的领域比较多,是一本综合性的书,更是一本程序员修炼内功的指引书。

第一章「计算机系统漫游」内容,就很好的把程序与计算机系统有哪些关系都阐述清楚了,一下就知道了计算机系统的整个脉络,把一些零散的知识点都串了起来。

在国内已经有很多高校开始采用这本书作为大一或大二的教材了,采用用这本书作为教材的学校,真心给你们点个赞。

因为这本书其实可以给计算机专业的同学指明了一个很好的计算机基础学习方向,这样后续在单独学计算机组成、操作系统等这些独立的科学的时候,会更清楚知道它们在计算机里处在的位置和作用。

CSAPP 主要包括以下内容:

  • 信息表示(如何使用二进制表示整型、浮点数等);

  • C 和汇编语言的学习(通过汇编语言更深入地理解C语言是什么);

  • 计算机体系结构(存储层次结构、局部性原理、处理器体系结构);

  • 编译链接(C语言如何从文本变成可执行文件、静态链接、动态链接);

  • 操作系统的使用(异常控制流、虚拟内存、多个系统调用介绍);

  • 网络及并发编程(并发的基本概念、网络相关的系统调用的介绍)。

那学这本书需要什么基础呢?

这本书的作者已经在开头跟大家说清楚了,只需要有 C 语言基础,即使你没学过汇编、计算机组成、操作系统也是可以的。

前面我也提到 CSAPP 是一本程序员修炼内功的指引书,为什么说是指引书呢?

CSAPP 是计算机原理 + 操作系统 + Linux 系统 + 汇编的一个大杂烩,它不是深入理解汇编、深入理解操作系统、深入理解计算机原理,所以它不会在某个知识点给你涉及很深,比如:

  • 虽然讲了虚拟内存,但是并没有说各种页面置换算法,这部分内容得我们去看操作系统相关的书;

  • 虽然讲了 Cache,但是并没有说缓存一致性协议,这部分内容得我们去看计算机组成相关的书;

  • 虽然说了链接,但是讲的内容比较表面,要想深入这块内容还是得看看《程序员的自我修养》这本书;

  • 虽然说了 Linux 系统的 I/0 和网络编程,但是只是说了几个简单案例,要想深入理解这些内容还得看《APUE》和《UNP》这两本;

  • 没有提及操作系统中的文件系统、调度算法等。

但是 CSAPP 会给我们建立一个计算机系统的体系,好让我们在后面对体系里的每一个支点往下深入。

读了这本书,你后面在写代码的时候,会有不一样的视角,你会开始思考代码的底层原理,而不是把计算机系统当作一个黑盒子,跑完代码就完事的那种想法

当然,单纯看书会很乏味,我们可以结合视频一起学。这本书的视频课程是国外老师录制的,但是在 b 站已经有好人帮我们做了中文字幕,看了这视频,相当于在国外上了一门计算机课的感觉。

B 站地址:https://www.bilibili.com/video/BV1iW411d7hd

如果你是在校生,有了一定 C 语言基础后,非常建议你就开始看这本书,有精力也可以做做 CSAPP 的 lab。越早开始看,你的收益就越大,因为当计算机体系搭建起来后,你后面再深入每一个课程的时候,你会发现学起来会比较轻松些。

对于已经工作了,但是计算机系统没有一个清晰认识的读者,也可以从这本书开始一点一点学起来,这本书是很厚,但是并不一定要把书完完看完,每个章节的知识点还是比较独立的,有关硬件的章节我们可以选择跳过。

我这里挂个购买链接,对这本书有兴趣的同学,可以直接购买:


扫码关注【华章计算机】视频号

每天来听华章哥讲书

更多精彩回顾

书讯 | 6月书讯 | 初夏,正好读新书

资讯 | 《数据安全法》表决通过!最新解读来了

书单 | 8本书助你零基础转行数据分析岗

干货 | 当机器学习遇上隐私保护,聊聊联邦学习和分布式机器学习

收藏 | 终于有人把卷积神经网络(CNN)讲明白了

上新 | 【新书速递】打通数据科学三要素——数据科学实战性手册

赠书 | 【第61期】盘点云计算领域不可不读的9本书

点击阅读全文购买

相关文章:

  • 周志明:《凤凰架构:构建可靠的大型分布式系统》
  • 【第62期】学会数据分析,抢占职场风口机遇
  • 腾讯数据科学家详解用户选择行为分析核心模型
  • 【新书速递】人人可懂的深度学习
  • 开发人工智能为什么要用Python?
  • 【新书速递】首本零代码书籍问世
  • MySQL 十大常用字符串函数
  • 手把手教你用Python求最大值和最小值
  • TIOBE 7 月编程语言排行榜:C、Java 和 Python 争夺第一
  • 【新书速递】嵌入式Linux驱动领域开发的实战指南
  • 2021半年盘点,这些经典更新了!
  • ​2021半年盘点,不想你错过的重磅新书
  • 【第63期】机器人时代已来!推荐几本机器人学硬核好书
  • Netflix正在搞的混沌工程到底是什么?终于有人讲明白了
  • 一文了解滴滴与蚂蚁金服开源共建的SQLFlow
  • [译]如何构建服务器端web组件,为何要构建?
  • Druid 在有赞的实践
  • Git同步原始仓库到Fork仓库中
  • Invalidate和postInvalidate的区别
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • php的插入排序,通过双层for循环
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • Python 反序列化安全问题(二)
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 模型微调
  • 深度解析利用ES6进行Promise封装总结
  • 我有几个粽子,和一个故事
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 自制字幕遮挡器
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • k8s使用glusterfs实现动态持久化存储
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • #etcd#安装时出错
  • #if 1...#endif
  • #考研#计算机文化知识1(局域网及网络互联)
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (2015)JS ES6 必知的十个 特性
  • (6)设计一个TimeMap
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (九)信息融合方式简介
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)Linq学习笔记
  • .NET CF命令行调试器MDbg入门(一)
  • .net 验证控件和javaScript的冲突问题
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .NET6 命令行启动及发布单个Exe文件
  • .NET大文件上传知识整理