Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

[牢骚] 中文的瓶颈

  最近在翻译一些文章,深刻地体会到了各国的文化差异。我们一直以天朝自居,认为自己的文化是最优越的。但文化这种东西本身就没有优越性可言,它是不可量化的,每一种文化都有自己的特点。我们不能坐井观天地唱“社会主义好”,只有认清自己才能进步。
  不懂英文的人看英文就如同我们看二进制似得(实际上英文字母和阿拉伯数字搁在一起再凑俩特殊字符就可以作为64进制来使用,这就是伟大的BASE64),全都是一样的符号,完全无法理解它是如何表达逻辑的。不懂中文的人看中文就如同我们看二维码似得,全都是不同的符号,“你们的大脑里都自带二维码扫描仪吗?”
  二维码可以储存的信息量大是它的优点,但二进制更贴近自然也是它的优点。为什么西方对自然科学的研究总是领先于我们?到这里可能就会有人觉得诧异了,“中国不是有四大发明吗?”。是有这个,但“四大发明”本身就是“中国古代四大发明”的简称,对比人类历史上的大发明,中国才四个算什么?而且这四大发明中,造纸和印刷发明的初衷就是为了人文科学,人们是觉得竹简太重了,屈原写个那么长的离骚得劈多少竹子?但这两项确实是不可否认的伟大发明!后面的火药和指南针就扯淡了,前者是在炼“长生不老丹”时碰巧发现的,后者是由于祭祀的需要,拿磁石造个勺又给碰巧发现了。谁没事去炼长生不老丹?谁没事拿磁石造个勺?这两个只能称为“发现”,和“发明”差远了。西方对科学的研究从泰勒斯时代就开始了,同时期的中国还是齐桓公的时代(与此同时,日本正处于石器时代)。古代中国的科技确实可以算是世界最先进的,至少在元灭宋之前一直都是。但是如果只看自然科学这部分,我们一直都落后于西方。
  前段时间看到有人问为什么不用中文做变量名?这很容易解释。西方人解方程可以用字母代替未知数,中国的方程怎么办?中国古代的方程也确实用“天”、“地”、“人”,这些无关紧要的字来作为未知数。但是中文基本没有什么词法,文言文根本就是以字为词,几乎所有近义字叠起来都可以组词,比如“包含”和“容纳”这两个词,把它拆开再组合又能得到两个词“包容”和“含纳”,这仿佛“置换反应”般的中文可不比化学简单。再比如“cut”这个词,可以对应的单字都有一堆,“切”、“割”、“削”、“剪”、“砍”,等。而且,这些单字又可以互相组词,比如“切割”、“剪切”,等。有些组合都没听说过,但只要用了就成了词。用鲁迅先生的话说就是“其实地上本没有路,走的人多了,也便成了路”。总之,即使使用那些无关紧要的字来做变量名也很难准确描述。虽然我们现在可以使用引号来特指单个字,但文言文甚至所有古代中文都是没有标点符号的。标点符号是新文化运动之后才从日本传入中国的。
  单字不适合作为变量名,那单词又如何?单词同样不适合!英文单词可以通过词性变化来准确描述概念,日文中也有类似的词性变化。而毫无词法可言的中文几乎是无视词性的。比如以前就举过的一个例子,“构造函数”这个词。业内的人一看就知道是“constructor function”,但是这个词给外行人的第一感觉就是“construct a function”。“构造”这个词既可以是名词又可以是动词,所以很容易让人误解。而这在日文中就算使用直译也不会产生这样的歧义,况且日文中对一些专有词汇普遍采取音译。
  说到音译,很多人会觉得那是最没水准的行为了。实际上很多专有词汇使用音译要科学的多,只是中文没有音译的传统而已。日文中有片假名那样的纯拼音符号,所以它们音译起来就非常容易。中文是完全的表意文字,任何一个字都是有意义的,而且中文存在很多同音字,这样音译就会出现很奇怪的现象。比如看《海贼王》的都知道“路飞”,他在某些版本中被翻译成了“鲁夫”,这就造成了翻译的差异。“路飞”这个名字给人一种非常敏捷的感觉,而翻译成“鲁夫”就给人一种非常粗鲁的感觉,表意文字用来音译就会给被翻译的对象附带一些额外属性。像“斯大林”这名字翻译的一听就让人觉得他很“大”,至少比本朝太祖还大。而“赫鲁晓夫”一听就让人感觉很“小”,本朝太祖都不把它放在眼里。还有一些回译的笑话,“蒋介石”被回译成“常凯申”、“孟子”被回译成“孟休斯”,各种乌龙事件层出不穷。总之,中文不适合音译!
  也许有人会问我怎么一直揭中文的短呢?就是因为很多人甚至不知道自己的短处,一味的以“华夏五千年文化”自居。还老摆出一副乾隆爷当年的态度。乾隆爷当年没给马嘎尔尼好脸色看的时候绝对想不到英吉利会一巴掌拍在他孙子脸上。遇上愤青就得问问他们“鸦片战争是哪一年?”,从来不看中国历史的人谈何爱国?不过话又说回来,咱的五千年文化可不是吹的,汉字既然能这样发展过来就一定有它的优点。否则根据达尔文定律,它就不应该是现在这样。
  这个世界是多态的,是优点还是缺点只是我们观察的角度不同而已。从人文艺术的角度分析,中文一定是世界上最优雅的文字。中文有世界上最庞大的词汇量,光汉字就有多少个?UTF-16从0x4E00到0x9FA5的位置全是汉字(20902个),这还没算上UTF-32中包含的汉字。而且汉字是可以再造的,我们自古以来就一直在创造越来越多的汉字。而英文呢?造词还好说,要想给英文添加个字母那比我们实现共产主义还困难,更何况中文的造词能力还远远强过英文。中文就不可能出现“词荒”的情况,这些丰富的词汇营造了中文的艺术价值。西方的艺术多以绘画、雕塑、音乐,为主,虽然也有不少的诗人、小说家,也有一些著名的文学作品。但和中国古代文学作品比起来,它们充其量是个写的很精彩且具有深刻意义的小说罢了。
  除了艺术价值之外,中文在句法上的逻辑性也比英文强。也许有人会问,编程语言不都用英文吗,怎么说中文的逻辑性比英文强呢?实际上编程语言和英文是完全不同的句法,要不然程序员的英文水平都要出神入化了!编程语言只是使用了英文单词作为关键词而已。如果把编程语言中的关键词全都翻译为中文会感觉很通顺,反倒是作为英文不行。比如“for”语句,在英文中习惯将状语放在宾语之后,而中文就习惯放在谓语前。而且不仅是状语,很多作为修饰的句法全都加个介词放到句末。这些问题可能在日常用语中不太显著,要是去翻翻法律条款之类的,估计美国人也多半看不懂。虽然中文也存在歧义句,但比起英文来已经好的多了,而且中文的歧义句大多数是由词法缺陷造成的。我们的词法确实不如英文严格,但是我们有优秀的句法。修饰语言元素的词通常都会放在被修饰的语言元素前,所以中文的词在句子中的位置非常中重要,这就和编程句法类似了吧?而英文句子后面介词短语或从句的位置大多数是随意的。另外,中文通常不会有人写出上百个字的长句吧?我们描述复杂逻辑更习惯与分句描述。英文倒好,喜欢使用大量从句,导致了读者必须通过内容去猜测那些从句是嵌套还关系还是并列关系。在中文里即使把名词全换成天干,把动词全换成地支,只要知道词性和词在句中的位置就可以推导出句子的逻辑,不需要依赖于内容。比如就这句“只要知道词性和词在句中的位置就可以推导出句子的逻辑”换成“只要(子)[甲]和[乙]在[丙]中的[丁]就可以(丑)出[戊]的[己]”,逻辑依然完整的被保留了。英文要是这么一折腾,逻辑就完全没了。我们学习英语的最大阻碍就在于此,如果说中文是弱类型的话,英语就是弱逻辑的。
  最后总结一下,中文的瓶颈在于其词法上的缺陷,只要这个问题能够解决就完全可以胜任编程语言。
网名:
52.91.185.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^