Clojure里面几个名词翻译的问题

60 views
Skip to first unread message

James Xu

unread,
May 21, 2012, 1:18:16 AM5/21/12
to cn-cl...@googlegroups.com
征求下大家意见,下面几个Clojure名词,在Java里面翻译成啥比较好:
1)Var
2)  Symbol
3)  Literal
4)  Form
5)  Special Form
6)Value

dennis zhuang

unread,
May 21, 2012, 1:19:42 AM5/21/12
to cn-cl...@googlegroups.com
个人倾向保留英文术语,因为很难翻译,比如这个form。
--
庄晓丹
Email:        killm...@gmail.com xzh...@avos.com
Site:           http://fnil.net
Twitter:      @killme2008



dennis zhuang

unread,
May 21, 2012, 1:20:44 AM5/21/12
to cn-cl...@googlegroups.com
保留英语术语,但是可以加上译者注,说说你对这个术语的理解,或者附上在其他语言里对应的术语,这样就比较好理解。

崔钢

unread,
May 21, 2012, 1:22:25 AM5/21/12
to cn-cl...@googlegroups.com
Literal 一般都翻译成字面的

在 2012年5月21日 下午1:18,James Xu <xumingmin...@gmail.com> 写道:

--
Writing on Valuable Thing of Life

Shouxun Yang

unread,
May 21, 2012, 1:25:31 AM5/21/12
to cn-cl...@googlegroups.com

不译也不好。
译后加注吧

帝归

unread,
May 21, 2012, 1:25:42 AM5/21/12
to cn-cl...@googlegroups.com
伞哥翻译的《实用Common Lisp编程》里就把form和special form翻译成“形式”和“特殊形式”,但是我个人感觉这种词汇还是保留英文原文,当做术语比较好。
--
‘(hello world)

Ruiyun Wen

unread,
May 21, 2012, 1:28:11 AM5/21/12
to cn-cl...@googlegroups.com
我觉得Vars、Form和Special Form因为在clojure里就是专有名字,建议不译。
 Form在PCL里译作“形式”,个人觉得也还算合理,但终究还是有些别扭。

Sun Ning

unread,
May 21, 2012, 1:27:57 AM5/21/12
to cn-cl...@googlegroups.com, dennis zhuang
Literal 字面量
Symbol 符号

form 在维基百科[1]上翻译成“式”,不过确实比较拗口

[1] http://zh.wikipedia.org/wiki/Common_Lisp

On Mon 21 May 2012 01:19:42 PM CST, dennis zhuang wrote:
> 个人倾向保留英文术语,因为很难翻译,比如这个form。
>
> 在 2012年5月21日 下午1:18,James Xu <xumingmin...@gmail.com
> <mailto:xumingmin...@gmail.com>>写道:
>
> 征求下大家意见,下面几个Clojure名词,在Java里面翻译成啥比较好:
> 1)Var
> 2) Symbol
> 3) Literal
> 4) Form
> 5) Special Form
> 6)Value
>
>
>
>
> --
> 庄晓丹
> Email: killm...@gmail.com <mailto:killm...@gmail.com>
> xzh...@avos.com <mailto:xzh...@avos.com>

Shouxun Yang

unread,
May 21, 2012, 1:29:42 AM5/21/12
to cn-cl...@googlegroups.com

Clojure里record译起来也有点别扭

璇玑

unread,
May 21, 2012, 2:41:58 AM5/21/12
to cn-cl...@googlegroups.com
保持原样比较好,要不加个注释什么的也很好.

Liutos

unread,
May 21, 2012, 2:46:41 AM5/21/12
to cn-cl...@googlegroups.com
form非要翻译翻译成``表达式'',不过最好不译,special form也是;-)
--
Liutos Love Linux LaTeX Lisp Ling

我的GitHub主页:https://github.com/Liutos

Shouxun Yang

unread,
May 21, 2012, 3:02:05 AM5/21/12
to cn-cl...@googlegroups.com
原则上都该翻译的。

不译应该是少数例外。

如果这个词是专门为这个语言生造的词,翻译后反而更不清楚了才不要译。

所以像Lisp语言里form和special form还是应该译的,田春的选择是合理的。

2012/5/21 Liutos <mat.l...@gmail.com>:

dennis zhuang

unread,
May 21, 2012, 3:04:11 AM5/21/12
to cn-cl...@googlegroups.com
form跟expression还是不一样的,翻译成表达式不恰当。

要说特殊,form和special form貌似也只有在LISP系语言中才有。
--
庄晓丹
Email:        killm...@gmail.com xzh...@avos.com

Ni HuaJie

