Memory 和 Storage

前言

Memory 和 Storage 的概念在中文的语境下往往被混淆, 笔者在中学阶段对手机参数比较感兴趣, 就被 运行内存 (也叫运存) 和 内存 弄晕过, 今天偶然刷到了 crash course 的计算机速成课 和知乎的一个关于内存的提问, 就来给 memory 在中文不同语境下的翻译做一个可能的解释. 你将了解到为什么 memory 在电脑销售行业叫 内存, 而到了手机销售这就变成了 运行内存, 而 storage 在前者叫 硬盘, 在后者上叫 内存

正文

首先, 计算机起源于欧美, 所以这两个单词在专业英文的语境下是没有异议, 指代是清晰的, 由于中文指代混乱, 所以我们使用记忆体来指代 Memory[1], 用存储器来指代 Storage, 我们将基于这两个概念来扩展出其他中文概念. 要理解 Memory 和 Storage, 首先需要了解一些计算机发展史[2], 看看早期编程中程序和数据是如何表示和存储的

Memory和Storage的发展史

可编程的纺织机

早期纺织机的图案需要人工手动调整机器才能织出, 雅卡尔纺织机是第一台可编程纺织机, 它通过打孔纸卡的孔决定纺织线的高低, 改变纸卡的孔位就可以织出不同的图案, 纸卡成为了表示程序的介质

人口普查

人们把信息填写在纸上, 工作人员按照普查信息在纸卡上打孔,纸卡成为了表示数据的介质

插线板 (plug boards)

这时, 机器中有了程序和数据的区分, 为了区分可存储程序计算机 (storage-program computer)
这个概念, 我们首先提出一个论断, 在插线板中, 程序不被存储, 而被表示. 如何理解?

表示程序

我们把编写程序的过程比喻成搭积木, 积木的整体形状比喻成程序, 那么表示程序就比喻成表示积木的整体形状, 同样的积木通过不同的搭建方式可以表示出不同的整体形状, 对于插线板而言, 插线板上不同的连接方式表示着不同的程序

存储程序

我们这里指的存储是永久性的存储, 比如用水缸存储水, 存储意味着水不会流失. 存储程序也是一样, 对于一块插线板而言, 它的连接方式决定了它的程序是怎样的, 如果我们需要替换程序, 我们就要重新连接插线板, 那么之前的连接方式就“丢失”了, 程序就“丢失”了, 程序没有被存储起来[3], 所以我们说程序没有被存储.

电子记忆体 (electronic memory)

计算机引入电子记忆体中的电子信息来表示程序, 由于电子记忆体是 volatile (易失) 的, 断电就会丢失信息[4], 所以程序存储在打孔纸卡中, 叫做存储器, 可以通过外围的 punch card reader 来读取打孔纸卡, 这种计算机我们叫做可存储程序计算机 (storage-program computer), 正因如此, 电子记忆体也可以叫 内存 , 指的是计算机内, 相对于外围设别而言. 而用于存储程序的纸卡也被称为 外存

硬盘 (HDD, hard disk driver)

硬盘就相当于打孔纸卡和 punch card reader 两者的结合, 其中硬盘中的磁盘就相当于打孔纸卡, 读取硬盘的磁头等硬件设备就是 reader, 这也是为什么叫 driver 的意思, 因为硬盘不只指代其中的磁盘, 而还包括整个读取设备.

因为硬盘的出现替代了打孔纸卡[5], 硬盘的大小可以放在计算机内部, 而不需要单独的庞大的外围设备, 因为本质功能没有改变, 本质上还是 外存. 但由于在计算机内部, 并且随着手机的发展, 这个概念需要被广大消费者接受, 所以存储器直观上就叫 内存 了. 而本来的记忆体就被叫成了 运行内存

小结

通过这篇文章,你应该了解到

  1. 程序和数据的区别,
  2. 程序最开始并不能被存储, 并且和数据是分开存储的
  3. 外存 和手机 内存 的解释
    由于计算机技术的发展模糊了程序和数据的界限,但是作为计算机从业者或者计算机科学爱好者而言,应该区分两者关系才更便于学习其他知识[6]

  1. 记忆体是台湾的叫法, 从专业角度来讲更为贴切, 因为记忆是容易丢失的这和现代电脑的内存很像 ↩︎

  2. 请先通过观看速成课中的第 19 集了解 ↩︎

  3. 虽然我们可以用纸笔记录下连接的方式, 通过手工来恢复之前的程序, 但是纸笔的记录无法被自动地转换成插线板的连接方式, 这不叫存储程序 ↩︎

  4. 现代的电脑内存仍然具有这种性质 ↩︎

  5. 实际上中间还有很多其他存储介质, 例如延迟线、磁带 ↩︎

  6. 例如计算机组成原理中说的冯诺伊曼架构上可存储程序的架构 ↩︎

posted @ 2023-02-25 15:29  你是木木吗  阅读(989)  评论(0)    收藏  举报