图灵程序设计丛书:程序是怎样跑起来的(图灵出品)
[日] 矢泽久雄 著,李逢俊 译,[日] 日经Software 校
- 出版社: 人民邮电出版社
- ISBN:9787115385130
- 版次:1
- 商品编码:11676683
- 品牌:iTuring
- 包装:平装
- 丛书名: 图灵程序设计丛书
- 开本:32开
- 出版时间:2015-04-01
- 用纸:胶版纸
- 页数:259
- 字数:204000
- 正文语种:中文
编辑推荐
日文版重印41次!
“计算机组成原理”图解趣味版
蹲马桶就能看懂的编程基础知识
如何向小学生讲解CPU和二进制?
如何向中学生讲解内存和磁盘?
如何向女高中生讲解操作系统的原理?
如何向老奶奶说明显示器和电视的不同?
如果你完全没有思路,就应该读一读这本书。
以图配文,深入讲解编程基础知识
语言通俗,即使是文科生也能看得懂
特设“如果是你,你会怎么做?”专栏,生动有趣
内容简介
《图灵程序设计丛书:程序是怎样跑起来的》一书从计算机的内部结构开始讲起,以图配文的形式详细讲解了二进制、内存、数据压缩、源文件和可执行文件、操作系统和应用程序的关系、汇编语言、硬件控制方法等内容,目的是让读者了解从用户双击程序图标到程序开始运行之间到底发生了什么。同时专设了“如果是你,你会怎样介绍?”专栏,以小学生、老奶奶为对象讲解程序的运行原理,颇为有趣。《图灵程序设计丛书:程序是怎样跑起来的》图文并茂,通俗易懂,非常适合计算机爱好者及相关从业人员阅读。
作者简介
矢泽久雄,YAZAWA股份有限公司董事长兼总经理。GrapeCity信息技术集团顾问。电脑作家之友会会长。
曾在某大型电子公司从事过电脑生产,在SoftwareHouse做过程序员,现主要从事软件包的开发工作。工作之余笔耕不缀,从电路到编程语言均有涉及。代表作有《计算机是怎样跑起来的》《使用C语言学习程序设计的基础》《征服C++类和继承》等。自称软件艺人。
李逢俊,北京易网联信信息技术有限公司CEO。
哈尔滨工业大学硕士毕业后在日工作8年,曾在日本知名游戏公司担任移动互联网部门负责人,拥有丰富的移动游戏开发及运营经验。2011年回国创业,创建易网联信团队,致力于精品手机游戏的开发及运营。
目录
第1章 对程序员来说CPU是什么
1.1 CPU的内部结构解析
1.2 CPU是寄存器的集合体
1.3 决定程序流程的程序计数器
1.4 条件分支和循环机制
1.5 函数的调用机制
1.6 通过地址和索引实现数组
1.7 CPU的处理其实很简单
第2章 数据是用二进制数表示的
2.1 用二进制数表示计算机信息的原因
2.2 什么是二进制数
2.3 移位运算和乘除运算的关系
2.4 便于计算机处理的“补数”
2.5 逻辑右移和算术右移的区别
2.6 掌握逻辑运算的窍门
COLUMN如果是你,你会怎样介绍?--向小学生讲解CPU和二进制
第3章 计算机进行小数运算时出错的原因
3.1 将0.1 累加100次也得不到10
3.2 用二进制数表示小数
3.3 计算机运算出错的原因
3.4 什么是浮点数
3.5 正则表达式和EXCESS系统
3.6 在实际的程序中进行确认
3.7 如何避免计算机计算出错
3.8 二进制数和十六进制数
第4章 熟练使用有棱有角的内存
4.1 内存的物理机制很简单
4.2 内存的逻辑模型是楼房
4.3 简单的指针
4.4 数组是高效使用内存的基础
4.5 栈、队列以及环形缓冲区
4.6 链表使元素的追加和删除更容易
4.7 二叉查找树使数据搜索更有效
第5章 内存和磁盘的亲密关系
5.1 不读入内存就法运行
5.2 磁盘缓存加快了磁盘访问速度
5.3 虚拟内存把磁盘作为部分内存来使用
5.4 节约内存的编程方法
5.5 磁盘的物理结构
第6章 亲自尝试压缩数据
6.1 文件以字节为单位保存
6.2 RLE算法的机制
6.3 RLE算法的缺点
6.4 通过莫尔斯编码来看哈夫曼算法的基础
6.5 用二叉树实现哈夫曼编码
6.6 哈夫曼算法能够大幅提升压缩比率
6.7 可逆压缩和非可逆压缩
COLUMN如果是你,你会怎样介绍?--向沉迷游戏的中学生讲解内存和磁盘
第7章 程序是在何种环境中运行的
7.1 运行环境=操作系统+硬件
7.2 Windows克服了CPU以外的硬件差异
7.3 不同操作系统的API不同
7.4 FreeBSDPort帮你轻松使用源代码
7.5 利用虚拟机获得其他操作系统环境
7.6 提供相同运行环境的Java虚拟机
7.7 BIOS和引导
第8章 从源文件到可执行文件
8.1 计算机只能运行本地代码
8.2 本地代码的内容
8.3 编译器负责转换源代码
8.4 仅靠编译是法得到可执行文件的
8.5 启动及库文件
8.6 DLL文件及导入库
8.7 可执行文件运行时的必要条件
8.8 程序加载时会生成栈和堆
8.9 有点难度的Q&A
第9章 操作系统和应用的关系
9.1 操作系统功能的历史
9.2 要意识到操作系统的存在
9.3 系统调用和高级编程语言的移植性
9.4 操作系统和高级编程语言使硬件抽象化
9.5 Windows操作系统的特征
COLUMN如果是你,你会怎样介绍?--向超喜欢手机的女高中生讲解操作系统的作用
第10章 通过汇编语言了解程序的实际构成
10.1 汇编语言和本地代码是一一对应的
10.2 通过编译器输出汇编语言的源代码
10.3 不会转换成本地代码的伪指令
10.4 汇编语言语法是“操作码+操作数”
10.5 最常用的mov指令
10.6 对栈进行push和pop
10.7 函数调用机制
10.8 函数内部的处理
10.9 始终确保全局变量用的内存空间
10.1 0临时确保局部变量用的内存空间
10.1 1循环处理的实现方法
10.1 2条件分支的实现方法
10.1 3了解程序运行方式的必要性
第11章 硬件控制方法
11.1 应用和硬件关?
11.2 支撑硬件输入输出的IN指令和OUT指令
11.3 编写测试用的输入输出程序
11.4 外围设备的中断请求
11.5 用中断来实现实时处理
11.6 DMA可以实现短时间内传送大量数据
11.7 文字及图片的显示机制
COLUMN如果是你,你会怎样介绍?--向邻居老奶奶说明显示器和电视机的不同
第12章 让计算机“思考”
12.1 作为“工具”的程序和为了“思考”的程序
12.2 用程序来表示人类的思考方式
12.3 用程序来表示人类的思考习惯
12.4 程序生成随机数的方法
12.5 活用记忆功能以达到更接近人类的判断
12.6 用程序来表示人类的思考方式
COLUMN如果是你,你会怎样介绍?--向常光临的酒馆老板讲解计算机的思考机制
附录让我们开始C语言之旅
C语言的特点
变量和函数
数据类型
标准函数库
函数调用
局部变量和全局变量
数组和循环
其他语法结构
前言/序言
大家还记得自己初次接触计算机时的情形吗?想必多数读者使用的都是Windows系统,应该也有不少读者使用VisualStudio和Java等集成开发环境(IDE,Integrated Development Environment,即集成了编程所需的各种工具的开发软件)开发过程序。Windows的图形化操作界面,大大提高了计算机操作的便利性,而利用集成开发环境开发程序,就像用绘图软件画图一样简单。由此可见,这是一个便利的时代。
然而,现实却不容乐观,我们在享受这些方便的同时也付出了代价。虽然拥有一定的编程能力,却无法进一步提高自身技能;知识应用能力的不足导致无法编写源程序。越来越多的程序员正为这些问题而烦恼。个中原因在于,大家不了解程序运行的根本机制。
“双击程序图标,程序开始运行”,作为一名程序员,对程序的了解仅仅停留在这一表层是不行的。我们还应该了解更深层的机制:加载到内存中的机器语言程序,由CPU进行解析和运行,进而计算机系统整体的控制和数据运算也开始运行。了解了程序的运行机制后,就能找到编写源程序的方法。
本书以通俗易懂的方式来解析程序的运行机制,适合想要学习编程的读者,迫切希望提升技能的初级程序员,以及对计算机较为熟悉的中级用户阅读。为了便于说明,书中涉及了不少计算机硬件知识,不过本书的主题依然是编程,也就是软件。
《日经Software》杂志上连载过名为“程序是怎样跑起来的”的文章,而本书就是在整合以上内容的基础上创作的。2001年10月,本书第1版出版后,受到了众多读者的欢迎,我们也收到了很多反馈信息。
大部分读者表示“了解了CPU的寄存器和内存的运行方式,也知道了自己编写的程序的运行机制”,收获颇丰。不过也有编程经验较少的读者表示“内容有点难”。
值此第2版出版之际,我再次核对了全文,大幅增加了寄存器和栈等内容的相关说明,并作了详细的注释。实例程序的代码也由原来的VisualBASIC语言,换成了更便于说明程序运行机制的C语言,并在书的末尾添加了一个辅助章节,对C语言进行了简单的介绍。通过这样的改动,相信即便是觉得第1版有点难的读者,也会感到满意。
无论任何事情,了解其本质非常重要。只有了解了本质才能提高利用效率。这样一来,即使有新技术出现,也能很容易地理解并掌握。接下来,就让我们一起在本书中探索程序的奥秘,寻求程序的本质吧。
矢沢久雄