kideny
V2EX  ›  编程

讨论下 function 这个单词的翻译

  •  
  •   kideny · Aug 12, 2016 · 9272 views
    This topic created in 3741 days ago, the information mentioned may be changed or developed.

    今天在群里有人问,软件开发中的函数和数学中的函数除了名字一样,还有啥一样的地方嘛?

    某人回答:除了名字一样,没啥一样的了。

    于是乎,我就去查了一下 function 这个单词的意思。

    function 这个单词,可以被翻译为,功能,作用,函数等多重意思。

    感觉在编程中,被翻译成功能块或者代码块,更合适。

    直接叫函数,感觉有点不恰当呢。

    这是不是, IT 行业的翻译害人系列呢?

    71 replies  •  2016-08-13 14:52:58 +08:00
    GordianZ
    GordianZ
    Aug 12, 2016
    2
    为什么不是函数呢?
    y=sin(x) 跟 var result = print("hello") 有什么区别么?
    lxrmido
    lxrmido
    Aug 12, 2016
    3
    21grams
    21grams
    Aug 12, 2016
    4
    软件开发中的函数和数学中的函数是有关系的,他们叫一个名字可不是什么巧合。
    bdbai
    bdbai
    Aug 12, 2016 via Android
    5
    个人认为两个函数的相同点在于,给定输入值,通过一定计算,返回一个值。编程中函数远比“功能块”“代码块”复杂,有必要区分开。
    举个例子, Javascript 以及各种 函数式语言。
    ynyounuo
    ynyounuo
    Aug 12, 2016
    6
    叫「代码块」稍微欠那么一点儿意思
    soland
    soland
    Aug 12, 2016
    7
    软件开发中的函数,数学中的函数
    最终的含义是一样的。
    kideny
    kideny
    OP
    Aug 12, 2016
    8
    @GordianZ 区别大了吧。。。
    learnshare
    learnshare
    Aug 12, 2016❤️2
    9
    代码中,叫函数;代码功能上,叫方法;软件层面,叫功能。这不就和谐了
    bdbai
    bdbai
    Aug 12, 2016 via Android
    10
    @kideny 没啥区别 真的
    y=sin(x) 和 Let result = Sin(input)

    骚年放下 PHP ,来玩玩函数式编程吧。
    bdbai
    bdbai
    Aug 12, 2016 via Android
    11
    @learnshare 函数和功能不应该对应起来。不是一个层面的东西。
    hronro
    hronro
    Aug 12, 2016 via Android
    12
    一般编程中的函数都有副作用,而数学中的函数没有。建议去看看函数式编程中 pure function 的概念
    Kisesy
    Kisesy
    Aug 12, 2016
    13
    很多编程书里也写成子程序
    kideny
    kideny
    OP
    Aug 12, 2016
    14
    @Kisesy 叫子程序,显然更严谨一些。
    kideny
    kideny
    OP
    Aug 12, 2016
    15
    @bdbai 让你说的数学里的=和编程里的=,一样似的
    levn
    levn
    Aug 12, 2016
    16
    学 haskell 喽
    learnshare
    learnshare
    Aug 12, 2016
    17
    @bdbai 所以我分了三个层面
    BOYPT
    BOYPT
    Aug 12, 2016
    18
    以前学 basic 就没搞清楚怎么又有 Sub 又有 Function 。
    汇编里面的函数就叫 PROC ,过程吧。
    其实啊,程序语言是数学语言的一个子集,程序函数是数学函数的子集。
    SpicyCat
    SpicyCat
    Aug 12, 2016❤️1
    19
    在找到更好的翻译之前,还是用 「函数」 这个翻译吧。
    「功能块」 或者 「代码块」 比 「函数」 这个翻译更差。
    bdbai
    bdbai
    Aug 12, 2016 via Android
    20
    @Kisesy VB 里的 Sub 么?
    @kideny 我们在讨论 function 而不是等号。讲真,了解点别的对你有好处。
    @learnshare 我以为你说的是一一对应的关系。
    Cee
    Cee
    Aug 12, 2016
    21
    Like procedure vs. function
    kooze
    kooze
    Aug 12, 2016
    22
    心里明白就好,用英文去思考。
    imn1
    imn1
    Aug 12, 2016
    23
    $trans en:zh function
    function
    /ˈfəNGkSHən/

    功能
    (Gōngnéng)

    Definitions of function
    [ English → 简体中文 ]

    noun
    功能
    function
    函数
    function
    作用
    effect, action, function, activity, intention
    机能
    function
    性能
    performance, property, capability, function
    功用
    function, effect, use
    官能
    function, sense
    意向
    intention, intent, purpose, disposition, aim, function

    verb
    活动
    exercise, move about, move around, behave, function
    行使职责
    function
    ----------------------------------------
    嗯,我觉得“官能”这个翻译好
    bdbai
    bdbai
    Aug 12, 2016 via Android
    24
    @imn1 匿名官能、回调官能....
    bqbkbz
    bqbkbz
    Aug 12, 2016
    25
    类似的还有 map
    kideny
    kideny
    OP
    Aug 12, 2016
    26
    @bdbai 我是在跟你讨论 function 的中文翻译,而不是讨论 function 这个单词。参与讨论前,请先看清楚再说话。
    kideny
    kideny
    OP
    Aug 12, 2016
    27
    数学里的函数,等号左右两边是相等的吧;
    程序里把 function 赋值给变量,仅仅是赋值,那是=号嘛?
    因为 function 可以赋值给变量,写法跟数学函数一样用等号,
    就说编程的 function 跟数学函数是一个意思,这是典型的偷换概念吧。
    kideny
    kideny
    OP
    Aug 12, 2016
    28
    再说了,变量可以赋值任何东西,跟数学的函数有毛关系?
    bdbai
    bdbai
    Aug 12, 2016
    29
    @kideny 我的观点是“函数”这一翻译没有问题,而“代码块”欠妥。
    kideny
    kideny
    OP
    Aug 12, 2016
    30
    @bdbai 你可以自己定义下,什么叫函数了。
    czheo
    czheo
    Aug 12, 2016❤️2
    31
    那 block 翻译成什么
    kideny
    kideny
    OP
    Aug 12, 2016
    32
    @czheo 你这样问没意思,一词多意多了去了。
    不能因为可以在别的地方叫一个意思,就在所有地方都这样叫。
    就跟小姐是一个意思。
    kideny
    kideny
    OP
    Aug 12, 2016
    33
    @czheo 一个英文单词应该翻译成什么,肯定跟他用在什么地方有关。 function 这个词,最早在数学里翻译过来,也是叫方程式的,也不是叫函数的。
    慢慢也不知道怎么搞的,数学里开始叫函数,编程里也叫函数。
    鬼知道,这个函数是什么鬼啊。
    但是你跟老外说 function ,大家都知道。
    就像你跟外国人说小姐是鸡,他肯定傻逼半天。
    trcnkq
    trcnkq
    Aug 12, 2016
    34
    数学里“函数”本来也叫“映射”: input -> output
    只是很多很常见的计算机语言语言允许让函数有*副作用*,于是成了: <input, 之前的 env> -> <output, 之后的 env>,然而本质还是“映射”。
    函数式语言推崇让函数不产生副作用,返璞归真,回到它原始的含义。
    levn
    levn
    Aug 12, 2016❤️1
    35
    @kideny
    应该说,外国人在编程术语里使用 function 这个词的时候,指的就是和数学函数相关的那个意思。而不是什么“功能”的意思。毕竟最开始搞这些的都是搞学术的,最开始也是用来计算的。
    那时候应该还没有应用软件工程师这种玩意儿吧。
    cxbig
    cxbig
    Aug 12, 2016❤️1
    36
    看看维基百科 https://zh.wikipedia.org/wiki/函数
    图片已经很简明了,函数就是输入一个参数,得到一个结果。这和 function 在各程序语言里的功能是一样的。
    kideny
    kideny
    OP
    Aug 12, 2016
    37
    @trcnkq function 这个单词,是清末传入中国的。最早叫方程式,你确定那时候的数学家是想表达映射的意思?
    @cxbig 维基百科里第一行是:本文介绍的是数学中的函数。关于计算机领域的函数,详见“子程序”。
    SuperMild
    SuperMild
    Aug 12, 2016 via iPhone
    38
    中文书面语是表意文字,把表音的外语翻译过来时是有先天问题的,怎么译都是错的,同时怎么译都是对的,以前人们外语水平不高不得不硬套汉字,现在的新出现的单词基本上都直接用英文了,这是趋势。

    对于过去的单词,我认为要么沿用旧译法,真不想用,也别创造新译法了,直接用英语单词就好。
    cxbig
    cxbig
    Aug 12, 2016
    39
    @kideny 那你有没有点过去看一下?
    - 子程式( subroutine )是一個概括性的術語
    - 函数( function ),又稱函式,是一種子程式,利用函数名稱,可以接收回傳值。
    kideny
    kideny
    OP
    Aug 12, 2016
    40
    @SuperMild 说的很中肯, github 上很多国人的项目,都直接用英文写注释,很给力啊。
    kideny
    kideny
    OP
    Aug 12, 2016
    41
    @cxbig 你赶紧去维基百科提交 bug ,别让函数跳转到子程序啦。
    cxbig
    cxbig
    Aug 12, 2016
    42
    @kideny 明白了,你的观点是根本不认同“函数”这个中文翻译,尽管大多数中文资料都是沿用这个名字。
    那么你喜欢用英文原文随便你咯。
    我认识的懂中文的欧洲朋友对“函数”这个中文名字没有任何理解或沟通上的障碍。
    chairuosen
    chairuosen
    Aug 12, 2016
    43
    sin(x)是函数 y=sin(x)是函数表达式

    所以单讲函数,是没区别的
    keenkiller
    keenkiller
    Aug 12, 2016
    44
    用函数没啥问题,特别是 haskell (手动滑稽)

    如果是功能块,那高阶函数怎么翻译?
    qdzzyb
    qdzzyb
    Aug 12, 2016
    45
    就叫它 坑
    menc
    menc
    Aug 12, 2016
    46
    @kideny

    你写数学证明的时候就没写过

    “令 h = xxx ” ?
    sharpy
    sharpy
    Aug 12, 2016
    47
    h = h + 1
    hcwhan
    hcwhan
    Aug 12, 2016 via Android
    48
    主要差异点 是副作用
    czheo
    czheo
    Aug 12, 2016❤️1
    49
    lz 有上过大学么?方程是 equation 好不好, function 在数学里的严谨定义一直都是集合的映射。不是说 function 里面有个 f 和 c 就是方程了。
    Death
    Death
    Aug 12, 2016 via Android
    50
    “函数”是一类“关系”,所以并没有什么问题
    ooonme
    ooonme
    Aug 12, 2016 via iPhone
    51
    function vs method
    ovear
    ovear
    Aug 12, 2016 via Android
    52
    输入输出模型,冯诺依曼体系。。函数这翻译很贴切呀,没用到输入输出的,用的是 side effect 副作用。。
    hinkal
    hinkal
    Aug 12, 2016
    53
    楼主没上过大学+1 。简直莫名其妙, 英语里数学函数和软件函数也是一个单词,要怪也不能怪翻译人员,而是怪该英文术语的发明者。况且这两次关系密切。误人子弟的是你那群里的某人吧。譬如就误了楼主你来这发帖
    wuxinli1025
    wuxinli1025
    Aug 12, 2016
    54
    功能(function)=方法(method)
    不喜欢被叫函数, 但是感觉函数是最准确的翻译, 好纠结。
    aprikyblue
    aprikyblue
    Aug 13, 2016 via Android
    55
    设 A , B 是非空的数集,如果按照某种确定的对应关系 f ,使对于集合 A 中的任意一个数 x ,在集合 B 中都有唯一确定的数 y 和它对应,那么就称 f: A→B 为从集合 A 到集合 B 的一个函数,记作 y=f(x),x∈A
    Rothschild
    Rothschild
    Aug 13, 2016
    56
    ls 培训班出来的越说越暴露自己知识水平啊
    paulagent
    paulagent
    Aug 13, 2016
    57
    没必要为了翻译问题吵架,计算机出现的晚,很多概念当初都是有别的背景的人提出来的,他们当年就是从本专业里找出来个概念来套上去,等后来计算机火了,再想改已经来不及了。除非你不想向后兼容了。
    orancho
    orancho
    Aug 13, 2016
    58
    恭喜楼主加入 bloqué豪华午餐
    ericls
    ericls
    Aug 13, 2016
    59
    只有 functional 的 function 是 function
    其他的 function 是 subroutine

    一个 function 给定相同的输入 应该永远给相同的输出

    不用谢
    ericls
    ericls
    Aug 13, 2016
    60
    @cxbig 不一样!!!!!!
    binux
    binux
    Aug 13, 2016
    61
    @ericls 即使带状态转移的 function 依旧是 function
    将子程序简化为 DFA 后,状态转移函数( transition function )依旧是 function ,它的输入包括状态。给定相同的输入依然满足永远给相同的输出
    ericls
    ericls
    Aug 13, 2016 via iPhone
    62
    @binux function 1+1=2 和 1+1 先发射一个火箭 再等于 2 是不一样的
    binux
    binux
    Aug 13, 2016
    63
    @ericls 如果发射火箭是「状态 a 置 1 」,即按钮按下。状态转移函数:状态 a 为 0 ,输入 1 , 1 ,状态 a 置 1 ,抛出 2 。那么它就是一个 transition function 。
    newton108
    newton108
    Aug 13, 2016
    64
    这个问题有哪怕一丁点儿的意义?
    v9ox
    v9ox
    Aug 13, 2016 via iPhone
    65
    函数数学上把定义域映射到值域

    程序里是对逻辑的封装,把 arguments 映射成 return value

    我觉得是一回事啊
    irgil
    irgil
    Aug 13, 2016
    66
    楼主没上过大学+1 ,代码块是 block ,有自己的定义和含义
    oska874
    oska874
    Aug 13, 2016
    67
    离开上下文的翻译都是刷流氓。
    jiongxiaobu
    jiongxiaobu
    Aug 13, 2016 via iPhone
    68
    一直叫它函数 因为它就是函数。
    Quaintjade
    Quaintjade
    Aug 13, 2016 via Android
    69
    写过 VB 就知道,有 Function 和 Sub 两种东西,最大的区别在于, Function 必须有返回值, Sub 本身可以没返回值。所以 Function 就是函数,而 Sub 才更接近代码块。
    Cu635
    Cu635
    Aug 13, 2016
    70
    @learnshare
    “方法”是面向对象程序设计的一个术语。
    Cu635
    Cu635
    Aug 13, 2016
    71
    “函数”定义上就是一个映射,只不过咱们从初中到高中再到非数学专业通修的高等数学 /微积分里面,学到的都是从数字或者向量映射到一个数字的函数。

    如果把定义域和值域的概念都扩展,都不仅仅看作数字 /向量的集合话,不就能兼容编程当中的“函数”了?(也就是说,把那些“副作用”也看成值域的一部分,函数的参数是一个向量,值域是包括返回值和“副作用”的一系列操作组成的向量)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   930 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 166ms · UTC 21:40 · PVG 05:40 · LAX 13:40 · JFK 16:40
    ♥ Do have faith in what you're doing.