V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
dioxide
V2EX  ›  程序员

谁能给我说道说道这些"术语"区别?

  •  
  •   dioxide · 2020-05-22 17:51:55 +08:00 · 4477 次点击
    这是一个创建于 1679 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前想到的几组:

    1. copy 、clone 、duplicate
    2. call 、invoke 、apply
    3. iteratee 、iterator
    4. buffer 、cache

    从英语惯用法、在程序设计中的本质概念两个角度来看,它们的区别是?

    28 条回复    2020-05-22 22:38:27 +08:00
    dier
        1
    dier  
       2020-05-22 17:55:15 +08:00
    说个我理解的 buffer 和 cache
    Chowe
        2
    Chowe  
       2020-05-22 17:57:38 +08:00 via iPhone
    safety & security
    dier
        3
    dier  
       2020-05-22 17:58:48 +08:00   ❤️ 1
    呃,还没说完就发出去了;
    buffer 在计算机中常用于数据从内存到硬盘的缓冲,防止硬盘写不过来;因为内存读写比硬盘快太多
    cache 是用来提交内存到 CPU 交换效率的缓存;因为 CPU 计算比内存读写更快
    这是我的一些理解
    jimmy2010
        4
    jimmy2010  
       2020-05-22 18:01:29 +08:00 via Android
    我也有一个:
    arm64 和 aarch64 ?
    dioxide
        5
    dioxide  
    OP
       2020-05-22 18:09:22 +08:00
    @dier, 这样看来,buffer 似乎常用在在快慢设备 /模块中,做数据的批量同步, 最终表现为时间换空间的特性; 而 cache 最终似乎都表现为空间换时间的特性.
    chendy
        6
    chendy  
       2020-05-22 18:11:04 +08:00   ❤️ 1
    dioxide
        7
    dioxide  
    OP
       2020-05-22 18:11:59 +08:00   ❤️ 1
    @Chowe, 这个我理解: 前者是广义宽泛的安全,后者则通常侧重值机密性方面的安全
    no1xsyzy
        8
    no1xsyzy  
       2020-05-22 18:27:51 +08:00   ❤️ 8
    copy 是指数据的副本,clone 是指功能上一致的副本(底层可以任意打乱)也允许一定程度的改变,而 duplicate 含义比较多,考虑在比较词义,就采用近义的那个使动用法,强调了数据同时存在的副本,和其中一者的非必要性(值得注意的是 redundancy,表示同时存在的副本具有必要性)。除了 duplicate 强调同时存在外 copy 和 clone 没有本质区别,实际上混用影响不大。
    invoke 是请求,可以拒绝,call 强调子程,apply 强调函数。
    iteratee 是被迭代的数据,iterator 是迭代器,迭代器包含被迭代的数据或者能够构造对被迭代数据的引用。
    buffer 是时间上的移动平均或者逆移动平均; cache 是空间上的捷径。
    no1xsyzy
        9
    no1xsyzy  
       2020-05-22 18:29:22 +08:00   ❤️ 1
    @Chowe #2 safety 是一时的状态,security 是持久的维护。
    dioxide
        10
    dioxide  
    OP
       2020-05-22 18:33:21 +08:00
    @no1xsyzy, 3q, 这么一说,理解更丰富了. 这不但要英语学的好,语文还得过关啊
    newtype0092
        11
    newtype0092  
       2020-05-22 18:38:42 +08:00
    很多这种东西都是碰巧来的吧。
    大部分编程大牛都不是语言学家,有时候就是顺手选个又短又好记还带点关系的词。
    很多关键词在不同编程语言里含义都不是完全相同,用英语用法去分析在程序中的概念感觉就像用中文给英语单词注音的助记法一样:surly(暴躁的)-> 失礼 这种感觉。。。
    murmur
        12
    murmur  
       2020-05-22 18:40:58 +08:00
    call 和 apply,这不就 js 的两种调用方法么,只不过参数不同
    dioxide
        13
    dioxide  
    OP
       2020-05-22 18:43:01 +08:00
    @newtype0092, 所以才从英语惯用法、在程序设计中的本质概念两个角度来区分理解啊. 至于不同语言的语义不同,那只能说尽量求同存异的理解了.
    WeKeey
        14
    WeKeey  
       2020-05-22 19:05:32 +08:00
    string
    Android2MCU
        15
    Android2MCU  
       2020-05-22 19:50:44 +08:00 via iPhone
    为什么不是 git copy
    shyangs
        16
    shyangs  
       2020-05-22 20:01:20 +08:00
    信息和消息
    有什麼區別
    dioxide
        17
    dioxide  
    OP
       2020-05-22 20:02:20 +08:00
    @Android2MCU, 这种可能仅仅因为作者就是选了这个词. 另外,我总体上感觉,clone 通常比 copy 的动作要大. 底层做到工作要多
    dioxide
        18
    dioxide  
    OP
       2020-05-22 20:04:27 +08:00
    @shyangs, 呃, 这得看语境了, 在程序设计中,前者当然比后者更宽泛.
    Jony4Fun
        19
    Jony4Fun  
       2020-05-22 20:06:07 +08:00   ❤️ 1
    感觉英文还是要放在具体的语境 Context 中才能用中文来解释。
    个人认为 copy 和 clone 就是浅拷贝和深拷贝
    buffer 一般指内存中的一段空间,用来进行数据读写的,比如 read(fd, buffer), write(fd, buffer);而 cache 主要是将部分常用的数据放在一个比原介质更快的介质中,达到加速查询的目的。
    shyangs
        20
    shyangs  
       2020-05-22 20:12:02 +08:00
    首选项
    的『首』什麼意思, 首選項和選項有什麼區別.
    dioxide
        21
    dioxide  
    OP
       2020-05-22 20:12:20 +08:00
    @Jony4Fun, 理解一致, 我发现 buffer 也可以说是进行数据操作的“粒度”或者说“单位”.
    dioxide
        22
    dioxide  
    OP
       2020-05-22 20:13:36 +08:00
    @首选项, “首”应该当“偏好 /个性化”来理解, 就是优先级在默认值之上的选项.
    GeruzoniAnsasu
        23
    GeruzoniAnsasu  
       2020-05-22 20:18:06 +08:00 via Android   ❤️ 2
    copy 创造一个跟以前一样的实体
    clone copy to new and likely for modifying
    dupplicate 把原来的实体变成两个

    call 执行任意形式的子过程并期待返回
    invoke 代理给某个东西执行动作然后期待代理给我返回
    apply 给一个对象应用一个变换器,尤其是函数。因此 apply 的语境相当函数式

    iterator 用来访问集合的东西
    -ee 被遍历的东西


    buffer 存任意中间数据的地方
    cache 用于加快访问而特意放置中间数据的地方


    safety 开车撞车死不了
    security 开车不会被劫持方向盘
    kojirou
        24
    kojirou  
       2020-05-22 20:31:54 +08:00
    系统 /语言不一样,差别都很大啊
    GeruzoniAnsasu
        25
    GeruzoniAnsasu  
       2020-05-22 20:32:41 +08:00   ❤️ 1
    补充一下
    copy 的语境,被 copy 的东西就是原来的,完全没变,而且 copy 的时候并不一定产生了结果( copy - paste )
    duplicate 后,你一定得到了两份东西,是有结果的,而且这两份东西中是否一定有一份是原来的东西,并不一定,只是长得一样

    比如 file copied,此时你并不预期 copy 成了哪个实体,也许会写到后面想起来再说的什么路径里去
    但 file dupplicated 此时已经有两个一样的文件同时存在

    把某个数据 duplicate 一下发往两个地方,很可能两个副本都 不是之前那份数据的引用
    把某个数据 copy 到新地方,那肯定有一个是旧的引用本身




    call invoke apply 区分得还是比较清楚的,直接调用叫 call,委托调用叫 invoke,把固定好的变换作用在不同对象上叫 apply

    -or/-er 和 -ee 是主被动关系,这个不应该搞混才对

    cache 有一个建议译名叫“快取”,很好地体现了这个词的原本定义

    safety 和 security 并不好直接解释词义,开车这个语境比较容易分辨区别
    xcstream
        26
    xcstream  
       2020-05-22 21:03:41 +08:00   ❤️ 1
    copy 抄写文字 复印 广义的复制
    clone 复制一个一样的比较复杂物体,生物体之类, 一样的基因
    duplicate 复制一个完全一样的东西 ,强调完全一样

    call 打电话叫人做事
    invoke 激发某个功能
    apply 应用某方法

    iteratee 被迭代是数据
    iterator 迭代器

    buffer 写的缓冲
    cache 重复的读取的缓存
    meteor957
        27
    meteor957  
       2020-05-22 21:14:42 +08:00
    dump
    namelosw
        28
    namelosw  
       2020-05-22 22:38:27 +08:00   ❤️ 1
    copy 、clone 、duplicate:
    区别很小,不过 duplicate 有时候指原地已经粘贴了,copy,clone 可能复制一份但还没决定放哪

    call 、invoke 、apply:
    区别很小
    call 一般指调用,比如 f(1,2,3)一般可以叫做 call
    apply 指应用,一般 apply(f, [1,2,3]),比较强调参数列表
    不过有的语言也有个专门的 call
    Invoke 和 call 没啥区别

    iteratee 、iterator:
    主动被动,跟 employer employee 一样

    buffer 、cache:
    buffer 是缓冲,就是想写的地方慢,不想让那个设备拖慢所有东西,所以先写到 buffer 让 buffer 慢慢渗进去,有点像沙漏。但是计算还是该几遍还几遍
    cache 是缓存了结果,减少了计算次数,类似背小九九
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1068 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:47 · PVG 03:47 · LAX 11:47 · JFK 14:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.