程序员区提到的“内存”不应该默认是“memory”吗

2022 年 8 月 5 日
 Ayanokouji
我经历过自己组装 pc ,买过内存条和硬盘。
为什么到手机就混乱了呢。

另外苹果官网的文案是:
购买 iphone 选择时:
存储容量:你需要多大的存储空⁠间?

购买 m2 air 选择时:
内存:多大的内存适合你?
存储设备:多大的存储容量适合你?

不清楚其他手机厂商的文案是啥。
17521 次点击
所在节点    程序员
159 条回复
7RTDKSAK
2022 年 8 月 7 日
@agagega
plugin,调用操作系统 API,依赖于操作系统,即不能跨平台使用---俗称"插件"
addon/extension,调用浏览器 API,依赖于浏览器,即不能跨浏览器使用---俗称"扩展"
moioooo
2022 年 8 月 7 日
根据对话场景、谈话的对象自己区别呗,不确定的就多问一句。
如果是熟悉的人,那就提醒校正一下。不熟悉的或者不适合较真的,知道个意思就行。
比如“你手机多大?“,一般就是问的存储。64g 、128g 等等。
要是”我手机 4g 内存,你的呢?“,那我会回复:”我也 4 个 g“
hatebugs
2022 年 8 月 7 日
@doveyoung 阈值 优惠券 认同,别人爱咋咋叫吧。一二三级域名这个感觉定义比较模糊,一般都是交流前先约定比如 a.com 是一级还是二级,再去沟通,感觉还好,请教下标准里 a.com 算一级域名吗?
tril
2022 年 8 月 8 日
@Remember 二进制词头的具体标准:IEEE 1541-2002 和 ISO/IEC IEC 80000-13:2008 。只是标准出的太晚了,大家不统一也正常。
wakarimasen
2022 年 8 月 8 日
所以应该叫蒙莫利和斯托瑞基以消歧义 /doge
qrobot
2022 年 8 月 8 日
@binfengxy #83L 这就是你把 DDR4 设置成 Disk , 把 HDD 设置成 RAM 的原因? [doge]
qrobot
2022 年 8 月 8 日
@catalysia #111L 我非计算机专业, 请教一下, 内存( Volatile memory )的作用是什么? 理论上不需要这个也是可以运行系统的,例如 `linux live cd` 等等
qrobot
2022 年 8 月 8 日
@catalysia 是因为技术和材料的问题吗? 导致只能有设计 Volatile memor 来进行解决速度效率的问题
catalysia
2022 年 8 月 8 日
@FrankHB 冯·诺依曼架构中 内存 memory 和输入输出设备 I/O 是平级的 并不存在谁被逻辑单元直接控制 逻辑单元只能直接控制累加器 accumulator 你去看看最早的冯·诺伊曼原型机
打孔带是直接被放进逻辑单元里的 也是直接被逻辑单元的打孔机打出来的 打孔带即是内存也是硬盘
所以内存是概念 不是能力 是这个设备正在做什么用途决定的 而不是看这个设备能不能被与逻辑单元之间的能力关系
至于你说的什么翻译请求 通过内存二次加载之类的都是后来的扩展型搞出来的
这已经不是单一的冯·诺依曼机了

顺便说下 内存 这一词的翻译就是内部存储器 指参与系统运转的 累加器 寄存器 随机读取内存 硬盘 和软盘
出自《计算机科学基础》

这就是内存最早的含义 致于后来怎么延伸那是后来的问题 这肯定有个先来后到 内存被特指能被 cpu 直接读取的主内存
这是后人的约定俗称

就像老八就是指第八个兄弟 至于后来特指吃 shit 那位 这是后来的约定俗成
catalysia
2022 年 8 月 8 日
@qrobot 成本问题和路径依赖吧
内存的初衷是解决累加器或者寄存器 以及 Nor 太贵的问题
先是累加器完全不够用 所以需要内存
而非易失性内存 nor 太贵了 所以降低成本搞了易失性的
然后从业者越来越多发展起来了 百万老公衣食所系
以至于寄存器大到可以装系统 固态硬盘快到比内存还快 我们还是用内存
毕竟发展了这么多年有好多基于内存的优点我们还放不下

