描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302643937
从CPU的视角,多角度地揭秘编程语言背后的运行原理和设计之美
全书共6章,第1章:介绍本书所使用到的主要工具和一些需要心里有数的预备知识;第2章:解析最简单、常用的基础语法,帮助读者适应本书的节奏;第3章:为进阶知识,会从CPU、操作系统的角度,深入分析函数的工作原理和实现细节;第4章:解析经典的C 语法,背后的实现逻辑,并介绍“面向对象”的编程思想及优缺点;第5章:讨论跟操作系统强相关的软件技术,会将所有章节的内容贯穿起来,初步形成一个现代操作系统的运作模型。第6章:我们会讨论一些经典的面试、笔试题,跟读者一起分享工作、学习、求职中的苦与乐。 本书可作为高等院校计算机、自动化及相关专业的本科生或研究生教材,也可供对C/C 工作原理、操纵系统感兴趣的研究人员和工程技术人员阅读参考。
第1章 预备知识
阅读建议 002
1.1 工具介绍 003
1.2 CPU眼里的程序运行 006
1.3 CPU眼里的汇编语言 012
第2章 基础语法
阅读建议 020
2.1 CPU眼里的main函数 021
2.2 CPU眼里的变量 024
2.3 CPU眼里的goto、if else 028
2.4 CPU眼里的指针变量 032
2.5 CPU眼里的指针本质和风险 039
2.6 CPU眼里的数组 043
2.7 CPU眼里的数组越界 047
2.8 CPU眼里的引用 052
CPU眼里的C/C
X
2.9 CPU眼里的i 与 i 054
2.10 代码陷阱类型转换 059
第3章 函数原理
阅读建议 064
3.1 CPU眼里的参数传递 065
3.2 CPU眼里的函数括号{} 070
3.3 CPU眼里的调用和返回 076
3.4 CPU眼里的函数指针 083
3.5 CPU眼里的函数返回值 087
3.6 CPU眼里的堆和栈 094
3.7 函数实验回溯函数调用关系 104
第4章 C 特性
阅读建议 108
4.1 CPU眼里的this 109
4.2 CPU眼里的构造函数 111
4.3 CPU眼里的虚函数 115
4.4 CPU眼里的多态 121
4.5 CPU眼里的模板 128
4.6 CPU眼里的malloc和new 131
4.7 面向对象实践依赖反转 135
第5章 高级编程
阅读建议 144
5.1 CPU眼里的虚拟内存 145
5.2 坐井观天的进程 153
5.3 CPU眼里的地址映射 159
目录
XI
XI
5.4 CPU眼里的volatile 164
5.5 CPU眼里的常量 169
5.6 CPU眼里的系统调用 173
5.7 CPU眼里的大端、小端 179
5.8 CPU眼里的上下文 186
5.9 CPU眼里的锁 192
第6章 面试挑战
阅读建议 202
6.1 static、global以及local 203
6.2 数组和双重指针 210
6.3 指针为什么这么难 216
6.4 auto的工作原理 218
6.5 thread_local的工作原理 223
6.6 面试的技巧 227
编程是进入计算机世界的大门,是人跟计算机交流的方式;很多时候,我们
像学习一门外语一样学习编程语言,只要足够刻苦、耐心,熟背各种语法,都可
以在短时间内写出精彩的程序。
但学的越多,似乎要记忆的东西也就越多;更要命的是,很多语法越来越
玄幻,你心底是否有这样的疑问:难道CPU也需要知道这么多的语法规则吗?
CPU是如何遵守这些连人都觉得十分诡异的程序规则的呢?
答案或许比你想象的要简单很多,CPU眼里并没有这么复杂的语法,它虽
然拥有着飞快的运行速度,但却只能理解最简单的规则。这也就意味着:我们只
需要了解这些简单的规则,就能真实、客观地还原程序运行原理,解释很多奇幻
的语法规则,甚至理解黑客常用的攻击方法,从而编写出更加强壮、安全的代码。
在一次神农架的旅行中,汽车行进在浓密的原始森林中,同行的小学生问了
我一个问题:神话故事是假的吗?思考了良久后,我回答:不确定神话是真的,
但更不敢否定是假的。中国有大禹治水的故事,西方有诺亚方舟的神话,它们发
生的时间相仿,描述的事情相近,我似乎找不到一个理由,去解释在那个通信落
后、语言不通的时代,远隔万里的人类,为什么要合伙编一个故事来欺骗后世子
孙?或许大洪水事件是真的,诺亚方舟也是真的,但受制于当时的科技、文化以
及人类自身的进化水平,很难全面、清晰、深入本质地描述像大洪水这样的重大
事件。或许这也是大洪水事件会有多个版本的原因。
这也正好像今天学习计算机的现状:开发者一边捧着标准教材,一边在网上
VIII
CPU眼里的C/C
寻找各种教程二次学习。大家似乎都在寻找一个更适合自己或者更加真实的版本。
虽然市面上很多大神的教程、书籍、视频已经把C/C 的本质分析得很好了,
而且各有见解,但似乎还是有一层窗户纸没有被捅破。虽然大神的书籍、教程、
视频让人百看不厌,但观众仍然觉得心里没底。我们总是试图从人的视角解释程
序的行为,迫切找到最权威、最重量级的解释,但似乎很少去从CPU的视角审
视程序。
相比于破解遥远的神话故事,破解代码的运行原理就容易很多,在和大家的
交流中,我发现很多大二的学生,已经具备一探究竟的能力,如果现在还不趁热
打铁地一锤定音,那还要做多少道题、看多少教程、具备多少年的工作经验,才
能自然进化到大彻大悟呢?而这也是本人最终下定决心编写本书的主要原因,我
们已经具备了临门一脚的能力,一个及时的助攻是非常必要的。
当然,仅仅提供一个答案是缺乏科学精神的,如果不能让普通开发者重现、
证实、证伪大神的“金玉良言”,那将非常遗憾,因为不可实践的工程技术,对
工程师而言毫无意义;知识的解释权需要掌握在更多的开发者手里。
全书的所有章节,几乎全部基于最简单、最常见的代码,相信很多读者都曾
经写过这样的代码。配合免费、公开、直观的工具,每一个读者都可以随时拆解、
演绎其中的工作原理,让知识真正属于每一个读者。
最后,本书绝对不是否认其他计算机教程的正确性,相反,没有其他计算机
教程的基础,想读懂本书,也不是一件容易的事情。本书只是换一个视角解读我
们所熟知的知识。如果真有什么差异的话,可能只是视角上的差异。
作者
2023年春
CPU眼里的:CC 4校 文前.indd 82023/8/31 14:54:41
评论
还没有评论。