# 第1章 概述篇
# 1. 计算机发展简史
# 1.1 计算机发展的 4 个阶段
# 1.2 第一个阶段:电子管计算机
# 1.2.1 电子管
# 1.2.2 产生背景
- 第二次世界大战是电子管计算机产生的催化剂;
- 英国为了解德国海军的密文,发明了第一台电子管计算机
# 1.2.3 埃尼阿克(ENIAC)
ENIAC 也是因为战争而产生的,为了精确计算飞机和火箭的各种参数,所以发明了 ENIAC。
# 1.2.4 特点
- 集成度小,空间占用大
- 功耗高,运行速度慢
- 操作复杂,更换程序需要接线
# 1.3 第二个阶段:晶体管计算机
# 1.3.1 晶体管
贝尔实验室的三个科学家发明了晶体管
# 1.3.2 TX-0
来自 MIT 林肯实验室:
# 1.3.3 PDP-1
- 4k 内存,每秒 200,000 指令
- 配备 512×512 显示器
# 1.3.4 特点
- 集成度相对较高,空间占用较小
- 功耗相对较小,运行速度较快
- 操作相对简单,交互更加方便
# 1.4 第三个阶段:集成电路计算机
- 计算机变得更小
- 功耗变得更低
- 计算速度变得更快
- 出现了操作系统
- 计算机具备进入千家万户的条件
# 1.5 第四个阶段:超大规模集成电路计算机
- 一个芯片集成了上百万的晶体管
- 速度更快、体积更小、价格更低、更能被大众接受
- 用途丰富:文本处理、表格处理、高交互的游戏与应用
# 2. 微型计算机的发展历史
从第三阶段开始。
# 2.1 单核 CPU
# 2.2 多核 CPU
单核 CPU 受限于性能,CPU 的提升越来越难了。所以就产生了多核 CPU。
# 3. 计算机分类
# 3.1 超级计算机
- 功能最强、运算速度最快、存储容量最大的计算机
- 多用于国家高科技领域和尖端技术研究
- 标记他们的运算速度的单位是 TFlop/s
- 1 TFlop/s = 每秒一万亿次浮点运算
世界前三(截止2018年11月):
中国前三(截止2018年11月):
# 3.2 大型计算机
- 具有高性能,可处理大量数据域复杂的运算
- 在大型机市场领域,IBM 占据着很大的份额
- 造价高昂
- 不够灵活,伸缩性差
IBM Z9:
# 3.3 迷你计算机(服务器)
- 也称为小型机,普通服务器
- 不需要特殊的空调场所
- 具备不错的算力,可以完成较复杂的运算
- 普通服务器已经替代了传统的大型机,称为大规模企业计算的中枢
# 3.4 工作站
- 高端的通用微型计算机,提供比个人计算机更强的性能
- 类似于普通台式电脑,体积较大,但性能强劲
# 3.5 微型计算机
- 又称为个人计算机,是最普通的一类计算机
- 麻雀虽小五脏俱全
# 4. 冯诺依曼体系
# 4.1 概念
将程序指令和数据一起存储的计算机设计概念结构就是冯诺依曼体系。
# 4.2 诞生过程
# 4.3 必备功能
- 能够把需要的程序和数据送至计算机中
- 能够长期记忆程序、数据、中间结果以及最终运算结果
- 能够具备算术、逻辑运算和数据传输等数据加工处理的能力
- 能够按照要求将处理结果输出给用户
# 4.4 五大组件
# 4.5 冯诺依曼瓶颈
冯诺依曼体系中 CPU 和存储器是分割开的,这就导致了一个问题:CPU 和存储器速率之间的问题无法调和,CPU 经常空转等待数据传输。
# 4.6. 现代计算机的结构
目的:解决 CPU 与存储设备之间的性能差异问题。
# 5. 程序翻译与程序解释
L1:较为高级的计算机语言
L0:较为低级的计算机语言
# 5.1 程序翻译
利用编译器直接用 L1 生成 L0
# 5.2 程序解释
使用由 L0 语言实现的另外一个程序来将 L1 逐行转换为 L0 语言。
# 5.3 比较
- 计算机执行的指令都是 L0。
- 翻译过程生成新的 L0 程序,解释过程不生成新的 L0 程序。
- 解释的过程由 L0 编写的解释器去解释 L1 程序
# 5.4 举例
属于程序翻译:
- C/C++
- Object-C
- Golang
属于程序解释:
- Python
- PHP
- JavaScript
翻译+解释:
- Java
- C#
# 6. 计算机的层次与编程语言
# 7. 计算机的计算单位
# 7.1 容量单位
# 1. 1G内存,可以存储多少字节的数据?可以存储多少比特数据?
1G
= 1024M
= 1024 * 1024K
= 1024 * 1024 * 1024 B
= 1024 * 1024 * 1024 * 8bits
# 2. 为什么网上买的移动硬盘500G,格式化之后就只剩465G了?
500 * 1000/1024 ≈ 465G
# 7.2 速度单位
# 7.2.1 网络速度 —— Mbps
100M = 100M/s
# 为什么电信拉的100M光纤,测试峰值速度只有12M每秒?
网络常用的单位为 Mbps,100M/s = 100Mbps = 100Mbit/s = (100/8)MB/s = 12.5MB/s
# 7.2.2 CPU 时钟频率 —— Hz
Hz 其实就是秒分之一,是每秒钟的周期性变动重复次数的计量。
# 8. 计算机的字符与编码集
# 8.1 字符编码集的历史
# 8.1.1 ASCII 编码
- 小写字母与大写字母相差32
- 很多应用或者国家中的符号都无法表示
- 很多数学运算符不可表示
# 8.1.2 Extended ASCII 码
- 7bits -> 8bits
- 常见的数学运算符
- 带音标的欧洲字符
- 其他常用符、表格符
# 8.1.3 字符编码集的国际化
# 8.2 中文编码集
# 8.2.1 GB2312
全称:《信息交换汉子编码字符集——基本集》
- 一共收录了 7445 个字符
- 6763 个汉子
- 682 个其他符号
- 不符合国际标准
# 8.2.2 GBK
全程:《汉字内码扩展规范》
- 向下兼容 GB2312,向上支持国际 ISO 标准
- 收录了 21003 个汉字,支持全部中日韩汉字
- 只是一个本地化的编码,跨国的时候有问题
- 中国的 Windows 系统默认使用 GBK ,所以在使用 IDE 的时候需要手动更换字符集。
# 8.3 兼容全球的字符集——Unicode
Unicode:统一码、万国码、单一码
- Unicode 定义了世界通用的符号集
- UTF-* 实现了编码
- UTF-8 以字节为单位对 Unicode 进行编码
第2章 组成篇 →