阅读上一个主题 :: 阅读下一个主题 |
作者 |
从自然语言,人造语言,编程语言的对照,说到汉语,英语的优缺点比较(1) |
 |
吴耐 [个人文集]
加入时间: 2004/03/06 文章: 1164
经验值: 54086
|
|
|
作者:吴耐 在 驴鸣镇 发贴, 来自 http://www.hjclub.org
上个星期看sailon网友的文章《汉语与程序语言》,提到《汉语是世界上唯一一种面向对象的高级语言》一文,本来没有兴趣再谈有关语言的话题,所以也没有去google这篇文章出来看。现在老稀把我以前写的一些有关语言文字的帖子做了个链接,并点名要我写点总结之类的东西。可是原来的帖子都是东拉西扯的不同话题,所以要总结起来,比写篇新东西还难。正好我也是编程出身,对面向对象之类的专业话题还知道点皮毛,还能搭讪几句,所以还是提交新帖一篇充个数算了。
我基本上同意《汉语是世界上唯一一种面向对象的高级语言》一文的大部分观点。但是要说汉语是“唯一”,话可能大了点。听说拉丁语,世界语都不错,都算得上是“面向对象”。这里对标题先挑个刺,下面就该文的某些观点挑点毛病,做些评注。请大家在看我的评注之前,还是看一下我要评注的这篇文章先。否则您都不知道我在说什么。
1. 谈封装的部分
1.1. 汉字和英语单词不是一个级别的概念
谈汉语的封装问题说的是汉字,谈英语的封装问题说的是单词。汉字和英语单词不是同级的概念。对于现代汉语来说,汉字兼有字符与单词的双重功能,作为字符功能,汉字实际应该是属于字符级别的,应该跟英文字母一个级别。汉字作为汉词使用,也叫做单字词。多字词也叫做词组,包括二字词,三字词等等。汉词包括单字词和多字词才是跟英语单词一个级别的东东。
如果大家同意,那么汉词跟英语单词一样,都是长短不固定的,所以外形封装上汉字没有什么优势。这是该文作者在外形接口论述上犯的一个毛病。
1.2. 定义接口
在定义接口上,作者说英语单词许多都是一词多义,汉字大部分是一字一意,这显然是睁眼瞎说。作者举例说“book”有书和课本的意思,还有预订、登记、立案的意思。其实一两个例子怎么能够说明问题呢?比如我也可以拿汉语的例子来反证作者的论点:汉字“会”也有“会议”和“能够做”两种含义,比如“我会弹琴”这句话中的“会”就是“能够做”的含义。
实际的情况是,不管汉语还是英语,常用的单词包含的含义都是要相对多一些,也就是更容易出现一词多义的情况,不常用的单词含义比较少一些,更容易出现一词一意的情况。而汉语一词多义的情况比英语更甚,因为汉字的数量远远比英语单词的数量要少,而汉语和英语要想表达同样多的概念和含义的话,平均每个汉字要比每个单词所承载的含义的数量要多。你随便翻开一本字典,看看每一个汉字包含多少种含义。比如拿汉语中的“字”与英语中的“word”做对比:
《《《《《《《《《《《《《《《《
字zì<动>
1) (会意兼形声。从宀(mián)从子,子亦声。在屋内生孩子。本义:生孩子)
同本义 [give birth to]
字,乳也。——《说文》。
字,生也。——《广雅》
妇人疏字者子活,数乳者子死。——《论衡•气寿》
六畜遂字。——《汉书》。颜师古注:“字,生也。”
苦山有木,服之不字。——《山海经•中山经》
亭有畜字马,岁课息。——《汉书•食货志下》
又如:字乳(生育);字育(生育、蕃育)
2) 怀孕,体内怀着胎儿 [be pregnant]
女子贞不字,十年乃字。——《易•屯》
乘字牝者,傧而不得聚会。——《史记•平准书》
又如:字牝(怀孕的母畜);字孕(怀胎;生殖);字马(怀孕的马)
3)抚养;养育;教养 [bring up]
其僚无子,使字敬叔。——《左传》
不能字人之孤而杀之。——《左传•成公十一年》
牛羊腓字之。——《诗•大雅•生民》
字而幼孩,遂而鸡豚。——柳宗元《种树郭橐驼传》
又如:字养(抚养;养育);字民(养育人民);字育(化生);字孤(抚养孤儿)
4)爱 [love]
于父,不能字厥子。——《书•廉诰》
乐王鲋字而敬。——《左传•昭公元年》。注:“字,爱也。”
又如:字孤(抚爱孤儿);字爱(抚爱)
5) 教育;教课;传授知识 [teach]
天会间,充女直字学生,学问通达,观书史,工为诗。——《金史•温敦兀带传》
6) 治理 [govern]
防民之理甚周,而不至皎察;字民之方甚裕,而不至使侵蛑。——刘禹锡《答饶州之使君书》
7) 取名;取表字 [style]
名余曰正则兮,字余曰灵均。——《楚辞•离骚》
武字子卿。——《汉书•李广苏建传》
张衡字平子。——《后汉书•张衡传》
扣其乡及姓字。——明•魏禧《大铁椎传》
8) 女子许嫁 [girl remain to be betrothed]
甚至于说,待字的大姑娘,也得拿出来抽签。——茅盾《动摇》
又如:字人(女子嫁人)
字zì<名>
9) 文字(古时单体叫文,合体叫字,后人逐渐不再严格区别) [word;characters]
仓颉之初作书,盖依类象形,故谓之文,其后形声相益,即谓之字。文者物象本,字者言孳乳而浸多也。——《说文解字•叙》
说五字之文,至于二三万言。——《汉书•艺文志》
分文析字。——《汉书•刘歆传》
象形、指事,文也,会意、谐声、转注,字也。——《通志•六书略》
有奇字素无备者,旋刻之。——《梦溪笔谈•活板》
又如:字指(文字的含意);字号(以文字作符号);字音(文字的读音);字格(书写文字的格式);字债(文字的债务);字学(文字学);中国字,汉字;篆字;字脚(字眼);字养(指用在某处的字眼)
10) 表字,人的别名(字和名常有意义上的联系。自称用名,表示谦虚;称人用字,表示尊敬)[another name taken at the age of twenty]
男子二十,冠而字。——《礼记•曲礼上》
幼名,冠字。——《礼记•檀弓》。疏:“始生三月而加名,故去幼名;年二十,有为人父之道,朋友等类不可复呼其名,故冠顶加字。”
闻名即知其字,闻字而知其名,盖名与字相比附故。——《白虎通•姓名》
生而首上圩顶,故因名曰丘云。字仲尼,姓孔氏。——《史记•孔子世家》
陈胜者,阳城人也,字涉。——《史记•陈涉世家》
11) 名号 [(person's) name and alias]
季子谢之,请问姓字。——《论衡•书虚》
12) 用文字写成的凭据、字条或短柬 [receipt;contract]
杨执中又写了一个字去催权勿用见这字,收拾搭船来湖州。——《儒林外史》
又如:字据;立字为凭
13) 字眼,词 [wording;words;diction;words or phrases used in certain context ] 。如:他用字准确;在创业者的字典里找不到“害怕”这个字
14) 字迹 [handwriting]。如:字仿(仿照字样学写字);他写一手好字;她的字很难认
15) 书法 [calligraphy]。文字的书写艺术;特指用毛笔写汉字的艺术
又有李元中,字画之工,追踪钟王。——宋•王明清《挥麈三录》
16) 书法作品 [scripts]
原来是问金冬心的字,我拿去卖了。——巴金《秋》
专藏字,不藏画
17) 书信 [letter]
亲朋无一字,老病有孤舟。——杜甫《登岳阳楼》
托敝亲家写一封字来。——《儒林外史》
18) 字体 [form of a written or printed character;style of hand writing]。如:颜字;柳字
19) 字音 [pronunciation of a character]。如:咬字;字正腔圆
20) 姓
===============================
word
AHD:[wûrd]
D.J.[w*8d]
K.K.[w)d]
n.Abbr. wd.(名词)缩写 wd.
1) A sound or a combination of sounds, or its representation in writing or printing, that symbolizes and communicates a meaning and may consist of a single morpheme or of a combination of morphemes.
词,文字:一种声音或声音的结合,或以书写或印刷为代表,它象征或传达一个意思,也许包含一个词素或几个词素的组合
2) Something said; an utterance, a remark, or a comment:
话语:说的东西、言辞、评论或评语:
May I say a word about that?
我可以就此说说我的看法吗?
3) Computer Science A set of bits constituting the smallest unit of addressable memory.
【计算机科学】 字:构成可寻址贮存器最小单位的一套数字
4) words Discourse or talk; speech:
words 演讲或谈话;讲演:
Actions speak louder than words.
行动比言语有力
5) words Music The text of a vocal composition; lyrics.
words 【音乐】 歌词:声乐作品的词;歌词
6) An assurance or a promise; sworn intention:
誓约:保证或诺言;宣誓的意图:
She has kept her word.
她遵守诺言
7) A command or direction; an order:
命令或指挥;命令:
gave the word to retreat.
下令撤退
A verbal signal; a password or watchword.
口令;口令或暗号
9) News:
消息:
Any word on your promotion?See Synonyms at news
有你升迁的消息吗?参见 news
10) Rumor:
谣言:
Word has it they're divorcing.
有传言说他们在办离婚
11) words Hostile or angry remarks made back and forth.
words 对骂:往复地说有敌意的或含怒意的话
12) The Scriptures; the Bible.
圣书;圣经
v.tr.(及物动词)
word.ed, word.ing, words
13) To express in words:
用言语表达:
worded the petition carefully.
仔细措词申请书
》》》》》》》》》》》》》》》
这不光从实例上看起来是这样,实际从理论上从逻辑上讲更有说服力。比如说世界上总共有一百万个含义,汉语里只有一万个汉字来表达,平均每个汉字要表达1000,000/10,000=100个含义,英语里有十万个单词,平均每个单词要表达1,000,1000/100,1000=10个含义。正是因为汉字的数量太有限了,所以现代汉语为了表达清楚,为了减少同义现象,才引入了汉词(词组)来作为承载含义的最小单位。许多人的一个误区是以为汉字是承载含义的做小单位。其实汉字不是,汉词才是。如果拿汉词来跟英语单词比较,不能说汉词的数量就远远少于英语单词。但是作者在论述“定义接口”一节里,说的偏偏是汉字,而不是汉词。而且还言之凿凿的说大多数汉字的定义只有一个,比英语要强,这一点显然是错误的。
2. 谈继承性
在继承性方面汉语确实比英语要强很多。但是汉语的问题是“多重继承”过头了。在面向对象的编程语言中,多重继承是说一个子类拥有多个父类,这个子类继承多个父类的属性和操作方法。举个现实中不太恰当的比方,一个孩子长的像爸爸一样高大,像妈妈一样漂亮,我们说这个孩子发生了“多重继承”,爸爸妈妈是这个孩子的两个“父类”。
这种继承是准确继承,来不得半点含糊,绝不能出现模糊不清的地方。“面向对象”的编程仍然还是编程,仍然还是给电脑下命令,而不是用来跟其他人聊天的,绝对不允许出现任何歧义,你敢跟电脑开玩笑,电脑就敢让你哭笑不得。编程语言中的多重继承绝不会出现50%像爸爸,50%像妈妈的情况。要么身高完全像爸爸,或者脸蛋完全像妈妈,决不能出现身高介于爸爸妈妈之间,或者脸蛋介于爸爸妈妈之间的情况。
可是自然语言就完全不是这么回事了。汉词是否真的能够准确继承汉字的含义,是一个非常值得怀疑的问题。老芦已经在他的老帖子里批判过汉字“以字造词”造成的“望文生义”“不求甚解”的问题。我这里不多说,只是再举些例子让大家体会体会。比如汉词“熊猫”多重继承了汉字“熊”和“猫”,然而从含义上来说,“熊猫”到底是“熊”还是“猫”?“袋鼠”真的是“鼠辈”吗?斑马是马,河马是马,海马也是马?河豚是“豚”,海豹是豹?伪善也是善?民主到底是“人民做主”还是“为民做主”?“法治”到底是“用法律治理”还是“受法律治理”或者“被法律治理”?他的主语应该是什么?是“政府用法律来治理草民”,还是“政府也被法律治理”?
汉语的多重继承是一把双刃剑,既有优点也有缺点。后面的某个小节里我会讲讲如何做才能消除多重继承的缺点,而不会损害他的优点。
3. 谈多态
作者对多态的论述我倒是没有太大的反对意见。但是作者忘了强调多态能够成功的运行,是要依赖于上下文(context)或者环境。这是说的是在程序里。在自然语言里,也是同样的道理。作者举的例子“我要坐车去上海”,“车”是“汽车”,“火车”还是“出租车”,在含义的表达上,没有上下文帮助,只会增加模糊性和不确定性,不会有任何好处。在语言的“简约性”方面倒是有好处。好处就是省了一个汉字,不用说“汽车”或者“火车”,而只要说是“车”。在上下文的帮助下,或者在某特定的环境下,“车”是可以被听者理解成“火车”或者“汽车”的。比如在一个不通火车的穷山沟里,“坐车”能够被理解成是“坐汽车”,而不可能是“坐火车”,当然还要有个假设,“坐牛车”是到不了上海的。或者在某篇文章里,前面已经提到了是什么车,后面就不用再重复说出来。这确实是汉语的一个优点,是英语比较欠缺的地方。
4. 谈语法
作者对于语法的探讨基本一笔带过,原因是语法很难被类比到“面向对象”的某个概念。这说明作者对编程语言还是不够精通,看来需要我这个专家来补充一番(当然我这有自吹自擂的嫌疑了)。
其实语法相当于编程语言中的函数调用规则。当然函数调用并不是“面向对象”的编程语言所特有的功能,而是任何一种高级编程语言都有的东东。只不过因为太普遍,反而许多人没有意识到。
我用个例子来说明,大家可能更容易理解。用英语写这么一句话“The man standing in front of the wall on which 5 horses were painted by Lu Di is the father of the boy who is sleeping in the beautiful bed under which there is a mouse sniffing.”(插科:execuse my French)翻译成汉语是“那个站在那面被芦笛用油漆画了五匹马的墙前面的男人是那个正躺在那张漂亮的,底下有只嗅来嗅去的老鼠的床上睡觉的男孩的爸爸。”在英语中,这么长的句子是经常出现的,是一种常态,但是你如果经常用汉字写这么长的句子,恐怕写作文不会得到老师的好评,写网文不会得到网友的吹捧。更经常的写法应该是分成几个短句子:“那个男人是那个孩子的爸爸。爸爸正站在一堵墙的前面。墙上画着五匹马,是芦笛用油漆画的。孩子正躺在一张漂亮的床上睡觉。床下一只老鼠正在嗅来嗅去。”
因为汉语缺乏复合句所需要的语法要素,很难写出复合句来。勉强写出来,也是头重脚轻,因为所有的定语从句必须前置,而不能像英语那样后置。后置的好处是,读一个长句就像在大海上坐船,每一个波浪来了,都会让你心里一荡,一波一波层次分明,层层递进,不会出现,读了后面忘了前面的现象。前置读起来有找不到主语的感觉,非得读到最后才知道,嗷,感情这句话的主语在这儿呐。
这用编程语言来解释,就是英语允许函数嵌套调用,而汉语做不到嵌套。用C语言来说,我可以写这么一条语句:
a= function1(function2(log(x+y, 10), exp(sin(z))), function3(x-2));
解释一下就是,a是函数function1运算后返回的结果,而function2和function3的返回结果又作为了function1的输入变量,函数log和exp的返回结果作为function2的输入变量,x+y和10作为函数log的输入变量,等等。
这就是函数的嵌套,类似于英语中把多个简单句嵌套在一起组装成一个复合句。如果C语言是像汉语这样的缺乏语法要素的语言,那么以上的一条语言就必须写出多条语句:
b = x+y;
c= log(b,10);
d=sin(z);
e=exp(d);
f=function2(c, e);
g=x-2;
h=function3(g);
a=function1(f, h);
所以在语法方面汉语是无法与英语相提并论的,除非汉语也引入某些英语所具有的从句引导词之类的语法要素。
5. 谈去序列化
作者谈到汉语是一种序列化的语言,这我也同意。“序列化”在面向对象的编程语言里,不是一种好的做法,因为那意味着“去对象化”,是一种对于“面向对象”的反动。在编程时,编程员都是尽量避免使用序列化。所以应该想办法对汉语“去序列化”来减少汉语文章的歧义性。当然作者也提到了办法就是“分词连写”,也就是在句子中加入空格来隔开汉词。这我也没什么意见。
6. 谈汉语入门难
7. 谈英语背单词难
(未完待续)
作者:吴耐 在 驴鸣镇 发贴, 来自 http://www.hjclub.org
上一次由吴耐于2009-10-17 周六, 上午8:06修改,总共修改了4次 |
|
|
返回顶端 |
|
 |
|
|
|
您不能在本论坛发表新主题 您不能在本论坛回复主题 您不能在本论坛编辑自己的文章 您不能在本论坛删除自己的文章 您不能在本论坛发表投票 您不能在这个论坛添加附件 您可以在这个论坛下载文件
|
based on phpbb, All rights reserved.
|