在网上看到过不少有关汉语和英语比较的文章,他们写的都很不错,而且列举了大量的事例 来证实汉语或者英语是优秀的。不过,用计算机软件设计的观点,来理性地分析汉语和英语的优缺点,从而能够断言:汉语是世界上惟一一种面向对象的高级语言。
一.什么是“对象”?
在计算机世界里,对象(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种拼写方法来表达"作"的各类状态,而汉语仅仅加一些经常使用的副词就能够表达了。 ios
结论:汉语是封装性的语言,但并不完美,由于存在少许的多音字和多义字。而英语则彻底没有封装性可言。 程序员
六.什么是继承?
在程序设计中,继承是指子类自动享用父类的属性和方法,并能够追加新的属性和方法的一种机制。它是实现代码共享的重要手段,可使软件更具备开放性、可扩充性,这是信息组织与分类的行之有效的方法,这也是面向对象的主要优势之一。继承又分为单重继承和多重继承。单重继承是指子类只能继承一个父类的属性和操做;而多重继承是指子类能够继承了多个父类的属性和操做。熟悉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个彻底没有共同特征的单词来表达月份。 ui
结论:汉语具备完美的继承特征。从整体上来讲,英语还不能被称为具备继承性的语言。 spa
九.什么是多态?
多态是指相同操做接口的方法 在不一样的对象中调用能够实现的不一样结果。多态和继承是对同一现象的不一样描述,继承是强调对象的共同特色,而多态则是强调对象的灵活性。继承是设计层次上的概念,而多态是继承在运行时的表现。 设计
十.如何考察天然语言的多态性?
咱们已经知道:多态的前提条件是继承;好处是能够在运行时强调对象的灵活性。具体到天然语言,咱们能够这样理解:多态性的词汇能够在相互交流的时候,增长理解的灵活性。具体作法就是在交流的时候,仅仅使用一些概念性的词汇,让不一样的听众或读者有不一样的解读。
因此,衡量天然语言是否具备多态性的指标是:
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.重用性差。缘由不用多说,因为它没有继承的特性。相比汉字的重复利用率很是高。《M.zD选集》共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)语法系统很是松散。不知道你们有没有发现这个现象:汉语的句子每每很短,而在英语和日语中二、3行的句子却很常见。缘由在于汉语既没有英语中 where、who、which那样的单词来划分语句,也没有日语里的助词(はがにでを)来区分主谓宾。这会致使人们不能一目了然地划分语句结构。为了避 免这个弊端,汉语的句子每每很短。可是,即便把句子缩短,也不能完美地解决这个问题。让我举一个例子来讲明这种现象: 1.今天真热,我想开空调了。 2.孩子们很天真、很可爱。 上面两个句子都有“天真”这两个字,可究竟哪一个是naive的意思呢?这就须要根据上下文的意思来判断了。也就是说,汉语虽然是一种面向对象的语言,可是 因为语法结构的欠缺,致使了人们在看到一句中文以后,须要大脑作一个 先断句后理解的处理过程,而不是直接理解。这一点很是相似Java的反序列化处理(序列化就是指把对象转换为字节序列的过程。而反序列化是指把字节序列恢 复为对象的过程)。 为了不这个问题,我的建议引入空格。也就是说在书写的时候,有意识地利用空格进行断句,让信息可以快速而准确地传达给读者。好比上面两个句子,能够改写成下面的形式,就不会引起歧义,而且会减小大脑的处理时间。 1.今天 真 热,我 想 开 空调 了。 2.孩子们 很 天真、很 可爱。