汉语——世界上唯一的面向对象语言

声明:除了汉语之外,我只会一点英语和日语。因此说是“唯一”略显夸张,有吸引眼球的嫌疑,请大家原谅。严谨地说,标题应该是“汉语是一种面向对象的高级语言”。

 

在网上看到过很多有关汉语和英语比较的文章,他们写的都很不错,并且列举了大量的事例来证明汉语或者英语是优秀的。不过,我想用计算机软件设计的观点,来理性地分析汉语和英语的优缺点。经过分析,我可以断言:汉语是世界上唯一一种面向对象的高级语言。而以英语为首的其他语言,则属于密码型的索引语言。下面通过问答的方式来解释这种观点,如有不妥之处,请大家指摘。

 

一.什么是“对象”?

在计算机世界里,对象(Object)就是人们要进行研究的任何事物。小到螺丝钉,大到飞机,都可以被看成是对象,并且有具体的属性和操作。以“狗”为例:颜色、体重等是它的属性;而吃饭、撒娇、警卫等则是它的操作。

同样,对于语言来说,一个汉字或者一个单词也可以被看成对象。再次以“狗(dog)”为例: 发音和拼写可以被看成是属性,而它的定义
则可以被看成是操作。

 

二.什么是“面向对象”?
它有哪些主要特点?

面向对象主要是指程序的设计方法。它主要有三大特征:封装、继承、多态。

 

三.什么是封装?

在软件设计中,封装是指将接口与实现显式地分开,并对内部的实现提供保护(即掩藏实现细节)。封装防止了程序相互依赖性而带来的变动影响,是保证软件部件具有优良的模块性的基础,是面向对象设计的前提条件。

 

四.如何考察自然语言的封装性?

封装的两个特点就是:接口和实现分开 以及保护内部的实现。同样的道理,我们可以用下列四个标准来考察自然语言的封装性:

1.外形接口:所有词汇的外形是否是一致的。

2.定义接口:特定词汇的定义是否只有一个。

3.读音接口:特定词汇的读音是否只有一个。

4.拼写方法是固定的,即不会随着场景的变化而变化。

 

五.汉语和英语具有封装性吗?

(1)首先来考察一下汉字。

1.汉字的外形接口:众所周知,所有汉字的外形都是四四方方的方形。

2.汉字的定义接口:大多数汉字的定义只有一个,当然也存在数量不多的多义字。

3.汉字的读音接口:绝大多数汉字的读音只有一个。当然也存在多音字(一般也是多义字),最典型的是“重”字,它有两个读音zhong和chong,前者是分量大、主要的意思,后者是重复繁冗的意思。但是像这样的多音字数量很少,读音也最多只有两个,常见的多音多义字只有100多个。

4.汉字的拼写方法是否固定的,不会随着场景的变化而变化。虽然汉字有繁简之分,但是不可能在一段文章中同时出现繁简两种字体,因此姑且不论。

 

(2)再来看看英语:

1.英语单词的形状不是固定的,有短有长。短的有象“I”(我),只有一个字母;而长的有“pneumonoultramicroscopicsilicovolcanoconiosis”(矽肺病),总共有45个字母。

2.英语中的多义词太多了,比如我们熟悉的“book”,不仅有书和课本的意思,还有预订、登记、立案的意思。再如“man”,除了有人和男人的意思之外,还有操纵、配备人员的意思。

 

3.英语单词的读音会随着拼写的变化而变化。

 

4.英语单词的拼写方法不是固定的,会随着场景的变化而是变化。不仅字母有大小写、名词有复数形态,动词还也有让人头疼的时态变化。

复数形态的例子:“book”复数词是“books”,“man”复数词是“men”,拼写和读音都发生了变化。

动词时态的例子:

一般现在时:
I do it every day.(我每天做这样的事)

一般过去时:
I did it yesterday.(昨天我做了这件事)

一般将来时:
I shall/will do it tomorrow.(明天我要做这件事)

现在进行时:
I am doing it now.(现在我正在做这件事)

现在完成时:
I have done it already.(我已把这件事做好了)

一个do需要do、did、doing、done这4种拼写方法来表达"做"的各种状态,而汉语仅仅加一些常用的副词就可以表达了。

结论:汉语是封装性的语言,但是并不完美,因为存在少量的多音字和多义字。而英语则完全没有封装性可言。

 

六.什么是继承?

在程序设计中,继承是指子类自动享用父类的属性和方法,并可以追加新的属性和方法的一种机制。它是实现代码共享的重要手段,可以使软件更具有开放性、可扩充性,这是信息组织与分类的行之有效的方法,这也是面向对象的主要优点之一。继承又分为单重继承和多重继承。单重继承是指子类只能继承一个父类的属性和操作;而多重继承是指子类可以继承了多个父类的属性和操作。熟悉IT的人都知道,Java是一种单重继承语言,而C++是一种多重继承语言。

