说文解字:解读Java中的“垃圾方言”(转)

中国人学电脑,多数情况下是通过看中文版的资料书来学习的。但是有过学电脑,特别是学习程序设计语言经历的读者(包括本人)都会有这样的体会:中文电脑书拿起来易如反掌,读起来却抓耳挠腮。原因之一就是书中有许多莫名其妙的中文专业术语。当然,它们都是从英文翻译过来的,只是翻译得太晦涩。 在我的记忆里,第一个让我念念不忘且深恶痛绝的中文专业术语是:“良基”。现在可能很少有人知道这个词。那是在我上大学时,在一门和人工智能有关的课程中,老师讲解“良基关系”。所谓“良基关系”就是满足几个条件的关系。我明白这几个条件的意思,当然算学会了“良基关系”,只是不明白为什么叫“良基”不叫“烧鸡”?“良基关系”好象很重要,因为老师“良基”了一个学期。许多年过去了,我现在还记得它。学期末的时候,要交一篇论文。我去查了英文资料,才知道满足那几个条件的关系是Well-Founded(基础良好),意思是设计良好、没有矛盾的关系。 我想我的同学应该和我一样,初见“良基”,一定会感到莫名其妙,相信本文的读者也有同感。因为它不是一个正常的中文名词,中文字典里找不到(可能是有人捏造出来的)。 Java是纯粹面向对象的程序设计语言,类似的语言还有C++等。如果你已经学过面向对象技术,还记得第一次看到“对象”一词的感觉吗?如果你没有学过,那么能看懂下面关于对象的解释吗? “世界上是由对象组成的。例如人是对象、电脑是对象、猪是对象、泥巴也是对象……”。 上面是大意,是我第一次学习面向对象技术时,一本中文书上的说法。我不明白,所以整个一本书都没有看懂。直到我知道对象翻译自英文的Object(物体),才慢慢学会面向对象技术。上面的说法实际上的意思是: “世界上是由物体组成的。例如人是物体、电脑是物体、猪是物体、泥巴是物体……”。 中文“专业”垃圾术语有几个特征。其一如“良基”,它是一个字典里和生活中闻所未闻的汉字组合:每个汉字都认识,但是拼在一起就不懂。其二如“对象”,它偏离了英文原意而导致误解,完全是张冠李戴。但是这些中文莫名其妙的术语对应的英文却都是简单的、生活化的英文单词,并非很晦涩。实际上,以我阅读英文资料的体会看,我并不认为有多少“专业”的英文计算机术语。相反,不知道译者出于何种原因,简单的英文单词翻译成中文后,就常常变得扑朔迷离、高深莫测,所以就成了中文“专业”术语。 下面主要以Java语言为例,列出一些中文计算机“术语”和它们对应的英文。 面向对象与Object-OrientedObject-Oriented的意思是“对象为主的、对象主导的”,而“面向”的同义词是“面对”,丝毫没有主导的含义。此中文术语与“对象”的垃圾特征相同。 本人在业余时间去讲课,我的一个学员在课上嘲笑“对象”,指出“面向对象”也非善类。我从来没有想到质疑“面向对象”,所以突然意识到,很多垃圾已经不知不觉成了我们学识的一部分了。 在此,我把“面向对象”列为本文的头条,以示对这位学员的感谢。 重载/重置与Overload/Override在我上课讲Overload/Override前,我总是先问这两个单词的中文术语是什么,应该怎么念,结果答案还不止一个。有的说“重载= Overload”,有的说“重载=Override”。一般都把“重载”和“重置”的“重”念成“重新”的“重”。 Overload的原意是“超载”,指几个方法的名字相同,但是方法的参数不同。本人理解其意思可能就是一个名字承担了太多的功能,就像一个人要打几份工伺候几个老板一样,活太多,有些超载了。所以,Overload应该对应“重载”,而“重载”的“重”是“沉重”而不是“重新”的意思。有些书把Overload翻译为“过载”,值得赞扬。 Override的含义和Overwrite相同,其原意是“越过”、“跳过”,即是某事情无效。它在Java中,表示子类的方法覆盖了父类的同名方法。因此我猜测Override对应“重置”,也许是“重新安置”的缩写?所以,“重置”的“重”应该是“重新”的“重”,不是“沉重”的“重”,不要与“重载”混淆了。“重置”和“良基”的垃圾特征相同,“重载”还勉强算个正常名词。唉!每次我讲课,都要嚼半天舌头来解释这两个中文“专业”术语。 函数与Function函数并非计算机专门术语。在中学时,数学课本上就有了函数一词。坦率地说,直到上大学,才知道“函数=Function(功能)”,不过目前仍然不明白为什么叫“函数”,是音译还是意译?所以虽然我知道它是垃圾,却不知道是哪一类,是“良基”的还是“对象”的,或者是某个垃圾新类型?如果说数学中的“函数”还和“数”多少有点关系的话,它可是和程序设计语言中的Function没有什么字面的关联。也许该把Function翻译为“函码”? 在Java中,可喜的是已经用method(方法)取代Function一词了,所以不必为解释“函数”再费口舌了。 显式/隐式与Explict/Implicit一看“显式/隐式”,就知道它们和“良基”同类,也是翻遍大字典,都找不到的中文计算机术语。“显式”译自explict,意思是明显地、明白的,例如语句int x= 4的结果是x被赋值4,可以很“明显”地能够看出x被赋初值。而x如果是类的成员,那么int x的结果是x被赋初值0。这种赋初值不太容易看出来,称为“隐式”赋值。隐式译自英文implicit,意思是隐含的、默认的。 线程与Thread“线程”译自英文的Thread,如果查字典就知道它指“线”,比如缝衣服用的线。衣服上有纵横交错的很多线,好象程序的流程图一样,所以,Thread在英文中比喻程序执行的线路。例如,判断语句如果真,就走流程图的这条“线”,如果为假,那么就走另外一条“线”。因此Multi-Threads指得就是程序在运行时,有几条“线”上的代码同时在运行。而非多线程的程序在流程图上只能有一条线上的代码在运行:一段代码没有执行完,绝对不许执行另外的代码。顺便补充一句,以上的“说文解字”是作者自己的猜测(因此也是原创)。猜测得对不对不知道,但是比喻却与Thread在程序设计中的含义完全吻合。可见,“线程”的垃圾特征与“良基”相同。 数据报文与Datagram才能做到人在旅途,感悟人生,享受人生。

说文解字:解读Java中的“垃圾方言”(转)

相关文章:

你感兴趣的文章:

标签云: