读《计算机科学概论》(上)

2018-11-13  本文已影响52人  ShannonChenCHN
image

写在前面的话:
实际上我在 2015 年就买了这本书,但是却从来也没去读过,一方面是因为一直觉得不重要,另一方面是这本书本身就内容比较多而我读书又不得法、读得又慢,所以直到最近打算系统地学习计算机课程才专门花时间看了两遍。看完这本书后的最大感悟是:千万不要为了折扣或一时兴起而去囤书
另外,我的个人建议是读这本书之前,最好要有一定的预备知识和编程经验。

关键词:抽象、概览、分层、计算

简介

作者将计算机系统分成信息层、硬件层、程序设计层、操作系统层、应用程序层和通信层这 6 个层,以自底向上,从内到外,从具体到抽象的方式介绍了计算机如何运作,它们可以做什么以及如何使用它解决问题,最后还探讨了计算机的局限,也就是它不能做什么。

通过阅读这本书,我们可以知道,从普通用户的角度来看,我们现在所使用的计算机是怎么实现的,从应用程序开发者的角度来看,我们平常开发时所用的语言和框架都处在哪一层、跟其它层有什么关系。我们会从细节中脱离出来,退后一步看到更大的世界。

读完这本书,你会/应该知道:

阅读建议:有一定的预备知识和编程经验

目录


第一部分 基础篇

第 1 章 全景图

1. 计算系统

image

2. 计算的历史

image

3. 计算工具和计算学科

在第一部分中,作者强调了抽象的重要性,另外,计算系统和编程语言的分层理论,以及这里没有提到的计算机网络分层,再加上程序员角色的分化,让我联想到金旭亮老师提到的学习方法——我们实际上只需要深入了解 N-1 层和 N+1 层就够了,其他层跟我们日常工作关系不大,先有了“全景图”,可以等到需要时再去深入了解其它层的细节。

第二部分 信息层

第 2 章 二进制数值和记数系统

1. 数字和计算

2. 位置记数法

第 3 章 数据表示法

1. 数据和计算机

计算机能够处理的信息包括:

这些数据最终都被存储为二进制数字,每个文档、图像和广播讲话都将被表示为由 0 和 1 组成的字符串。

数据压缩:

模拟数据和数字数据

二进制表示法

2. 数字数据的表示法

十进制补码表示法示意图如下:


image

二进制补码表示法示意图如下:


image

3. 文本表示法

4. 音频信息表示法

5. 图像和图形的表示法

6. 视频表示法

读这一部分两个最大的收获就是,一是知道了从文本到图片、音视频这么多种形式的信息是怎么表示的,有了一个全面的了解;另一个意外发现就是知道补码原来是这么回事,原来十进制也有补码数值表示法。

第三部分 硬件层

第 4 章 门和电路

1. 计算机和电学

2. 门

image
image
image

3. 门的构造

image
image

4. 电路

电路逻辑框图:


image

半加器逻辑框图:

image

半加器逻真值表:

image

全加器逻辑框图和真值表:


image

多路复用器框图:


image

多路复用器真值表:


image

5. 存储器电路

6. 集成电路

7. CPU 芯片

小结:

这一章我们讨论了计算机如何通过控制最底层的电流进行运算,由于我们讨论的是使用二进制信息的数字计算机,所以我们只关注两个电压范围,分别表示为二进制数字1或0,电流由称为的电子设备操纵,门负责执行基本的逻辑运算,如非运算,与运算和或运算。门是由一个成多个晶体管创建的,晶体管的发明使计算学发生了翻天覆地的变化。

把一个们的输出作为另一个门的输人,可以把门组合成电路,仔细设计这些电路,可以创建出能执行更复杂任务(如求和,多路复用和存储数据)的没备,门的集合,或者说完整的电路,常常被嵌入在一个集成电路(或芯片)中,这引出了中央处理器的概念,

第 5 章 计算部件

1. 独立的计算机部件

2. 存储程序的概念——冯·诺伊曼体系结构

冯·诺伊曼体系结构:


image

总线:


image

读取-执行周期:


image

3. 非冯·诺伊曼体系结构

第四部分 程序设计层

第 6 章 问题求解和算法设计

1. 问题求解

2. 算法

3. 伪代码

4. 两种设计方法

解决计算机问题的着手点是先问自己如果要手动地解决这个问题该怎么解决。因为如果我们不能手动地处理一个任务,那对这个任务的理解就不够透彻,不足以编写算法。通常,手动解决方案是计算机解决方案的雏形。

image

5. 几个重要思想

抽象是人们用来处理复杂食物的最强有力的工具。

第 7 章 低级程序设计语言

1. 计算机操作

2. 抽象的分层

根据编程语言的发展历程,从硬件附带的语言——机器语言,到低级程序设计语言——汇编语言,再到高级程序设计语言,每前进一个阶段,语言自身就变得越抽象,也就是说,一个语句所包含的处理变得越来越复杂。

3. 机器语言

4. 汇编语言

5. 其他重要思想

第 8 章 高级程序设计语言

1. 翻译过程

image

2. 编程范式

3. 命令式语言的特性

4. 面向对象语言的特性

延伸阅读:

第 9 章 抽象数据类型和算法

1. 抽象数据类型

2. 算法的实现

3. 列表

4. 排序

5. 二分查找法

6. 栈和队列

7. 树和图(非线性数据类型)

8. 标准库

延伸阅读:

读《计算机科学概论》(下)


如果你也喜欢交流技术、喜欢阅读、积极践行,欢迎关注我的公众号:祥龙Shannon写字的地方,一起成长。

qrcode_for_gh_cc686217be41_344.jpg
上一篇下一篇

猜你喜欢

热点阅读