想提醒的是,在计算机语言中,具有相同或相似性质的对象的抽象就是类。也就是说,对象的抽象是类,类的具体化就是对象。类是可以继承的,对象是不能被继承的。但是自然语言中并没有类的概念,为了说明的方便,下面的解说中使用了对象继承的说法,请计算机专家们谅解。

 

七.如何考察自然语言的继承性?

只有一个标准:是否大规模地存在“字造字”、“词生词”的现象。

 

八.汉语和英语具有继承性吗?

(1)首先说说汉字,汉字的一大特点就是形音字众多,形音字具有“意音双表”的功能。举一个简单的例子:围、圆、园、圈。这4个字的外围都是“口”字,是用来表意的;而中间的韦、员、元、卷则是用来表音的。用软件设计的观点来看,这就是单重继承,被继承的是“意”,而“音”则是它们各自的特征。

除了单重继承之外,汉语里也存在大量的多重继承,这就是词组。“词组”本来的定义是:由多个汉字所组合而成的语法单位。但是,从程序员的角度来看,“词组”的定义是:从多个对象继承而来的新对象。

下面例子分别标注了词组分解前后的汉英解释。可以一目了然地发现,无论是拼写或是定义,词组都是对汉字的完美继承,而英语则毫无瓜葛。

飞机(plane)   = 会飞行(flight)的机器(machine)

工人(worker)   = 在工厂(factory)工作的人(man)

解放(liberate)  = 解开(unlatch)后释放(release)

计算机(computer)
= 能计算(calculate)的机器(machine)

 

(2)英语也有继承,那就是复合词。比如:

football    
足球

handwriting   书法  
breakwater    防浪堤

或许是因为单词长度限制(即缺乏封装性)的原因,它们数量很少,所占的比例极低。对中国人来说有点难以理解的是,很多应该是复合词的单词,却被不相干的词汇所代替,比如:

猪 pig  
公猪 boar   母猪 sow 
小猪 piglet 猪肉 pork

牛 cattle 公牛 bull  
母牛 cow  小牛 calf  牛肉 beef

羊 sheep 
公羊 ram   母羊 ewe 
小羊 lamb  羊肉 mutton

汉语的话,只需要7个基本汉字:猪、牛、羊、公、母、小、肉,其它的都是组合而成的。而英语则需要记住15个没有任何关联的词汇。再比如:

一月   January

二月   February

三月   March

四月   April

五月   May

六月   June

七月   July

八月   August

九月   September

十月   October

十一月  November

十二月  December

汉语是用数字加上“月”表达月份,而英语却使用12个完全没有共同特征的单词来表达月份。

结论:汉语具有完美的继承特征。英语从总体上来说,还不能被称为具有继承性的语言。

 

九.什么是多态?

多态是指相同操作接口的方法 在不同的对象中调用可以实现的不同结果。多态和继承是对同一现象的不同描述,继承是强调对象的共同特点,而多态则是强调对象的灵活性。继承是设计层次上的概念,而多态是继承在运行时的表现。

 

十.如何考察自然语言的多态性?

我们已经知道:多态的前提条件是继承;好处是可以在运行时强调对象的灵活性。具体到自然语言,我们可以这样理解:多态性的词汇可以在相互交流的时候,增加理解的灵活性。具体做法就是在交流的时候,仅仅使用一些概念性的词汇,让不同的听众或读者有不同的解读。  
所以,衡量自然语言是否具有多态性的指标是:

1.是否大量存在能表达概念性的词汇。

 

2.这些概念性的词汇是
被具体的词汇所继承。强调继承的原因有两点:一是因为多态性的定义,另外一个原因是它可以增加由虚到实、由概念到具体的联想速度。

 

十一.汉语和英语具有多态性吗?

(1)汉语的多态性无处不在,主要表现在两个方面:一是有很多的被继承的、能表达概念性的词汇,另外一个就是汉语拼音。

首先说说被继承的概念词汇,它们主要在口语中被使用。比如:“我要坐车去上海”。这里的车(car,vehicle)是一个概念性的词汇,具体是哪一种车,则根据听众的不同而不同,可能是汽车(car)、出租车(taxi)、公共汽车(bus)、火车(train)等等。与英语不同,汉语的“车”字是被继承的,所以人们会很快地联想到汽车、出租车、公共汽车等词组。而使用英语的人们则需要从记忆中搜索(而不是联想)与车相关的交通工具。类似“车”的词汇在汉语里有很多,再比如:“去商场买一点肉”。这里的肉(meat)有可能是猪肉(pork),也有可能是牛肉(beef),或者是鸡肉(chicken)等等。

