V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yayiji
V2EX  ›  问与答

cache 为什么翻译成缓存?

  •  3
     
  •   yayiji · 2020-12-29 22:08:39 +08:00 · 4658 次点击
    这是一个创建于 1457 天前的主题,其中的信息可能已经有所发展或是发生改变。

    注意,我不是问缓存是什么意思或作用,而是翻译者何以翻译成缓存,这里的缓指的是什么,翻译者是从哪种角度考虑的。我有点无法把缓存的字面意思对应他的英文定义上。反而台湾的翻译“快取”则明白的多

    Cache:A part of a computer's memory that stores copies of data that is often needed while a program is running. This data can be accessed very quickly.

    40 条回复    2020-12-30 10:56:25 +08:00
    Xusually
        1
    Xusually  
       2020-12-29 22:20:04 +08:00
    确实 cache 多数场景是你理解的这样。
    但是在另一些场景,比如系统中要写数据到 HDD,数据从 RAM 往 HDD 写入的时候,会先标记写,依据不同的配置去 flush 脏页数据到 HDD 的 Cache,HDD 最终执行写入。

    所以可能读写的时候 缓(冲)存(储) 的意思就出来了?
    ruimz
        2
    ruimz  
       2020-12-29 22:23:34 +08:00 via iPhone
    个人以为缓存取自 cache 的第一个特性,因为只存常用的数据,所以存的慢,有选择;快取取自 cache 的第二个特性,读取的时候快。
    DarkCat123
        3
    DarkCat123  
       2020-12-29 22:25:19 +08:00
    @Xusually 这种是不是应该叫 buffer?
    Xusually
        4
    Xusually  
       2020-12-29 22:31:08 +08:00   ❤️ 2
    @DarkCat123 buffer 的核心是缓冲,不是存。

    提供一个 in 和 out 的中间地带。Cache 有存储,cache 速度快。

    buffer 没有说要快,可能甚至更慢。

    摘自 wiki:

    Buffers are often used in conjunction with I/O to hardware, such as disk drives, sending or receiving data to or from a network, or playing sound on a speaker. A line to a rollercoaster in an amusement park shares many similarities. People who ride the coaster come in at an unknown and often variable pace, but the roller coaster will be able to load people in bursts (as a coaster arrives and is loaded). The queue area acts as a buffer—a temporary space where those wishing to ride wait until the ride is available. Buffers are usually used in a FIFO (first in, first out) method, outputting data in the order it arrived.

    Buffers can increase application performance by allowing synchronous operations such as file reads or writes to complete quickly instead of blocking while waiting for hardware interrupts to access a physical disk subsystem; instead, an operating system can immediately return a successful result from an API call, allowing an application to continue processing while the kernel completes the disk operation in the background. Further benefits can be achieved if the application is reading or writing small blocks of data that do not correspond to the block size of the disk subsystem, allowing a buffer to be used to aggregate many smaller read or write operations into block sizes that are more efficient for the disk subsystem, or in the case of a read, sometimes to completely avoid having to physically access a disk.
    smdbh
        5
    smdbh  
       2020-12-29 22:34:47 +08:00
    我觉得没有为什么,汉化的第一波没有问题,后面人就沿用了
    DarkCat123
        6
    DarkCat123  
       2020-12-29 22:34:58 +08:00
    @Xusually 非常感谢。
    作为一个业余计算机考古学家,很喜欢这样的知识。
    johnwood
        7
    johnwood  
       2020-12-29 22:35:17 +08:00
    “快取”更像一个动作,没体现出来“存”这个功能
    Xusually
        8
    Xusually  
       2020-12-29 22:38:19 +08:00
    @johnwood @yayiji @DarkCat123 我甚至都觉得台湾翻译成 快取 有谐音的意思[ kæʃ ] “开市”。
    also24
        9
    also24  
       2020-12-29 22:48:09 +08:00   ❤️ 4
    我翻看了一下 《计算机科学技术名词》( 2018 第三版)

    实际上这里面 Cache 的翻译并不是 『缓存』,而是 『高速缓冲存储器』,定义为:
    一种在主存储器与中央处理器之间、对程序员透明的快速小容量存储器。可用以改进存储器的有效传输率。

    而它对 Buffer 的翻译是 『缓冲存储器』,定义为:
    一种为匹配不同传输速率的数据而设置的存储区。可作为两种不同速度的存储器或两种计算机部件之间的同步装置,分为输入缓冲器和输出缓冲器。

    而被叫做为『缓存』的是 caching,定义为:
    为了减少客户端能感知到的访问延迟以及服务器 /网络负载,将频繁使用的数据储存在接近客户代理的技术。


    我觉得这里实际上可以看到一点命名思路,实际上是把 Cache 当做一类特殊的 Buffer 来进行命名了。
    既然如此,那对 Buffer 的『缓冲存储器』加上一些限定,起名 『高速 Buffer 』就好了。

    然而这么长的名字,大家肯定不会喜欢啊,久而久之又简称为了『缓存』,这实际上也间接导致了在面对 Buffer 和 Cache 的时候,很容易出现混淆不清的情况。

    由于暂时找不到前两版的相关文献,不太确定是否有其他的演化关系。
    hx1997
        10
    hx1997  
       2020-12-29 22:52:26 +08:00   ❤️ 1
    更迷惑的是“高速缓存”这个词... 难道“缓”字在这里不是“慢”的意思?
    johnwood
        11
    johnwood  
       2020-12-29 22:59:26 +08:00
    > Cache:A part of a computer's memory that stores copies of data that is often needed while a program is running. This data can be accessed very quickly.

    @also24 这段定义引用自字典:oxfordlearnersdictionaries 。com,比较狭义。

    “缓存”在硬件软件里都有,维基百科总结的比较全面:Cache_(computing)
    Xusually
        12
    Xusually  
       2020-12-29 22:59:39 +08:00   ❤️ 1
    @hx1997 缓是 缓冲 的意思
    johnwood
        13
    johnwood  
       2020-12-29 23:01:56 +08:00   ❤️ 1
    @hx1997 “缓”有延迟的意思
    存更秒:本义是问候;引申为寄托或心中有某种想法,“存”与“在”同为“才”声字,故又通“在”,表示存在、生存。--百度百科
    Xusually
        14
    Xusually  
       2020-12-29 23:02:16 +08:00
    @also24 wikipedia 上对于计算机领域内二者的意思和场景解释的比较详细,你可以参考一下,比你发的中文版的要明确。
    特别是对于 buffer 的。buffer 并不是速度不匹配的缓冲。比如音频输出的信号,要去驱动喇叭,这块缓冲就叫 buffer 。
    sagaxu
        15
    sagaxu  
       2020-12-29 23:03:57 +08:00 via Android
    缓存是高速缓冲存储器的简写,一种场景是合并读取,把多次慢速数据源的读取变成 1 次,另一种场景是合并写入,比如多次更新一个计数器,定期刷入慢速数据源,这就是缓缓存之。
    also24
        16
    also24  
       2020-12-29 23:04:08 +08:00
    @johnwood #11
    可能你理解错我的意思了,如楼主所说,我这里主要还是想去寻找一下翻译者的思路,而不是这个词的原本含义。

    技术名词的翻译,要么是大家自发统一,要么是国家层面定基调,考虑到 Cache 这个词应该是最早一批被翻译的。

    《全国科学技术名词审定委员会》就是这样一个机构,目前 《计算机科学技术名词》已经出了三版,可以称作相应的标准。

    我是希望通过查找这份标准中的详细描述,来推测一开始的翻译思路。
    also24
        17
    also24  
       2020-12-29 23:05:43 +08:00
    @Xusually #14
    如楼上所说,我这里并不是在讨论这个词的真正含义,选择这份文献是因为这份文献类似『国家标准』。

    楼主在发帖时也强调了 『不是问缓存是什么意思或作用,而是翻译者何以翻译成缓存』,更侧重于寻找到这样翻译的原因。
    also24
        18
    also24  
       2020-12-29 23:10:08 +08:00
    @Xusually #14
    另外补充一下,我这里引用的是 《计算机科学技术名词》。

    你提到的音频信号的例子,可能和 《通信科学技术名词》中对 buffer memory 的定义有些类似:
    通过临时存储,能使数据在具有不同传递特性的两个功能单元之间传递的专用存储器或存储区。
    sagaxu
        19
    sagaxu  
       2020-12-29 23:11:20 +08:00 via Android
    @also24 翻译的不同,更多的是偶然性,还有就是译者的文化经历。外婆和姥姥都统一不了,更别说架空的外来词的翻译了。有用音译的,比如马赛克,麦克风,还有完全忽略字面意思的,比如飘翻译成乱世佳人。
    eason1874
        20
    eason1874  
       2020-12-29 23:12:42 +08:00
    @hx1997 #10 缓不一定是慢,也有放松的意思——缓和、缓解、缓冲。

    Cache 高速缓冲存储器,缓存。我一开始就理解为:为减缓读写压力设置的存储器,能提高读取效率。我一直觉得很形象。直到几年前看到有人质疑这个翻译,当时他也是说缓不就是慢吗,我才发现,原来还有人这么理解。
    also24
        21
    also24  
       2020-12-29 23:16:09 +08:00
    @sagaxu #19
    但是楼主发帖就是想问这个的嘛,只能尽量翻一下相近的资料,看看能不能找到一些引子。

    翻的时候其实还发现一些有意思的东西,比如这篇文章:
    http://blog.sina.com.cn/s/blog_aa9e94d801017j4e.html

    从这里甚至可以看到 Cyber -> 赛伯 的关联,以及老生常谈的 emulation 和 simulation 等等,还是蛮有意思的~
    hx1997
        22
    hx1997  
       2020-12-29 23:16:22 +08:00
    @eason1874 其实我的思路是这样的:缓存 = 缓冲存储器 = 减缓冲击的存储器,减缓冲击让我想到道路上的减速带,减速带的作用是让汽车变慢,引申到存储器上就是让数据的到来变慢的存储器,但是这样在前面再加上“高速”这个修饰词就让我觉得有点费解...
    hlwjia
        23
    hlwjia  
       2020-12-29 23:18:34 +08:00
    感觉回到了 n 多年前的 v2
    johnwood
        24
    johnwood  
       2020-12-29 23:18:41 +08:00
    @also24 #17
    cache 有 cpu cache , disk cache , web cache
    楼主说的 cache 到底式哪个 cache , 他没有定义清楚。🤣
    估计比较难达到目标
    lance6716
        25
    lance6716  
       2020-12-29 23:22:49 +08:00 via Android
    缓存=快取啊,这不恰好是一个中间层的从存、取两个角度的说明吗
    natsji
        26
    natsji  
       2020-12-29 23:48:12 +08:00   ❤️ 1
    nasmatic
        27
    nasmatic  
       2020-12-30 00:10:35 +08:00
    看到头像就点进来了,与帖子内容无关
    Jooooooooo
        28
    Jooooooooo  
       2020-12-30 00:15:11 +08:00   ❤️ 1
    我来说另外一个翻译明显错误的词

    bump the point: 指针碰撞

    翻译的人显然不知道 bump 除了"碰撞"还有"顶上去"的意思

    像是论坛里面通过回复把帖子顶上去的动作就叫做 bump, 类似于以前贴吧里面回复 "顶", 国外的论坛有个完全对应的词就是 bump

    bump the point 很显然是类似这种顶的动作, 通过把指针在内存地址中移动而分配出更大的空间, 和碰撞没有半毛钱关系
    hx1997
        29
    hx1997  
       2020-12-30 00:21:36 +08:00 via Android   ❤️ 1
    @natsji 不,1969 年 1 月就有一篇*非翻译*的学术文章介绍 IBM 360/85,其中用到了高速缓冲存储器这个词,并且明确说了它是 CPU 和主存间的缓冲器,也就是 cache,这个翻译应该在 69 年前就出现了。至于缓冲存储器这个词就更早了。
    janus77
        30
    janus77  
       2020-12-30 00:38:25 +08:00 via iPhone
    缓=缓冲,存=存储(名词)。你理解的存应该是一个动作,如果你把他理解成名词(类比“内存”)就行了
    kaneg
        31
    kaneg  
       2020-12-30 00:41:10 +08:00 via iPhone
    buffer 是写入时的缓冲区,cache 是读取时的缓冲区,正好方向相反。翻译成快取是挺恰当的,既有意义也有音似。
    二者最初都是为了消除两种速度不同的存储之间的鸿沟,尽管方向不同,但目的相似,所以在日常使用中基本是混着用的。
    lxilu
        32
    lxilu  
       2020-12-30 01:32:05 +08:00 via iPhone
    @Jooooooooo #28
    bump 应该是本意撞引申为顶贴(向上撞)
    bump pointer 我想象是 一串纸盒 拉住线甩一甩 发出碰撞声 靠到一起
    我觉得碰撞和 bump 正式程度差很多,按碰碰车译为碰碰指针好了
    opengps
        33
    opengps  
       2020-12-30 01:41:28 +08:00
    很多解释都是翻译初期定义的,当下已经不能严格准确了,甚至说本来就没有更合适的词汇来匹配
    GuuJiang
        34
    GuuJiang  
       2020-12-30 01:42:49 +08:00 via iPhone
    大陆翻译和台湾翻译各体现了一半的功能
    缓存 - 写的时候仅写到 cache,随后再慢慢地写到目标存储
    快取 - 读时若命中则加快了读取速度

    所以,不如两岸结合一下,就叫……擦车
    lxilu
        35
    lxilu  
       2020-12-30 01:59:31 +08:00 via iPhone
    #32 指针顶撞 也不错,有点感觉指针们挤来挤去挤出空间
    GeruzoniAnsasu
        36
    GeruzoniAnsasu  
       2020-12-30 03:00:39 +08:00
    cache 最早不是翻译成缓存

    是 “高速”缓存


    由于汉语分析语的特点,国内标准翻译倾向于用现有的词组合表达新的概念
    与之相对的是西方屈折语系通过改变词本身的形态来创造新词

    violin viola “小”提琴 “中”提琴




    cache 是用来在处理器和存储器之间加快频繁访问数据的存取速度而设置的
    由于设置在高速处理器和低速存储器之间,因此称它为“高速缓冲存储器”并没有什么问题。缓存是这个全称缩写之后的结果。

    就好比 memory 和 internal storage 都被简称为内存
    但 memory 对应的词叫“内部”存储器,internal storage 应该叫“内置”“存储区”
    Smash
        37
    Smash  
       2020-12-30 08:01:27 +08:00   ❤️ 1
    通篇看完,我已经不认识“缓存”这两个字了。
    zhuangjia
        38
    zhuangjia  
       2020-12-30 09:44:11 +08:00
    @Smash 我主要是不认识 “缓” 这个字了
    AilF
        39
    AilF  
       2020-12-30 10:15:07 +08:00
    看完之后我已经不懂缓存了
    lxilu
        40
    lxilu  
       2020-12-30 10:56:25 +08:00
    @GeruzoniAnsasu #36
    internal memory 才是内存,但常简称 memory,结果不是简称的 memory 也译内存
    它们都是“内部存储(器)”,但一个是机体内部,一个是冯-诺伊曼架构的内部
    混淆在于 memory 和 storage 都为存储器,但英语一般语境也不区分,一译反而统一
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3690 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 00:50 · PVG 08:50 · LAX 16:50 · JFK 19:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.