中文翻译吾见之
——门外汉的场合
Revision 0.1
by K ][ N G of @ R KTM
[谁是门外汉]
门外汉的场合,就是指笔者kingofark的场合。是的,笔者不是专业人士,仅发表个人看法,也不针对特定个人或者团体,泛泛谈之。
[何时吾见之]
笔者近来欣喜的看到人民邮电出版社出版了Primer Plus系列,连忙下载样章来看。印象最深的是与其说是早有耳闻的C++ Primer Plus,倒不如说是C# Primer Plus。
正如互动出版网上面有网友评论对C++ Primer与C++ Primer Plus做的一番比较所说,Primer Plus系列的起点较低。C# Primer Plus第1章“计算机和计算机编程:基本概念”并无新意(当然,笔者没有任何贬义);第2章则引出了笔者的一些联想和想法——如题,是关于中文翻译的。
[吾见之何]
第2.5.1节“面向过程编程及先天缺陷”给笔者印象深刻。其用程序分支和对数据的访问两点很现实的说明了问题——比起笔者过去在很多书中看到对面向过程之缺陷冠冕堂皇的、学究的、颇具理论深度的“高谈阔论”(危机啦,需求啦,认知啦——玄乎),这个或许不全面但逼真的解释于初学者而言就更加具有说服力。
第2.7节“.NET中代码重用的基本单元:集合”——集合?集合(set)?集合(collection)?——仔细一看,原来是集合(assembly)!
[何吾为之抓狂]
我知道在数学语言中,set一向被译为“集合”。我知道Java中有collections和set,C#中也有collections和set;那么如果assembly是“集合”,collections该是什么呢?set呢?中文译名可真是一门学问哦——因为太混乱了罢。我装的金山词霸2002告诉我assembly是“集合, 装配, 集会, 集结, 汇编”的意思(呜呼呀!),大概C#中的assembly没被译为“汇编”都算是值得我们大家庆幸的事情了吧。
在中国电力出版社的《C# 精髓》中,collection被译为“集合”;在机械工业出版社的《Java编程思想》(第一版)中,collection也被译为“集合”——于是笔者又不禁担心起set的下场:呃……那个……也译为“集合”吗?
情况不止如此。local常常被被译为“局部(的)”,有时候在某些语境下也被译为“本地(的)”——于是问题又来了:当我们遇到Java Native Interface(JNI)的时候——不知道是谁干的——又把这里的native译为“本地”。
本地(local)?本地(native)?本地(vicinal)?本地(autochthonic)?呃……那个……指的哪一个?
[抓狂之后——说点正经的]
对于像Java中的collection,笔者认为完全可以不译,因为Java不仅有collection这个概念,还有Class Collections和Interface Collection。Class Collections和Interface Collection显然是不能译为中文的(如果有人对此都有异议,不妨看看本文末尾的附录“一个完全正式简体中文版的梦”);既然指的都是同一个范畴的东西,不妨干脆连collection都不要译,让这个概念与实际的Class Collections和Interface Collection很好的对应起来。如果真的要译——好吧,拜托——请换一个“集合”之外的名称,因为“集合”这个名称在N年以前就已经被set占用了(大家都明白,数学概念是深入人心的基本知识)。对于collection,笔者认为台湾的一种译法“群集”就不错——至少能与set(集合)区别开来。
那么assembly呢?在中国电力出版社的《C# 精髓》中,assembly被译为“配件”,这就是个可以接受的译法。其实对于assembly而言,.NET 框架类库中也有一个System.Reflection.Assembly,所以assembly这个概念保留不译也不是不行的。
“哦,那照你这么说,干脆全都不译得了!那行吗?!”有人会瞪着反问道。
笔者说:“如果能找到比较合适的词,当然可以译;但是如果找不到合适的词,与其四面八方各译各的乱七八糟,还不如不译,至少让大家都记得一个英文assembly不会引起混乱和误解。”
其实这里又涉及到一个比较学究的问题:语言学和语言心理学。其实语言词汇写下来,不过是一个记号;而人们真正要理解的,是这个记号所代表的含义,不是这个记号本身。
小明知道这本书里“集合”是指java.util.Collections,小强知道那本书里“集合”是指System.Reflection.Assembly——这当然好;问题在于——小明和小强初学的时候会花费多少时间来搞清楚关于“这个里面的‘集合’是指java.util.Collections,不是指System.Reflection.Assembly;那个里面的‘集合’是指System.Reflection.Assembly,不是指java.util.Collections;还有另外N本书里面的‘集合’是指什么呢?……唔,还是阿Q说得好‘凡事总须研究才能明白’……”的问题呢?
对于语言词汇本身的问题,一个语言学家研究研究,蛮好;我们也不排除本来想学编程的小明小强会有成为语言学家的可能。
那么能不能达到这样的情况呢:
1) 大家都统一使用一个比较合适的中文译法(比如,assemlby译为“配件”,collection译为“群集”),使得:在一定的技术范围内,只要一提到这个中文词,大家都独一无二的想到同一个意义(注意,不是指同一个词汇或者同一个名称);
或者
2) 大家都同意使用原文(比如,assembly,collection),外文不好的同胞克服一下困难,记住几个外来词,使得:在一定的技术范围内,只要一提到这个原文,大家都独一无二的想到同一个意义(注意,不是指同一个词汇或者同一个名称)。
这是笔者的理想中的两种情况。理想啊,理想。理想并非总不是虚无飘渺的。前几天笔者就做了一个荒诞恐怖的梦。
[附录:一个完全正式简体中文版的梦(的片断)]
经过数年的深入研究,译者X在语言学、翻译学方面有了长足进展,下面从其论文中摘录部分,以飨读者:
l C++的译法讨论:
“C加加”:确切的表达了“C++是C的超集”这个想法。其实要不是所有同行都写文章抨击我,我本来还不会这么译——“英文字母的第三个字母所代表的那个计算机语言加加”才是我理想中的译法咧。
“思易佳佳”:特别能表达这门计算机语言的易用和编程思维的优越性。
“肆意加加”:虽然“肆意”多多少少有些贬义,但是很能表达C/C++这个派系支持底层程序设计的强大功能。
l inline的译法讨论:
“内线”:江湖上有“内线人物”的说法,相信大家一旦想到了“内线人物”,就特别能理解inline的含义;所以译为“内线”,以心理暗示的方法提示大家。
l C++中friend的译法讨论:
“朋友”:亲切、易懂的译法。
…… 理想啊,理想。
(完)