计算机语言与人类语言

谢益辉 2014-01-04

蟒蛇社区雄赳赳气昂昂跨进统计学领域,有人呐喊一统江湖,有人拼命抹黑R语言(R语言不是语言),我不想讨论战争问题,这里只是谈谈关于计算机语言与人类语言的一些想法。

一门计算机语言容易被人诟病的地方通常是不符合“最小惊讶原则”,或者缺乏一致性。PHP就经常被人黑得没鼻子没脸,例如它的字符串函数名一会儿有下划线,一会儿没有,让人记不清到底有没有。尽管如此,PHP仍然是最流行的几种语言之一。

如果真的能只有一种语言一统江湖的话,那定是极好的,大家会少去大量的沟通成本,可是这样的事情在计算机世界和人类世界都没有发生。在这两个世界,都是各种语言割据使用者,有时候一种语言甚至还有派生的方言。为什么会有这样的现象?我不知道答案。

如果人类世界有一种语言终将一统江湖,我估计可能会是英语,但这种演进可能需要千万年的时间,尽管现阶段我们能觉察一些趋势。比如年轻一代人喜欢在嘴边挂着英文词汇,越来越多国人涌向英语国家,农村的方言在消逝,等等。作为人类语言,英语有没有最小惊讶的问题呢?想一想这个问题的话,就会发现“最小惊讶”在一定程度上只是一个主观判断,路人甲惊讶的东西路人乙可能觉得本来就该如此。一些例子:

英语中的“你”(You)没有专门的复数形式,即没有专门的“你们”这个词,确切地说是单数复数是同一个词,这让我感到很痛苦,因为当别人说You的时候,你不知道是指一个人还是指一群人。为了修补这个漏洞,美国人只好说You guys,而英国人似乎觉得美国人的这种说法很好笑。

复数本身对中文来说就是一个新概念,中文里一个苹果两个苹果都是用“苹果”这个词而不会说“苹果们”,英文里描述多于一个的(可数的)东西就得用复数形式,这在很多情况下何尝不是冗余表达?既然有数词在前面,后面的词何必再变化形式呢?变化就变化吧,还非得对某些名词作不规则的变化,apple变作apples,potato就得变作potatoes,photo却是photos,person要变成people,要是所有的复数统统都是加上s结尾不行吗?形容词的比较级和最高级、动词的过去时和过去分词都是一样的故事,总是充斥着不规则。高中时我出于叛逆心理经常和同学讲一个不好笑的笑话:good, gooder, goodest。

可数和不可数名词也是一个问题,一个名词是否可数并不取决于它是否真的可以数,例如“水”是一个连续的形态,所以不可数可以理解,但为什么“鱼”不可数呢?为什么不能说one fish, two fishes,明明就是一条一条明确可分的。

中文里的“他”和“她”的发音一样,所以我们口语中用人称代词不会仔细想指代的人的性别,到了英文的世界就很容易犯一个错误,也就是口语中经常he/she不分,说着说着就忘了需要先想清楚性别再发音,不然she is my husband / he is my wife之类的话说出来也挺吓人的。

英文里经常把结果放在条件的前面讲,也就是“什么什么,如果什么什么”,这也是一种奇怪的思维方式,从推理或推导的过程来说,应该是先有条件,再有结果。先讲结果的话,听完这半句则不知该作什么反应,很容易反应过早。

从人类语言的角度来说,没有什么最小惊讶,只有最大熟悉问题。英语这种全是漏洞和不规则性的语言都能流行,上哪儿说理去呢。