unread,
May 21, 2012, 3:22:39 AM5/21/12
to cn-cl...@googlegroups.com
确实很纠结,不翻译会被人说中英文夹杂太不专业
翻译吧,似乎总是有欠临门一脚的感觉。

如果只是存在lisp语系,最好是能够统一一下;至少要clojure这一系要统一,否则初学者几本中文书一看就要抓狂了,对语言的推广反而不好。

Liutos

unread,
May 21, 2012, 7:19:30 AM5/21/12
to cn-cl...@googlegroups.com
可是单纯翻译为``式''好像太抽象了点吧

Liutos

unread,
May 21, 2012, 7:20:52 AM5/21/12
to cn-cl...@googlegroups.com
要不首次出现的时候加上英文原文,然后通过索引来弥补吧……

Qiu Xiafei

unread,
May 21, 2012, 7:26:59 AM5/21/12
to cn-cl...@googlegroups.com
觉得保留英文原文比较好。

2012/5/21 Liutos <mat.l...@gmail.com>

少 侠

unread,
May 21, 2012, 9:10:23 AM5/21/12
to CN-Clojure
一般分这么几种情况:

1)把握性很大的,直接翻译,比如说成例的,或是有接近的英文表述及其对应的中文译法做参照。
2)把握性很大的,但属于独创,以前基本上没见过,但译法没有歧义、很恰当,只需要第一次出现时加上英文原文,如:中文(abc)这种,以后直接用中文
词汇即可(如果有对译法的解释,可以加脚注)。
3)把握性不大,可一直采用中英文对照的形式,如:中文(abc),可选加脚注。
4)很难翻译,也很难理解的英文术语,可保留英文,但加上脚注说明大致意思。
5)很难翻译也无须翻译,一直以英文在社区出现,不存在理解障碍的,直接用英文即可(这种情况并不少见)。

建议养成多加脚注的习惯,只要翻译的时候稍有停顿,读者阅读时也一样会卡,不妨加个脚注说说,礼多人不怪:)

David Gao

unread,
May 21, 2012, 9:16:31 AM5/21/12
to cn-cl...@googlegroups.com
还是觉得不翻为好,翻译过来反而更不好理解。译注还是适当,这个很容易招人说。

少 侠

unread,
May 22, 2012, 9:38:50 AM5/22/12
to CN-Clojure
有道理,酌情考量吧,觉得含糊就拿出来大家民主表决呗!

On 5月21日, 下午9时16分, David Gao <well...@gmail.com> wrote:
> 还是觉得不翻为好,翻译过来反而更不好理解。译注还是适当,这个很容易招人说。

qiuxiafei

unread,
May 22, 2012, 1:08:47 PM5/22/12
to cn-cl...@googlegroups.com
看了protocal,感觉跟java interface很像,我甚至就觉得这就是interface,extend一个protocol就是在实现一个interface。
实在看不出有什么区别,请指教。

jaime

unread,
May 23, 2012, 4:21:27 AM5/23/12
to cn-cl...@googlegroups.com
以下是我的想法:
  1. Var - “变量”,本身就是指Variable的缩写,没必要使用特殊名称来区分我们平常理解的“变量”。所有的变量在编程语言里面,都是用一个变量名代表运行内存中的某个地方,在Clojure中可能令人迷惑的是那块代表变量的内存里的内容是“不可变”(immutable)的而已,但Var仍然是“变量”——它由一个符号指向一个存放某种值对象的地方。如果需要,也许可以在译文中指出这点。
  2. Symbol - “符号”,这个很直观了,在其它别的语言里面可能不会特意区分“符号”而已,它跟常量字符串一样。在Lisp类语言里面将其作为一类对象对待我想是为了提升对语言本身的操控能力。它的使用跟使用C中的指针本身应该是一样的(如“&v”)。
  3. Literal - “原义”/”字面量“,这个是根据Literal本身的英文意思取的,这应该不是Clojure特有。
  4. Form - ”形式“,Form其实也不是Clojure的术语啥的,它本身的意思就是”几种形式/形态之中的某种“,所以真正能称之为Clojure专有术语的应该是”Clojure Form“,也就是”Clojure形式“或者”Clojure形态“。所以我觉得”形式“一词还是合适的。
  5. 同理,Special Form可以直接就是”特殊形式“。
  6. Value - ”值“/”值对象“,这里用值对象的可能拗口点,但是可以更能表示出意思因为Clojure里面的”值“可以是任何东西因此用对象来囊括它们感觉比较适合。
纯属个人意见。

在 2012年5月21日星期一UTC+8下午1时18分16秒,James Xu写道:

Sun Ning

unread,
May 23, 2012, 4:55:02 AM5/23/12
to cn-cl...@googlegroups.com, jaime
symbol主要是在宏里用的,在运行时用处不大了