这个有点类似 ipv4 和 nat
为了解决 ipv4 地址不足搞了 nat
结果再 nat 基础上建立了内网安全,一群相关的从业人员把这个玩到了极致
结果 ipv6 无线的地址不需要端口映射这个概念了反倒没有 ipv4+nat 那么好用了
Remember
2022 年 8 月 8 日
@tril 这个标准就是硬盘厂推动的,给自己偷工减料创造了一个依据。
Zien
2022 年 8 月 8 日
@kop1989smurf 对对对,感觉和这个有关。然后大家都将错就错,选择最普遍接受的词了
FrankHB
2022 年 8 月 8 日
@catalysia 原型机……你说的是 First Draft of a Report on the EDVAC 里的具体设计?那反而更不支持你的说法,因为里面 CA 、CC 、M 、I 、O 、R 这 6 个部件是分离的,明确区分 M 和 R parts ,CA 、CC 和 M 相连,而 R 得通过 O 中介。至少考虑拓扑结构,这里就自始至终都无法让 M 和其它存储部件平级,除非是你把 R 抽象掉合并回 M 作为实现细节,然而就算是今天的物理机器都没这样(甚至软件上也只有 IBM System i 等少数实现做到了统一 M 和 R )。
后来所谓的冯·诺依曼机的共性其实无视或者至少明确削弱了这点(要义在于“程序存储”,CA/CC 都能访问 M ,而不在乎 M 和 I 、O 、R 之间怎么配置),但是实用体系结构研究中要求具有一定的静态属性以便能取得比较具体的配置(≈能造出相对固定物理形态的设备以及设备互联),所以习惯上我没看到有按你说的怎么用那么 ad-hoc 的分类。

翻译请求是泛化了的体系结构才会关心的,但也就是因为这里的判断准则也是“程序存储”这种“能力”而非当前实现的功能。只要你的 CA/CC 部分足够弱,在一个实现冯·诺依曼原始设计的或者其扩展的机器上可以强行拒绝实现这些功能的指令而重新移除这些功能,但这不表示这种机器的物理配置不是冯·诺依曼机。这里完全都是同一种体系结构(纯粹的冯·诺依曼机)来说的,改变的配置都是实现细节。
倒是 model of computation (而不是 model of computer )会有类似你的思路,但基本上也不会叫 memory ,而是叫 store ;而且很少有动态配置,因为这些抽象机对应的大部分原生语言的核心语义规则都不支持动态配置,至少不会动态掉干掉活动记录和 store 这样主要的存储部件。

内存当然很自然地是 internal memory 的直译,对应这里的 M part ,这没什么问题。但原始文献中其实 memory 通常专指 M 但是有时候又同时指 M 和 R (比如比较 M 和 R 说明为什么需要区分两者的时候),所以歧义一直就有,原则上不可能不多加对应关系就翻译对。
我的意见是既然现代观点大部分用户(软件作者+最终用户)接触到的 memory 和 internal memory 是两回事,那么就不要混起来,只有少部分历史上下文才有容忍需要消歧义的必要。
主存也是自然的说法,因为 M part 在后来的设计普遍就被拆分了,特别是几乎所有用户都没法对主存以下的存储编程,所以要严格就不能无视主存和 cache/寄存器的差别。然而所有这些部分自始自终都是“内存”。把主存和内存混在一起就不可能自然,只能解释为体系结构误解太多,不能编程的部分(容量又那么点)用户平时就忽略了,即便它们的日常作用就非常重要。
catalysia
2022 年 8 月 9 日
@FrankHB 加法器是直连累加器 然后累加器直连的打孔带 也就是说 也就是说累加器负责引导 I 和 O
而加法器连接 M 不需要经过累加器 M 和打孔带就是平级的 除非你这里把累加器当作了 M 的一部分
但是冯·诺依曼的草图里明显 M 是 M ACC 是 ACC

还是退到最原始的 打孔带作为存储的时候 这里要存储翻译干啥

