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], 硬盘的大小可以放在计算机内部, 而不需要单独的庞大的外围设备, 因为本质功能没有改变, 本质上还是 外存. 但由于在计算机内部, 并且随着手机的发展, 这个概念需要被广大消费者接受, 所以存储器直观上就叫 内存 了. 而本来的记忆体就被叫成了 运行内存
小结
通过这篇文章,你应该了解到
- 程序和数据的区别,
- 程序最开始并不能被存储, 并且和数据是分开存储的
外存和手机内存的解释
由于计算机技术的发展模糊了程序和数据的界限,但是作为计算机从业者或者计算机科学爱好者而言,应该区分两者关系才更便于学习其他知识[6]

浙公网安备 33010602011771号