|
|
|
|
|
|
S**b 发帖数: 1883 | 1 你听到窗外树上有鸟叫。你可以用汉语作这样一个表达:“树上有鸟。”这在汉语,是
一个明确,完整的表达。英语只有用“There is a bird on th
e tree”或者“There are birds on the tree”
。都必须先把树上究竟是只有一只鸟还是有一只以上的鸟弄清楚。如果这个信息对你很
重要的话,那么,不妨先去把鸟数一下然后再说话,也就罢了。可是,在绝大多数场合
,我们并不关心鸟的具体数目,这类信息即使弄清楚了也没有表达出来的必要,何况还
有弄不清楚的时候。并且,如果窗外的树不止一棵,那么,就英语而言,除了有“Th
ere are birds on the tree”外,还有“There a
re birds on the trees”的可能。你想要不把话说错,不但要
把鸟数清楚,还要弄清楚这些鸟是停在同一棵树上还是分停在不同的树上。
问题的根源正在于英语中的词尾变化。由此可见汉语语法的优越。那种词尾变化表面上
显得有助于精确表达,而实际上,这种词尾变化越多,语言的效率就越低。
汉化后的英语将会是这样:当我们知道树上有鸟但是数目不详或无意表达数目时,可用
“There be bird on the tree”。
当我们知道树上只有一只鸟并且也想告诉他人只有一只鸟时,可用“
There be a bird on the tree”。
当我们知道树上有一只以上的鸟并且也想告诉他人有关鸟的数量时,可用“There
be two bird on the tree”,“There be th
ree bird on the tree”或“There be some (
many etc.) bird on the tree”。
将英语中与数有关的词尾变化取消后,丝毫不妨碍英语的表达能力。
汉语不因数或时态等等而作词尾变化,用C++的概念来讲,实际上就是一种重载(O
verload)。重载是C++的两大主要特点之一(另一个特点是类(Class
))。所谓重载就是一个函数或算符具有一个以上的不同含义,而计算机根据执行函数
或算符时的环境来确定其含义。这里的“环境”,在
C++中,包括变量的类型,个数,顺序等等。在本文先前提到“树上有鸟”的例子中
,这个“有”字,当指一只鸟时,就相当于“is”;当指许多鸟时,就相当于“ar
e”。若再包括时态,那么,“有”字实际上重载了4种含义,即“is”,“are
”,“was”和“were”。这样的重载的好处和C++中的重载的好处是一样的
,都使语言的适应性更强,效率更高。没有重载的计算机语言在调用函数前,必须将变
量的类型,个数一一查明以便调用所对应的函数。与此类似,未重载的英语必须先把鸟
数清楚后才能造出逻辑和语法都正确的句子来。而重载的汉语不必预先数鸟就能造出正
确的句子来。
这正是汉语语法优越的地方。可以这样认为:同样一句话在不同的时间、场合、地点等
等可能具有不同的含义,实际上就是广义的重载。正是因为有了重载,人们的语言才显
得生动、活泼、富有内涵。
C++的另一特点——类,其实也正是汉语的特点。 |
|
|
|
|
|