On Wed 23 May 2012 04:21:27 PM CST, jaime wrote:
> 以下是我的想法:
>
> 1. Var - “变量”,本身就是指Variable的缩写,没必要使用特殊名称来区分我
> 们平常理解的“变量”。所有的变量在编程语言里面,都是用一个变量名代表
> 运行内存中的某个地方,在Clojure中可能令人迷惑的是那块代表变量的内
> 存里的内容是“不可变”(immutable)的而已,但Var仍然是“*变量*”——它由
> 一个符号指向一个存放某种值对象的地方。如果需要,也许可以在译文中指
> 出这点。
> 2. Symbol - “符号”,这个很直观了,在其它别的语言里面可能不会特意区分
> “符号”而已,它跟常量字符串一样。在Lisp类语言里面将其作为一类对象对
> 待我想是为了提升对语言本身的操控能力。它的使用跟使用C中的指针本身
> 应该是一样的(如“&v”)。
> 3. Literal - “原义”/”字面量“,这个是根据Literal本身的英文意思取的,这
> 应该不是Clojure特有。
> 4. Form - ”形式“,Form其实也不是Clojure的术语啥的,它本身的意思就是”
> 几种形式/形态之中的某种“,所以真正能称之为Clojure专有术语的应该
> 是”Clojure Form“,也就是”Clojure形式“或者”Clojure形态“。所以我觉
> 得”形式“一词还是合适的。
> 5. 同理,Special Form可以直接就是”特殊形式“。
> 6. Value - ”值“/”值对象“,这里用值对象的可能拗口点,但是可以更能表示

X JM