最后我对翻译的理解就是约定俗成即可 有歧义就有歧义

现在家里独生子女多了 所以老八非得指那些吃 shit 的就指咯
你非得说 我家里就有第八个孩子 这么污名化老八不对 那我也没办法

而且歧义这个事情本来就是语言的特点之一 不是 bug 是特性
中文和英语都不是严谨语言 歧义是有存在必要的 是语言简化的充分必要条件
实在非要用严谨语言那程序员干脆都学法语得了
法语严谨没歧义

没有歧义的语言就没活力且学习和使用成本特别高
顺便说下你的这一大段回复里就有很多歧义的地方
FrankHB
2022 年 8 月 10 日
@catalysia 我指的是 1940~1950 年代年代的早期数字式电子计算机中通常被当作冯·诺依曼机鼻祖的具体设计。
还是不清楚你说的最原始的是指哪个。实际的 EDVAC 在 1949 年交付,外存是磁带(一说磁性钢丝),直到 1954 年才升级支持打孔卡 I/O ,1955 年支持磁鼓。(题外话,最早的直连磁记录的键盘输入设备 UNITYPER 在 1952 年就能用了。)

我强调的是,即便是这类最早期的实用设计,也是区分两种 memory 的。原因很现实:考虑延迟和持久化要求,没什么同时适合担当两种部件的物理实现——甚至到现在也很少见,以至于仍然有物理内存和硬盘的差异。
即便现在所谓的冯·诺依曼机习惯上不那么强调不同的 memory ,在这个问题上仍属于横插一杠——要在体系结构上消除两类存储的差别,通过随意模拟经典的冯·诺依曼机凑数是不够的。

至于翻译,首先要看是否准确达义,约定俗成是在歧义不会阻碍理解的情况下才轮得到考虑的次要的方面。不论是特性还是 bug ,在阻碍主要需求的时候都应当尽量排除。
如果不是无路可退,就不选择有歧义的翻译,至少是避免卖弄半吊子语言水平增加歧义的翻译(比如什么“堆栈”)。而这里并不属于没词可用的情况。
现在的状况是已经够混乱了。比如问一个 C 语言用户:寄存器(register)属于 memory 吗?硬盘空间可能作为 memory 的一部分吗?继续放任混用就容易凌乱。
所以在我经手的技术文献中,memory 通常就翻译成存储。
catalysia
2022 年 8 月 10 日
@FrankHB 你这样依旧有歧义 对于 ios 设备用户来说 如果 memory 翻译成存储 那存储空间不足是说的内存不足吗?删除软件是在释放内存吗?如果硬盘空间不属于 memory 那 cache 和 swap 区算啥?还有把手机上的内部存储器说成硬盘或者闪存也是很大的歧义啊 如果 nand 被叫成硬盘 那 ipods classic 用的 1.5 寸 hard disc 叫啥呢 如果叫闪存 那使用 nor 极平电路存储设备的设备该叫啥呢?使用 POM 的呢?使用 PEROM 和 CMOS 的呢?
甚至还有 CCD 的设备啊? CCD 算是最 bug 的了 你说他是硬盘吧 unit 可以直接访问它,它掉电就没,它不需要存储翻译 也不需要控制器 你说他是寄存器吧?它在总线外 有独立的 ISP 你说它是内存吧?它有独立供电在系统循环之外,关机它也不掉电,数据也不消失,而且它就在启动时被完全读取进内存 系统没它也没事
FrankHB
2022 年 8 月 12 日
@catalysia 歧义生效的主要问题是指代不明,同时没法通过补充定义来消歧义。排除歧义的优先顺序不一定就是看歧义“大不大”,而首先要考虑添加消歧义后如何避免逻辑矛盾,否则意味着整个说法就是一团乱。
一股脑儿把包括提供硬盘空间在内的存储部件都叫 memory 可以不是歧义,因为至少是技术上正确的,memory 就是个系统能支持的顶层分类。全混沌抽象成 memory ,最多只是不够明确而不是歧义。虽说考虑到大多数典型实现的习惯,在物理器件上,强调持久性的 memory 一般会直接叫做 storage ,而名义叫做 memory 的实际自动退化为 internal memory ,但这种情况下仍然不算错,因为内存都是存储。