再说说汉语拼音的多态性,汉语拼音有4个音调,在没有标注音调时候,需要根据上下文的理解来决定是哪一个音调。比如zhong
guo的音调应该是zhōng guó。 即使是在标注音调场合,也需要根据理解来决定是哪一个汉字。再比如zhōng
guó的汉字应该是“中国”,而不是“忠帼”。

由此我们也可以看出来:多态一方面可以降低了交流的准确性、另一方面也提高了说话的灵活性和信息量。

 

(2)英语虽然也有大量类似vehicle、meat的概念词汇,但是却没有被广泛地继承。另外想提醒的是:英语的时态不是的多态性的表现。原因在于:

1.英语时态的主体是动词(即动作),它强调了动作执行状态的不同(没做、正在做、做完了),而不是执行结果的不同。

2.多态是指具有相同特征,但是因为对象不同而导致结果不同。它强调是执行结果的不同。  
因此说时态不是多态。以软件设计的观点来看,如果对象的状态发生了变化,就必须更换成另外一个对象,这是一件不可想象的事情,会导致对象无限增多从而失控。

 

结论:汉语具有多态性,而英语并不具备。但是多态对于语言来说,可能没有太多的作用。

 

十二.面向对象能解决什么问题?

传统的软件开发方法存在下面3个问题:可维护性差、重用性差、不能满足用户不断变化的需要。为了解决这三个问题,面向对象概念被逐步推广和应用。

同样地,与汉语相比英语也存在3个类似的问题:

1.很容易出错。由于英语没有被封装,再加上语法众多,诸如:动词时态、复数形态、虚拟语气等等,导致单词不断的变换,让人无所适从。

2.重用性差。原因不用多说,就是因为它没有继承性,导致单词量庞大。相比而言,汉字的重复利用率非常高。《毛泽东选集》共5卷,但是只用了不到3000不同的汉字。

3.不能满足现代知识爆炸的需求。对待新生事物,英语会使用一个只有专业人士才懂的新单词,而汉语会根据主要的特征来组合汉字,可以让非专业的人们也能理解。比如:

四环素 acheomycin

变阻器 rheostat

肾结石 nephrolith

七边形 heptagon

长方体 cuboid

而面向对象的汉语就不存在上述三大问题。

 

十三.为什么说汉语是高级的?

首先要指出的是,高级并不意味着高效。就像绝大多数程序员喜欢使用Java和C++,而不是机器语言和汇编语言一样。虽然机器语言和汇编语言执行速度很快,但是它们和人类的思维并不接近,不能适应大规模、快速、高质量的软件开发。

正因为汉语具备面向对象的特征,所以说汉语的高级之处在于容错性强、通用性强、扩充性强、语句简短、便于信息的交流、能让人们快速地学习新知识。

 

十四.日语也是面向对象的语言吗?

日语有两种文字组成:假名和汉字。假名是字母语言,它包括平假名和片假名,就像英语的大小写一样,它不具备面向对象的三大特征。而汉字的读音又分为音读和训读。音读和中文的发音相似,训读则完全不一样。比如“有”的音读是yu,训读是u和aru。日本的前首相麻生太郎就在这上面栽过跟头,他曾经把“未曾有”读成mizoyu,正确的读音应该是mizou,结果让媒体狠狠地涮了一顿,一度被讥讽为“未曾有首相”。

因为音读汉字的读音以及用法 基本和中文相似,所以可以说它是面向对象的语言(现代汉语中词组,有一大半都是从日本引进的)。而训读汉字往往和假名相结合形成新的词汇,所以没有面向对象特征。

以“生”字作为例子,来介绍日文汉字的复杂性(注:括号中的是生的读音):

“生”字的音读有两个:

1.生命  同汉语的生命  (sei)mei

2.生涯  同汉语的生涯  (shou)gai

“生”字的训读有四个:

1.生の魚 未加热的鱼   (nama)no
sakana

2.生きる 活的意思    (i)kiru

3.生む  出产的意思   (u)mu

4.生える 生长的意思   (ha)eru

 

总结,一部分的日语具备面向对象的特性。

 

十五.语言除了字和词之外还有语法,语法存在面向对象的特性吗?

个人认为语言基本上可以分为三大系统:文字系统、语法系统和符号系统。

1.字和词属于文字系统,是语言体系的主体部分。