unread,
May 23, 2012, 5:43:59 AM5/23/12
to Sun Ning, cn-cl...@googlegroups.com
这是我的理解:
  1. 所有对象都有名字
  2. 这个名字本身是一个符号
  3. 对符号的解释会指向对象(求值)
  4. 但是对符号进行”符号操作“(例如直接取符号”(symbol 'abc)“)就是对这个名字本身进行操作
  5. *另外需要指出,符号本身可以不指向任何对象
我的意思是其本质就是指针的一个名字(就向C里面指定一个指针变量?),然后可以通过对名字的操控来实现对“指针”的操控。宏也算是在运行时对代码进行操控,因此它是必然要经常用到指针操控这种操作的,只有这样才能让符号动态地指向需要的地方。

一般代码也是可以通过操控符号来实现想要的功能的(虽然我也还没想到在什么情况下比较适用),但下面代码也许可以作为一个有趣的例子:
    user=> (def abc 123)
    #'user/abc
    user=> (eval (symbol (str "a" "b" "c")))
    123

太久没写宏(甚至Clojure),不知有没有理解错误的地方?
35C.png

Shouxun Yang

unread,
May 23, 2012, 5:55:22 AM5/23/12
to cn-cl...@googlegroups.com

呵呵,Lisp里的symbolic computation不就是把symbol用到极致吗

崔钢

unread,
May 23, 2012, 8:50:24 AM5/23/12
to cn-cl...@googlegroups.com
的确很像。

在 2012年5月23日 上午1:08,qiuxiafei <qiux...@gmail.com> 写道:
> 看了protocal,感觉跟java interface很像,我甚至就觉得这就是interface,extend一个protocol就是在实现一个interface。
> 实在看不出有什么区别,请指教。

--

Robert Luo

unread,
May 28, 2012, 1:27:27 AM5/28/12
to cn-cl...@googlegroups.com
从语义上来看,protocol 和 interface 是一样的。但 protocol 是可以动态实现的,它不是一个设计时决定。如果一个 Java 类要实现一个 interface,必须在定义这个类的时候这么做。但 protocol 就不受这个约束,所以你可以让不是你自己创作的类来支持新定义的 protocol 。

这个概念在 Objective C 里面用得很多。

Robert Luo

unread,
May 28, 2012, 1:37:05 AM5/28/12
to cn-cl...@googlegroups.com


On Wednesday, May 23, 2012 4:21:27 PM UTC+8, jaime wrote:
以下是我的想法:
  1. Var - “变量”,本身就是指Variable的缩写,没必要使用特殊名称来区分我们平常理解的“变量”。所有的变量在编程语言里面,都是用一个变量名代表运行内存中的某个地方,在Clojure中可能令人迷惑的是那块代表变量的内存里的内容是“不可变”(immutable)的而已,但Var仍然是“变量”——它由一个符号指向一个存放某种值对象的地方。如果需要,也许可以在译文中指出这点。
Var 在 clojure 里面是一个专有名词,并非 Variable 的缩写,否则它会被写成 Var. 。它比较象变量,很多 Clojure 的初学者也把它作为 clojure 版本的变量,但它内容是不可变的,因此和变量本质上不同。Clojure 的核心思想是 identity 和 binding 的分离,这正是 variable 和 var 的区别。  
  1. Symbol - “符号”,这个很直观了,在其它别的语言里面可能不会特意区分“符号”而已,它跟常量字符串一样。在Lisp类语言里面将其作为一类对象对待我想是为了提升对语言本身的操控能力。它的使用跟使用C中的指针本身应该是一样的(如“&v”)。 
  1. Literal - “原义”/”字面量“,这个是根据Literal本身的英文意思取的,这应该不是Clojure特有。
  2. Form - ”形式“,Form其实也不是Clojure的术语啥的,它本身的意思就是”几种形式/形态之中的某种“,所以真正能称之为Clojure专有术语的应该是”Clojure Form“,也就是”Clojure形式“或者”Clojure形态“。所以我觉得”形式“一词还是合适的。
form 我自己译为“表单”,而不是“形式”,虽然我对这个翻译也很不满意。但 form 在 clojure 里类似于 fill the form 这个短语里的意思,而不是 H2O has 3 kind of forms 这样的含义。在前者中,form 指“有格式要求的表格或单张”,我们中文在现实时候中一般称为表格,令人不满意的是,这个“表格”一般具备table 一样的外观。这是中文造词法的一个麻烦。

Ruiyun Wen

unread,
May 28, 2012, 2:03:04 AM5/28/12
to cn-cl...@googlegroups.com
Luo兄,Form实在不行一定要译的话,还是“形式”吧,泪求了。
一则PCL里已经这么译,有利于一致。
二则由于HTML应用太过广泛,表单可能引发的不良联想非常不利于对这个概念的正确理解。

Liutos

unread,
May 28, 2012, 2:18:23 AM5/28/12
to cn-cl...@googlegroups.com
表单确实容易让人误解啊,不过如果面向的读者有Lisp有另当别论

Qihui Sun

unread,
May 30, 2012, 11:48:09 AM5/30/12
to cn-cl...@googlegroups.com
反对将form译成表单。我认为“形态”较恰当,因为这些东西就是些特殊的宏。

来自百科:
形态

形态是指指事物在一定条件下的表现形式。有时候被称为程式,指一种结构性要素,体现着对形态所流行的那个时代的重要观念的关注。不同的元素的排列组合或者编码方式构成不同的形态。一般指词法范围内的语法范畴和语法形式。狭义的形态指构形法,即用一个词的词形变化表示不同的语法意义,一般不改变词汇意义。广义的形态不但指构形法,而且兼指狭义的构词法。

--
Solomon
Google+: Qihui Sun



Ruiyun Wen

unread,
Aug 29, 2012, 11:49:33 PM8/29/12
to cn-cl...@googlegroups.com
我觉得其实form应该是formulation(形式化)的缩写,只不过形式化放到句子里不通顺。建议采用网上的另一个翻译“形构”——即形式构造,既不会与常用词“形式”或“表单”产生混淆,意义也更为贴近。

例如:“作为一种特殊的形构let,它具有XXOO的特质。”读起来貌似也不错。

帝归

unread,
Aug 29, 2012, 11:50:48 PM8/29/12
to cn-cl...@googlegroups.com
form是formulation么?
--
‘(hello world)

Ruiyun Wen

unread,
Aug 29, 2012, 11:54:19 PM8/29/12
to cn-cl...@googlegroups.com
其实可能更靠谱的源头是formula“公式”,纯臆测,未证实

Shouxun Yang

unread,
Aug 30, 2012, 12:05:57 AM8/30/12
to cn-cl...@googlegroups.com
form 在英语里就是 form, 并非来自formulation

2012/8/30 Ruiyun Wen <ruiyu...@gmail.com>:

Ruiyun Wen

unread,
Aug 30, 2012, 12:09:17 AM8/30/12
to cn-cl...@googlegroups.com
但词典里form的几个译意我觉得放在Clojure中都不甚恰当啊。那Yang兄觉得生造词“形构”如何?

Shouxun Yang

unread,
Aug 30, 2012, 1:43:54 AM8/30/12
to cn-cl...@googlegroups.com
在CL的标准(见hyperspec)里对form有明确的定义:

form n. 1. any object meant to be evaluated. 2. a symbol, a compound
form, or a self-evaluating object. 3. (for an operator, as in
``<<operator>> form'') a compound form having that operator as its
first element. ``A quote form is a constant form.''

Clojure在在方面并没有偏离CL。我的意见还是译作“形式”比较好。

2012/8/30 Ruiyun Wen <ruiyu...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages