构建系统软件三步走,这些书你不可错过!
以5G、人工智能、云计算与物联网等为代表的新一轮科技革命与产业变革正在重新定义我们的信息社会。构建新型信息社会的一个关键因素是坚实的计算机基础设施,这对计算机系统能力培养提出了新的要求。
郑纬民院士在第三届中国计算机教育大会中分享的“培养计算系统高层次人才—从头 研发先进的系统软件”报告中指出,学会系统软件的构建,首先要理解计算机系统的基本原理;其次构建操作系统和分布式系统模块;并且进行工程实践,包括:
阅读阅读优秀的开源代码
能为一些开源项目贡献代码
学习一些新的系统构建语言:现代C++、Rust、GO、Scala等
重复造一些轮子
从头构建先进的系统软件没有想象的那么难,关键是现在就开始做!
如何学会系统软件的构建?构建系统软件三步走,这些经典书你不可错过~
01 基础基础
基础:理解计算机系统的基本原理
01
深入理解计算机系统(原书第3版)
作者:[美] 兰德尔 E.布莱恩特(Randal E. Bryant)
大卫 R. 奥哈拉伦(David R. O'Hallaron)
译者:龚奕利 贺莲
将所有计算机系统相关知识融会贯通,助你成为凤毛麟角的高级程序员的必备神书。如果你研究和领会了这本书里的概念,你将开始成为极少数的“牛人”!
推荐阅读
本书是一本将计算机软件和硬件理论结合讲述的经典教程,内容覆盖计算机导论、体系结构和处理器设计等多门课程。卡内基-梅隆大学、北京大学、上海交大等国内外众多知名高校选用指定教材。本书的最大优点是为程序员描述计算机系统的实现细节,通过描述程序是如何映射到系统上,以及程序是如何执行的,使读者更好地理解程序的行为,以及造成效率低下的原因。从程序员的角度来学习计算机系统是如何工作的会非常有趣。最理想的学习方法是在真正的系统上解决具体的问题,或是编写和运行程序。这个主题观念贯穿本书始终。
02
计算机系统解密:从理解计算机到编写高效代码
作者:[美]乔纳森·E.斯坦哈特(Jonathan E. Steinhart )
译者:张开元、张淼
计算机程序硬件软件从底层实现到高层展现原理讲解
对底层知识的多个主题进行了公平的覆盖
推荐阅读
计算机编程不是抽象的,程序是在机器上运行的。了解计算机如何工作以及程序如何在计算机上运行是成为一名更好的程序员的必要条件。在本书中,资深工程师Jonathan E. Steinhart深入探讨了计算机背后的基础概念,比如计算机硬件,软件在硬件上的行为,如何编写高效的程序,计算机安全基础知识,以及在编写代码时需要考虑的现实问题。本书对底层知识的多个主题进行了公平的覆盖——介绍有助于提高整个系统质量的许多领域的知识(包括计算机硬件、组合逻辑、时序逻辑、计算机体系结构、计算机组成原理、操作系统、系统程序设计等)。
03
计算机系统概论(原书第2版)
作者:(美)派特(Patt,Y.N.)(美)派特尔(Patel,S.J.)
译者:梁阿磊、蒋兴昌、林凌
推荐阅读
本书是计算机科学的经典基础教材。全书以自底向上方法帮助学生理解计算机系统的原理,前半部分阐述了计算机底层结构,后半部分讲解了高级语言编程及编程方法学,主要内容包括数据类型及其运算、数字逻辑、冯·诺伊曼模型、汇编语言、输入和输出、TRAP程序和子程序、C语言编程等内容。
04
计算机系统:核心概念及软硬件实现(原书第5版)
作者:[美] J. 斯坦利·沃法德(J. Stanley Warford)
译者:贺莲 龚奕利
推荐阅读
本书采用七层结构讲解计算机系统的核心概念及软硬件实现方法,关注基础的计算概念而非追踪新的技术进展,并且特别强调通过实践培养学生解决问题的能力。全书以Pep/9虚拟机模型贯穿各章,清晰呈现了各个抽象层次之间的关系,并配有完整的程序示例和丰富的习题。
05
计算机系统的性能建模与设计:排队论实战
作者:[美]莫尔·哈肖尔-巴尔特
译者:方娟 蔡旻 张佳玥 等
源于CMU课程讲义,掌握排队论建模和分析技能
改进计算机系统的设计
推荐阅读
计算机系统设计通常被视为艺术而非科学。本书针对计算机系统设计人员关心的问题,将排队论带回计算机科学中。全书采用“苏格拉底风格”的问答模式进行叙述,包含丰富的应用示例和300多道习题,帮助读者掌握建模、分析和设计具有良好性能和低成本的大型计算机系统所需的技能。
06
计算机系统:嵌入式方法
作者:[英]伊恩·文斯·麦克洛克林
译者:刘雯
探索全面推动从微型嵌入式设备到全球物联网的现代计算机系统技术
推荐阅读
这是一本从嵌入式系统角度探索计算机硬件与软件原理的教科书。本书逐步揭示了在现实世界中如何运用基本概念构建从小型嵌入式设备到大型计算机集群的计算机系统,以及这些概念是如何通过互联网在全球范围内相互关联的。本书首先完整地阐述主要的硬件组件,包括处理器、内存、存储设备与性能加速器,接着又充分探讨操作系统、连接以及网络。通过本书,读者将了解计算机硬件和软件是如何协同工作来支持泛在计算、物联网、移动计算和大小不一的各种应用程序的。
07
计算机组成与设计:硬件/软件接口(原书第5版)
作者:[美] 戴维 A.帕特森 (David A. Patterson)
约翰 L.亨尼斯(John L. Hennessy)
译者:王党辉 康继昌 安建峰 等
图灵奖得主Patterson和Hennessy共同撰写
计算机组成与设计的经典畅销教材
推荐理由
本书是计算机组成与设计的经典畅销教材,第5版经过全面更新,关注后PC时代发生在计算机体系结构领域的革命性变革——从单核处理器到多核微处理器,从串行到并行。
本书特别关注移动计算和云计算,通过平板电脑、云体系结构以及ARM(移动计算设备)和x86(云计算)体系结构来探索和揭示这场技术变革。与前几版一样,本书采用MIPS处理器讲解计算机硬件技术、汇编语言、计算机算术、流水线、存储器层次结构以及I/O等基本功能。
08
计算机体系结构基础(第3版)
作者:胡伟武等
龙芯中科胡伟武领衔撰写
龙芯开源LoongArch版,学会造计算机!
从硬件工程师的角度理解软件,从软件工程师的角度理解硬件!
推荐理由
本书由国内从事微处理器设计的一线科研人员编写而成。作者从微处理器设计的角度出发,充分考虑计算机体系结构的学科完整性,强调体系结构、基础软件、电路和器件的融会贯通。全书共分12章,包括指令系统结构、计算机硬件结构、CPU微结构、并行处理结构、计算机性能分析等主要内容,重点放在作为软硬件界面的指令系统结构,以及包含CPU、GPU、南北桥协同的计算机硬件结构上。
09
计算机系统基础 第2版
作者:袁春风 余子濠
推荐理由
本书基于“IA-32+Linux+GCC+C语言”平台介绍计算机系统基础内容,通过讲解高级语言中的数据、运算、语句、过程调用和I/O操作等在计算机系统中的实现细节,使读者能够很好地将高级语言程序、汇编语言、编译和链接、组成原理、操作系统等相关的基础内容有机贯穿起来,以建立完整的计算机系统概念,从而能深刻理解计算机系统中各个抽象层之间的等价转换关系;同时,由于本书描述了高级语言程序对应的机器级行为,因此它可以为程序员解疑答惑,从而帮助程序员在了解程序的机器级行为的基础上编写出高效的程序,并在程序调试、性能提升、程序移植和保证健壮性等方面成为高手。
02
进阶:构建操作系统和分布式系统模块
01
现代操作系统(原书第4版)
作者:[荷]安德鲁 S. 塔嫩鲍姆、 赫伯特·博斯
译者:陈向群 马洪兵 等
操作系统的经典教材
与时俱进呈现当代操作系统的基础理论与研究动态
推荐理由
在这一版中,Tanenbaum教授力邀来自谷歌和微软的技术专家撰写关于Android和Windows 的新章节,此外,还添加了云、虚拟化和安全等新技术的介绍。书中处处融会着作者对于设计与实现操作系统的各种技术的思考,他们的深刻洞察与清晰阐释使得本书脱颖而出且经久不衰。
02
操作系统概念(原书第9版)
作者:[美] 亚伯拉罕·西尔伯沙茨 等
译者:郑扣根 唐杰 李善平
操作系统领域的“圣经”
从第1版至今全程记录了操作系统的发展历史
推荐理由
本书是操作系统领域的“圣经”,从第1版至今全程记录了操作系统的发展历史,被国内外众多高校选作教材。全书共六部分,不仅详细讲解了进程管理、内存管理、存储管理、保护与安全等概念,而且涵盖重要的理论结果和案例研究,并且给出了供读者深入学习的推荐读物。这一版新增了多核系统和移动计算的内容,每一章都融入了新的技术进展,并且更新了习题和编程项目。
03
现代操作系统:原理与实现
作者:陈海波 夏虞斌 等
陈海波作品,结合前沿研究与工业界实践
面向真实场景与真实问题
建立对操作系统的第一手实践经验
推荐阅读
操作系统和系统安全领域国际知名学者、上海交通大学陈海波、夏虞斌领衔撰写。由浅入深介绍现代操作系统经典理论与方法。本书以三个“面向”为导向,即面向经典基础理论与方法,面向国际前沿研究,面向工业界实践,深入浅出地介绍操作系统的理论、架构、设计方法与具体实现。本书是首本以ARM64为主体介绍操作系统的教材,将学术前沿与工业实践充分结合,不仅介绍了现有的Linux宏内核操作系统架构,而且介绍了微内核、外核等操作系统架构。
04
分布式系统:概念与设计(原书第5版)
作者:(英)George Coulouris、 Jean Dollimore
Tim Kindberg、 Gordon Blair
译者:金蓓弘 马应龙 等
推荐理由
从移动电话到互联网,我们的生活越来越依赖于以无缝和透明的方式将计算机和其他设备链接在一起的分布式系统。本书全面介绍分布式系统的设计原理和实践及其最新进展,并使用大量最新的实例研究来阐明分布式系统的设计与开发方法。
本书前几版已被爱丁堡大学、伊利诺伊大学、卡内基-梅隆大学、南加州大学、得克萨斯A&M大学、多伦多大学、罗切斯特理工学院、北京大学等众多名校选用为教材。第5版在上一版的基础上,新增了三章内容,分别介绍间接通信、分布式对象和组件、分布式系统设计(以Google为例)。
05
分布式实时系统:理论与实践
作者:[土]K. 埃尔吉耶斯(K. Erciyes)
译者:蔡国扬
从高层设计方法到低层设计和实现细节
全面总结实时系统现代知识和范式
推荐理由
本书描述了一种自底向上的分布式实时系统软件的设计与实现方法。全书共分为四部分,讨论了涉及实时系统的软件项目中常见的挑战,并给出了一种新的方法来简单有效地执行项目中的所有软件工程步骤。每章都从核心概念入手,配以对相关方法和可用软件的回顾,然后描述这些概念在示例内核中的实现,还给出了可执行代码。
只需具备计算机体系结构和操作系统的基本背景知识,就可以阅读本书。
06
分布式实时系统原理与设计方法(原书第2版)
作者:[奥地利]赫尔曼·科佩茨(Hermann Kopetz)
译者:吴际 龙翔 尚立宏 等
推荐理由
硬实时系统是一种要求在所有预见到的负载和故障场景下都必须满足其时域规格的计算系统。本书主要关注硬实时系统(又称为安全关键系统)的技术原理和设计方法,从系统整体视角来分析实时性、分布式和容错等问题。本书内容跨越多个技术栈层次,从时间理论、实时模型到时间触发机制,从片上系统、操作系统到分布式应用,从通信协议、分布式控制到容错机制。
作为时间触发技术的理论建立者,作者结合丰富的理论和工程经验,从工程实践角度给出了利用时间触发方法学来设计可信分布式实时系统的方法,在基础理论、工程技术和设计方法学之间建立了平衡。
07
云计算与分布式系统:从并行处理到物联网
作者:(美)Kai Hwang, Geoffrey C. Fox, Jack Dongarra
译者:武永卫 秦中元 李振宇 钮艳
推荐理由
随着信息技术的广泛应用和快速发展,云计算作为一种新兴的商业计算模型日益受到人们的广泛关注。本书是一本完整讲述云计算与分布式系统基本理论及其应用的教材。书中从现代分布式模型概述开始,介绍了并行、分布式与云计算系统的设计原理、系统体系结构和创新应用,并通过开源应用和商业应用例子,阐述了如何为科研、电子商务、社会网络和超级计算等创建高性能、可扩展的、可靠的系统。
08
深入理解分布式事务:原理与实战
作者:肖宇 冰河
推荐理由
本书的广度与深度兼备、理论与实战兼顾的分布式事务专著,它从基础知识、解决方案、原理分析、源码实现、工程实战5个维度对分布式事务做了全面、细致的讲解,试图解决你在实践中遇到的所有关于分布式事务的问题
09
Go程序设计语言
经典与权威的碰撞,打造Go语言编程圣经
作者:[美] 艾伦 A. A. 多诺万(Alan A. A. Donovan)
布莱恩 W. 柯尼汉(Brian W. Kernighan)
译者:李道兵 高博 庞向才 金鑫鑫 林齐斌
推荐阅读
《C程序设计语言》作者Kernighan教授与谷歌Go开发团队核心成员Donovan联合编写。凝聚大师毕生造诣,融合Go开发团队智慧,经典与权威的碰撞,打造Go语言编程圣经。学习Go语言程序设计的权威指南。
10
Rust实战:从入门到精通
Rust开发社区贡献者编写
通过大量代码示例详细解析Rust语言的各种特性
带你轻松入门Rust编程
作者:[意] 卡洛·米拉内西(Carlo Milanesi)
译者:卢涛 李颖 译
推荐阅读
本书从Rust的基础开始讲解,包括如何命名对象、控制执行流和处理基本类型。你将了解如何进行算术运算、分配内存、使用迭代器以及处理输入/输出。掌握了这些核心技能后,你将很快就能用Rust处理错误并使用Rust的面向对象特性构建强大的Rust应用程序。
本书对初学者非常友好,只需了解基本的编程知识——最好是有C或C++的基础知识,就可以完成本书的学习。而且,要充分理解本书,只需知道什么是整数和浮点数,以及能够区分标识符和字符串就可以了。
11
《C++程序设计语言(原书第4版)》
作者:本贾尼·斯特劳斯特鲁普
C++之父作品
豆瓣评分9.2!畅销全球40余年!
数百万程序员推崇之作!世界名校核心教材!
内容全面,探究原理,698条编程建议、1000余代码示例
推荐理由
从C++语言设计者的角度讲解了专业C++程序员需要的每个语言特性和标准库组件,并解析了它们的设计初衷、原理和制约因素,是数百万C++程序员学完后推崇备至的C++语言学习宝典。
12
《C++程序设计:原理与实践(原书第2版)》
作者:本贾尼·斯特劳斯特鲁普
C++之父作品
豆瓣评分8.9!畅销全球20余国!
专注程序设计而非C++语言,教你编写“有用的程序”
1182道习题助你实现从“工匠”到“艺术家”的升华
推荐理由
专注于C++程序设计技术、实践和技巧,而非C++语言本身,是一本能让你学到基本的实用编程技术(包括支持这种技术的编程思想和语言工具)的最简单书籍,能帮助你理解并编写复杂的程序。它会教你编写“有用的程序”,而非“玩具程序”,帮助你实现从“工匠”(码农)到“艺术家”的升华。
13
C++20编程技巧:98个问题解决方案示例(原书第2版)
作者:[美]J.伯顿·布朗宁(J. Burton Browning)
[英]布鲁斯·萨瑟兰(Bruce Sutherland)
译者:徐坚 张利明 贺加贝 马晓钰 姚贤明
推荐阅读
本书探索C++20的主要新特性(包括module、concept、宇宙飞船运算符和智能指针),涵盖了C++核心语言标准以及标准模板库(STL)中一些可用的代码模板,是一本方便的专题式代码参考指南。
通过本书,你将学习数字、字符串、日期、时间、类、异常、流和指针等的使用技巧,还将学习各种代码示例、C++算法模板、并行处理、多线程、数值处理和3D图形编程等。同时,本书提供了大量的STL模板,如函数对象模板、适配器模板、分配器模板和扩展模板。
03
工程实战
01
CPU设计实战
作者:汪文祥、邢金璋
龙芯中科技术股份有限公司首席工程师汪文祥作品
一本书带你从零开始设计自己的CPU
推荐理由
深入剖析CPU设计与开发的关键环节;从零开始构建一个功能逐步完善的CPU;全面培养CPU设计的工程化思维与实战能力。
本书作者从事CPU产品自主研发工作近20年,在CPU设计方面积累了丰富的经验,并一直尝试在教学过程中将这些经验转化为教学内容,探索一条培养CPU设计人才的行之有效的途径。本书面向初学者,以实战的方式带领读者了解CPU设计的流程,并从零开始逐步开发出自己的CPU。本书将计算机组成与体系结构的理论知识和工业实践充分结合,使读者在实际的CPU设计与开发过程中更加深入地理解计算机系统的工作原理,掌握CPU设计理念、方法和技术。
02
凤凰架构:构建可靠的大型分布式系统
作者:周志明
超级畅销书《深入理解Java虚拟机》作者又一新作
国内多位架构专家联袂推荐
推荐理由
这是一本从架构视角讲解如何构建大型分布式系统的著作,是超级畅销书《深入理解Java虚拟机》的作者周志明多年架构和研发经验的总结,得到了多位行业资深架构专家的联袂推荐。本书从架构演进、架构设计思维、分布式基石、不可变基础设施、技术方法论5个维度全面探索如何构建可靠的大型分布式系统。
一年一度的423读书日就要来了,华章科技在此期间为您带来7场不同主题的技术干货直播,直播内容及观看方式请点击上方链接查看。
更多精彩回顾
书讯 | 4月书讯(上)| 上新了,华章
书讯 | 4月书讯(下)| 上新了,华章
资讯 | 视频时代的大数据:问题、挑战与解决方案
书单 | 金三银四求职季,十道腾讯算法真题解析!
干货 | TypeScript 中的“类型”到底是个啥?
收藏 | 终于有人把Scrapy爬虫框架讲明白了
上新 | NLP大牛菲利普•科恩机器翻译权威著作
赠书 | 【第99期】边缘计算比云计算强在哪里?终于有人讲明白了