漢語是世界上惟一一種面向對象的高級語言

{感受看到標題頓時就hold不住了……趕忙轉載了過來}

漢語是世界上惟一一種面向對象的高級語言

在網上看到過不少有關漢語和英語比較的文章,他們寫的都很不錯,而且列舉了大量的事例 來證實漢語或者英語是優秀的。不過,用計算機軟件設計的觀點,來理性地分析漢語和英語的優缺點,從而能夠斷言:漢語是世界上惟一一種面向對象的高級語言。 
一.什麼是「對象」? 
在計算機世界裏,對象(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.孩子們 很 天真、很 可愛。

相關文章
相關標籤/搜索