2.语法的传统定义是文字组合和解释的语言规范。在软件设计人员看来,语法是一种对象的组合分解算法,它是一些逻辑的集合,而不是对象的集合,因此语法没有面向对象的说法。

3.符号系统是语言体系的支系统。最长见的符号就是
标点符号和数学符号。符号本身虽然是对象,但是独立性非常强,且数量不多,在此就不讨论它面向对象的特性。

综上所述,由于语法不是对象、符号独立性强,所以考察语言的面向对象特性,主要集中在文字上面。

 

十六.汉语难道就没有缺点了吗?

有!汉语的三大系统都有缺点:

 

(1)文字系统的缺点:

1.封装性不太完美。上面已经讨论过了,存在少量的多音字和多意词。

2.入门难。英语的入门极其简单:只需要掌握26个字母,剩下的就是记忆了。而且拼写和读音是基本统一的,可以达到会读就会写、会写就会读的程度。而汉语则要麻烦一些,不仅要掌握2000多个汉字的读音、写法和定义,还要理解常用词组的含义。其实,这个缺点是面向对象的固有缺点,熟悉计算机开发的朋友可能都知道,虽然C++是高级语言,但是它的概念要比C多,用法也相对复杂,还需要掌握很多的工具类,但是一旦入门之后,就海阔凭鱼跃、天高任鸟飞了。

3.还有一个莫须有的缺点:诱发人们忽视细节。这也是面向对象的隐形缺点,在开发软件系统的时候,面向对象的运用者是设计人员,而不是程序员。设计人员注重的是业务的分类和总结,而程序员追求的是逻辑准确性和可实现性。汉语也是这样,它的好处是非常自然、容易扩展,坏处是让人们的思维变得懒惰,渐渐地丧失了精益求精的科学态度。

 

(2)传统意义上的汉语是没有符号系统的。符号是科学演算和理论推导的重要工具,个人认为是字母语言最成功的地方。随着在鸦片战争之后,中国逐步引入西方的标点符号和数学符号,这个重大的缺点得到了根本的解决。

 

(3)语法系统非常松散。不知道大家有没有发现这个现象:汉语的句子往往很短,而在英语和日语中2、3行的句子却很常见。原因在于汉语既没有英语中where、who、which那样的单词来划分语句,也没有日语里的助词(はがにでを)来区分主谓宾。这会导致人们不能一目了然地划分语句结构。为了避免这个弊端,汉语的句子往往很短。但是,即使把句子缩短,也不能完美地解决这个问题。让我举一个例子来说明这种现象:

1.今天真热,我想开空调了。

2.孩子们很天真、很可爱。

上面两个句子都有“天真”这两个字,可究竟哪个是naive的意思呢?这就需要根据上下文的意思来判断了。也就是说,汉语虽然是一种面向对象的语言,但是由于语法结构的欠缺,导致了人们在看到一句中文之后,需要大脑做一个先断句后理解的处理过程,而不是直接理解。这一点非常类似Java的反序列化处理(序列化就是指把对象转换为字节序列的过程。而反序列化是指把字节序列恢复为对象的过程)。

为了避免这个问题,个人建议引入空格。也就是说在书写的时候,有意识地利用空格进行断句,让信息能够快速而准确地传达给读者。比如上面两个句子,可以改写成下面的形式,就不会引发歧义,并且会减少大脑的处理时间。

1.今天
真 热,我 想 开 空调 了。

2.孩子们
很 天真、很 可爱。

 

十七.最后的结论是什么?

古老的汉语是一种面向对象的、但是被序列化的高级语言。

时间: 2024-07-29 05:25:32

汉语——世界上唯一的面向对象语言的相关文章