同理,内存不足都是存储不足,反过来未必。理由么,用 PL 的话来说,内存是存储的真(proper)子类型,在这个偏正结构的上下文中符合协变,因此形式地有:内存⫋存储→内存不足⫋存储不足。这个推理的依据是普遍的类型论公理,跟直觉相一致。
删除软件可能真是在释放内存,比如你软件存 RAM disk 上。当然,更多时候软件放在外存,所以直接说“释放内存”一般就是错的。这里麻烦的关节其实是基本会至少隔了个文件系统,所以用户见到的效果不同。如果要强调可用性,那么还不如直接叫“释放空间”,尽管“空间”其实比“存储”更抽象而笼统,但不同上下文体验容易一致。
cache 和 swap 自然都算 memory 。前者总是内存所以是存储;后者在系统可见的虚拟地址空间视图上属于主存,即便不保证不是内存(无聊点可以 RAM disk 上继续划 swap 出来)且系统自身看到可能不同,说成“存储”也是没歧义的。

直接把手机外存说成硬盘是错的,因为几乎就没手机真带硬盘。很早以前的 WM 设备能带动内含微硬盘的 CF 卡,基本也就只有这种非主流奇葩配置下才可能偶然正确。
顺便,现在市面上的手机也有带 SSD 的,但 SSD 不是硬盘。PC 上所谓的硬盘很多也是离谱的,真正的硬“盘”是 HDD 这样的带有机械盘片结构的磁盘(跟软盘相对),而 SSD 一类封装 IC 驱动器大部分存储部件通常就是闪存,恰恰不是硬盘,硬说“盘”(扁的,不要求圆的能转的,其实是 plate 而不是 disk 了)也就是闪存盘。iPod Classic 那种叫硬盘没问题,因为真是 HDD 。
把 SSD 算硬盘这个怕是真没救了。但这里至少也可以用更准确的说法代替来回避。

IC 实现的非易失存储可以都叫闪存,尽管这个提法在历史上不能涵盖 PROM 之类的形态。但现时闪存一般不被认为专有的商标,所以就像 PC 不需要专指 IBM PC 一样,可以按照构词追溯到语源之前,追认传统的 PROM 作为现在意义的闪存( flash 指可擦写),这也不会有什么问题。字面上反倒是 ROM 的“只读”尴尬多了,但就是这个都能靠加前缀救回来,扩展闪存的外延又算啥呢?
再者,现时几乎也就 NAND 和 NOR Flash ROM 两种,限制闪存的具体实现也是不明智的。不必要排除历史或未来的其它实现。

至于 CCD ,如果你说的是能作为传感器实现部分的那种,那么很明确不属于体系结构意义上的 memory ,尽管它能是物理实现意义上的。就像 SSD 主控里带的处理器甚至 CPU 微架构内部隐藏的协处理器(比如 Intel ME 跑 Minix 的 RISC CPU )也不应被视为整个系统意义上的控制器的一部分一样,这类部件都是体系结构意义下的可选实现细节。即便这类器件在物理上保持作为不同角色的能力,系统的拓扑结构限制了这些能力对系统外部(软件)可见,所以让角色重新回归也没什么意义——除非你讨论的系统能物理地把自己拆了动态重配置这些器件的角色——我是没见过。
FrankHB
2022 年 8 月 12 日
@FrankHB 注释:RAM disk 也是约定俗称的说法,其实照我上面的观点并不太支持,正经的说法应该是 RAM-backed virtual drive 。但这个实在太啰嗦和不常见了,就仍然沿用了 RAM disk 这个本质有问题但是至少外延上不会有歧义(不会找错东西)的说法——如果照虚拟设备(像 VHD 就不关心真的是不是真能让你看到个长得像 disk 的东西,而只是把 disk 该有的软件可访问的性质都模拟了)这样的意思的理解还是能说得通的。
usedTo404
2023 年 11 月 1 日
@autumn426 。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/870855

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX