人人都能学编程
English 开始学习
课程 0 · 编程之前第 2 课 / 共 8 课免费阅读

机器里面有什么 · 计算机入门

计算机里面有什么?为什么没保存的东西一断电就没了?

课程目录

为什么需要它

三大件,处理器、内存和存储,能解释很多日常现象:为什么开太多 App 手机会变慢,为什么要按保存,价签上的「8 GB」和「256 GB」各是什么意思。

以后你自己的程序要记住东西时,你也会知道这些东西放在哪里。

直觉理解

想象一个人坐在书桌前写作业:

  • 处理器(CPU)就是这个人。真正干活的是它,每次只做很小的一步,但每秒能做几十亿步。
  • 内存(RAM)就是书桌。你此刻正在用的东西都摊在桌上,伸手就拿得到。它很快但不大,而且一断电就被清空。
  • 存储(固态硬盘、机械硬盘,或者手机上的「256 GB」)就是书架。它很大,断电也会一直保存,只是拿东西要慢一些。

打开一个 App 时,它会从书架复制到书桌上,处理器才能用它。写文档时,你打的字都摊在桌上;按保存,就是在书架上放一份副本。所以突然断电时,没保存的内容会消失:桌子被清空了,书架上还什么都没有。

App 开得太多,桌子就挤满了。计算机只好不停地把东西在桌子和书架之间搬来搬去,所以什么都变慢了。

程序要记住的值也放在桌上。右边这台小机器把一个分数放进内存,再一步步改它。

定义

处理器 CPU

The CPU (central processing unit) is the part of a computer that carries out the instructions of a program.
CPU(中央处理器)是计算机里执行程序指令的部件。

内存 RAM

RAM is fast, temporary memory that holds the programs and data in use right now; its contents are lost when the power is off.
内存(RAM)是快速的临时存储,放着正在使用的程序和数据;断电后里面的内容就没了。

存储 Storage

Storage, such as an SSD or a hard drive, keeps files permanently, even when the power is off.
存储(比如固态硬盘或机械硬盘)会长期保存文件,断电也不会丢。

示例

桌上的分数

动手试试

score 这个名字就是书桌(内存)上的一个位置,每一步都会改变那里放的值。把 10 改成别的数,再运行一次。

# A spot in memory called score
score = 0
print("Start:", score)
score = score + 10
print("After level 1:", score)
score = score + 10
print("After level 2:", score)
逐步执行
  1. L2把 0 放进内存,名字叫 score。score = 0
  2. L3显示内存里现在的值。Start: 0
  3. L4CPU 读出 score(0),加 10,再把 10 放回同一个位置。score = 10
  4. L6再来一次:10 + 10。旧的值被换掉了。score = 20
  5. L7显示新的值。After level 2: 20

桌子快,书架慢

动手试试

真实的时间短到没法想象,所以这台机器把它们放大:假如从内存拿一次东西要 1 秒,从存储拿要多久?数字是粗略的,但差距是真的。

# If reaching memory (the desk) took 1 second...
memory = 1
ssd = memory * 1000          # roughly 1000 times slower
hard_drive = memory * 100000  # roughly 100000 times slower
print("Memory:", memory, "second")
print("SSD:", ssd // 60, "minutes")
print("Hard drive:", hard_drive // 3600, "hours")
逐步执行
  1. L2假设去内存拿一次要 1 秒。memory = 1
  2. L3固态硬盘大约慢一千倍。ssd = 1000
  3. L4老式的机械硬盘大约慢十万倍。hard_drive = 100000
  4. L61000 秒大约是 16 分钟。SSD: 16 minutes
  5. L7100000 秒大约是 27 小时。Hard drive: 27 hours

突然断电

动手试试

一条消息先打进内存,打到一半时保存到存储,然后突然断电。运行看看,哪些字留下来了。

memory = "See you at"
storage = ""
# Press Save: copy memory to storage
storage = memory
# Keep typing (only in memory)
memory = memory + " 6 pm!"
# Power cut: memory is wiped
memory = ""
print("Memory after restart: [" + memory + "]")
print("Storage after restart: [" + storage + "]")
逐步执行
  1. L1你打的字在内存里。memory = "See you at"
  2. L4保存:复制一份到存储。storage = "See you at"
  3. L6你接着打字,新打的字只在内存里。memory = "See you at 6 pm!"
  4. L8断电了,内存被清空。memory = ""
  5. L10存储里还有保存过的内容,「 6 pm!」丢了。Storage after restart: [See you at]

常见错误

价签上的内存和存储

标着「8 GB + 256 GB」的手机,8 GB 是内存(书桌),256 GB 是存储(书架)。存储大,能放更多照片;内存大,能同时开着更多 App。

「关掉 App 就是删掉它」

关掉 App 只是把它从书桌(内存)上拿走,它还在书架(存储)上,下次还能打开。删除才是把它从存储里移走。

不是什么都会自动保存

很多 App 会边用边自动保存,但不是全部。重要的东西,关掉之前先按保存(或者确认它显示「已保存」)。

小测验

1. 哪个部件真正在执行程序的指令?

  1. A存储
  2. BCPU
  3. C屏幕
查看答案

答案:B

干活的是 CPU(处理器)。内存和存储负责放东西,屏幕负责显示输出。

2. 你正在打字,还没按保存就停电了。你打的字当时在哪里?

  1. A只在内存里,断电就被清空
  2. B安全地放在存储里
  3. C在屏幕里
查看答案

答案:A

在保存之前,你的内容只在内存(RAM)里。保存会把它复制到存储,断电也不会丢。

3. 一部手机有 6 GB 内存和 128 GB 存储。你想放更多照片,该看哪个数?

  1. A6 GB 内存
  2. B128 GB 存储
  3. C都不用看
查看答案

答案:B

照片是要长期留着的文件,所以放在书架上,也就是存储。

要点

  • CPU 负责干活,内存(RAM)放此刻正在用的东西,存储长期保存文件。
  • 内存快,但断电就清空;存储慢一些,但一直保留。
  • 保存就是把内容从内存复制到存储。

动手练习

3 道小练习:先想一想,再动手改一改看看结果,最后自己来一次。提交马上告诉你对不对。

  1. 想一想从书架到书桌

    你点开一个游戏。CPU 运行它之前,游戏要先从 ___ 复制到 ___。

  2. 改一改及时保存

    这台机器在保存之前就断电了,所以打印出来的 Saved: 后面是空的。

    在合适的位置加一行 storage = memory,让断电之后机器打印:

    Saved: Meet at the park at 6

    消息本身不要改。

  3. 自己来书桌还是书架?

    下面每一项,如果它在内存里(断电就没了)写 M,在存储里(会一直保留)写 S:

    1. 手机相册里的一张照片
    2. 你正在玩的这一局游戏的分数
    3. 上周安装的一个 App
    4. 打了字但从没保存的文字

    按顺序写出四个字母,例如 MMSS。

在互动课里练这一课

打开互动课,这些例子都能直接改、直接运行,练习题提交马上判题。免费开始,不用注册。

互动课按顺序解锁:前面的课还没学,会先带你到课程地图。

本课术语

术语中文英文定义
CPU (processor)处理器The part of a computer that carries out a program's instructions.
Memory (RAM)内存Fast, temporary space for programs and data in use; wiped when the power is off.
Storage存储Permanent space for files, such as an SSD or hard drive; kept when the power is off.
Save保存Copy your work from memory to storage so that it is kept.