世界上最奇葩的黑客都做了什么?

       315晚会上,全国大爷大妈面前的电视机里,出现了一个"怪人",他坐在一个硕大无朋的赌桌前,如先知布道一般,对"愚蠢的人类"陈述他的安全忧思.讲真,还从没有一个黑客以这种姿势降临人间. 也许从这个时点开始,王琦成为中国黑客在大众心中的吉祥物.这张顶配的黑客脸,配以不急不缓的语气,神秘而略带邪恶的神态.让人不得不对他接下来要说的话抱以期待. 一个技术范儿大叔,生生玩成了<我是歌手>的评委,也算是黑客界的一个突破吧. [王琦和<我是歌手&g

甲骨文推出世界上最先进的面向云环境的客户关系管理

甲骨文日前在旧金山举行的2011甲骨文全球大会上推出世界上最先进的面向云环境的客户关系管理(CRM)--Oracle融合客户关系管理(Oracle Fusion CRM)的公有云产品. 作为最近推出的Oracle公有云的一部分,Oracle的企业级CRM云应用提供了客户所期待的SaaS(软件即服务)的所有优势,摆脱了旧的SaaS CRM 解决方案的局限.他们以一个简单的订购定价模式即可获得Oracle最先进应用软件的所有功能,而不必购买硬件或软件支持. Oracle融合CRM云服务能帮助销售精英

世界上没有完美的编程语言, 不要和一种语言厮守终生

简评:就像段子中说的那样,如果你想爆发一场程序员之间的世界大战,只需要发一句"PHP是最好的语言"就可以了.其实对于程序员而言,往往喜欢给自己打上"Java程序员"."PHP程序员"或者"OC程序员"的标签,并且对于什么才是最好的语言争论不休,甚至者更有"程序员鄙视链"链式地鄙视下去,但是其实世界上本没有完美的编程语言,当你在处理某些领域的问题时往往需要换一种语言,语言只是解决问题的工具,仅此而已.编程语言

面向对象语言概论(三)

传统的基于类的面向对象语言的一个主要特点就是inheritance, subclassing和subtyping之间的密不可分的联系.很多的面向对象语言的语法,概念,就是从这三者而来的.比如说,通过subclassing, 你可以继承父类的一些方法,而同时你又可以在子类中改写父类的方法.这个改写过的方法,通过subtyping, subsumption, 又可以从一个类型是父类的对象去调用. 但是,inheritance, subclassing, subtyping这三者并不是永远和睦相处的.

面向对象语言概论(一)

本书是我们上面向对象类型理论的教材.当时上这门课时,心里满不以为然,觉得自己的 C++和OO已经颇有造纸,C++和Java的类型系统不说倒背如流,也是轻车熟路,上这么一门课 不是白拿学分?哈哈! 但一上起来,才发现自己竟如井底之蛙一样.老天,原来就这 么简单的面向对象竟有这么多说道!原来除了C++, Java, 面向对象还有这么多没见过甚至没 想过的东西! 前几章概论,勉强还都搞定了.但后面上到类型系统的建模,subject reduction的证明,就发现自己就象回到了本科时代,这,这,这怎么

喜马拉雅天梯:双11、互联网和快递改变世界上海拔最高之地

珠穆朗玛,世界第三极--青藏高原的极点. 离这个极点最近的扎西宗乡人,大概是这世界上,除了高原地质专家.气象学家.神话学者和登山家外,最了解世界最高峰所有秘密的人了. 珠峰脚下的扎西宗乡 生活在珠峰脚下的扎西宗人,与头顶的珠峰为伴,从生到死,从白昼到黑夜.他们知悉神山的一切:它的不可抵达,它的神秘与日常,它的多变与无常. 过去,神山庇佑扎西宗人的灵魂.现在,在灵魂之外,围绕神山诞生的旅游.科考和商业活动,也在逐渐让它脚下的子民缓慢进入到一种新旧夹杂.铁板不再一块的生活状态. 这种状态,犹如冰川和

这个中国血统的黑客掌握了世界上最多的秘密,还改变了美国总统大选

本文讲的是这个中国血统的黑客掌握了世界上最多的秘密,还改变了美国总统大选, 全球气候变暖,曾经是全人类的共识. 研究者认为,人类自工业革命开始,肆无忌惮地排放二氧化碳导致了全球性的气温变化. 人类将会为自己的罪行付出惨痛的代价. 然而,这个理论很荒谬,20世纪中叶的人们还担心着全球气候变冷,冰川期让农业系统崩溃. 也有多位科学家明确反对全球变暖理论,认为这不过是地球几十亿年来再正常不过的波动. 2009年11月,仿佛是全球变暖理论支持者和背后势力的末日. 黑客们窃取了多位顶级气候学家的电子邮件,

中国是世界上人口最多的国家,现在总共拥有13亿人口

中国是世界上人口最多的国家,现在总共拥有13亿人口,因此它成为庞大的电商市场也就不足为奇了.2013年已向我们证明,电商是中国科技行业的下一个大热门,因为互联网巨头们正在努力为人们网上购物提供更便捷的方式,它们也在努力寻找各种不同的方法来接触消费者,例如通过聊天应用联系他们. 管理咨询公司贝恩(Bain & Co)的一份报告指出,"2013年将是值得人们铭记的一年,在这一年,中国超过美国,成为了全世界最大的数字零售市场."该公司还发现,在中国,"数字零售业务在过去两年

JavaScript:世界上误解最深的语言

javascript JavaScript, aka Mocha, aka LiveScript, aka JScript, aka ECMAScript, is one of the world's most popular programming languages. Virtually every personal computer in the world has at least one JavaScript interpreter installed on it and in act