動(dòng)態(tài)語言與靜態(tài)語言的區(qū)別

通常我們所說的動(dòng)態(tài)語言速种、靜態(tài)語言是指動(dòng)態(tài)類型語言和靜態(tài)類型語言。

對(duì)于動(dòng)態(tài)語言與靜態(tài)語言的區(qū)分低千,套用一句流行的話就是:Static typing when possible, dynamic typing when needed配阵。

(1)動(dòng)態(tài)類型語言:動(dòng)態(tài)類型語言是指在運(yùn)行期間才去做數(shù)據(jù)類型檢查的語言,也就是說,在用動(dòng)態(tài)類型的語言編程時(shí)棋傍,永遠(yuǎn)也不用給任何變量指定數(shù)據(jù)類型救拉,該語言會(huì)在你第一次賦值給變量時(shí),在內(nèi)部將數(shù)據(jù)類型記錄下來瘫拣。Python 和 Ruby 就是一種典型的動(dòng)態(tài)類型語言亿絮,其他的各種腳本語言如 JavaScript 也屬于動(dòng)態(tài)類型語言。

  • 動(dòng)態(tài)類型語言的優(yōu)點(diǎn)
    編寫的代碼數(shù)量更少麸拄,看起來更加簡(jiǎn)潔派昧,可以把精力更多地放在業(yè)務(wù)邏輯上。雖然不區(qū)分類型在某些情況下會(huì)讓程序變得難以理解感帅,但整體而言斗锭,代碼量越少,越專注于邏輯表達(dá)失球,對(duì)閱讀程序越有幫助。

  • 動(dòng)態(tài)類型語言的缺點(diǎn)
    無法保證變量的類型帮毁,從而在程序的運(yùn)行期有可能發(fā)生跟類型相關(guān)的錯(cuò)誤实苞。

動(dòng)態(tài)類型語言對(duì)變量類型的寬容給實(shí)際編碼帶來了很大的靈活性。由于無需進(jìn)行類型檢測(cè)烈疚,我們可以嘗試調(diào)用任何對(duì)象的任意方法黔牵,而無需去考慮它原本是否被設(shè)計(jì)為擁有該方法。

(2)靜態(tài)類型語言:靜態(tài)類型語言與動(dòng)態(tài)類型語言剛好相反爷肝,它的數(shù)據(jù)類型是在編譯其間檢查的猾浦,也就是說在寫程序時(shí)要聲明所有變量的數(shù)據(jù)類型,C/C++ 是靜態(tài)類型語言的典型代表灯抛,其他的靜態(tài)類型語言還有 C#金赦、JAVA 等。

  • 靜態(tài)類型語言的優(yōu)點(diǎn)
    首先是在編譯時(shí)就能發(fā)現(xiàn)類型不匹配的錯(cuò)誤对嚼,編譯器可以幫助我們提前避免程序在運(yùn)行期間有可能發(fā)生的一些錯(cuò)誤夹抗。其次,如果在程序中明確規(guī)定了數(shù)據(jù)類型纵竖,編譯器還可以針對(duì)這些信息對(duì)程序進(jìn)行一些優(yōu)化工作漠烧,提高程序執(zhí)行速度。

  • 靜態(tài)類型語言的缺點(diǎn)
    首先是迫使程序員依照強(qiáng)契約來編寫程序靡砌,為每個(gè)變量規(guī)定數(shù)據(jù)類型已脓,歸根結(jié)底只是輔助我們編寫可靠性高程序的一種手段,而不是編寫程序的目的通殃,畢竟大部分人編寫程序的目的是為了完成需求交付生產(chǎn)度液。其次,類型的聲明也會(huì)增加更多的代碼,在程序編寫過程中恨诱,這些細(xì)節(jié)會(huì)讓程序員的精力從思考業(yè)務(wù)邏輯上分散開來媳瞪。

一般靜態(tài)類型語言更適合用于描述數(shù)據(jù)結(jié)構(gòu)。

面向接口編程

在動(dòng)態(tài)類型語言的面向?qū)ο笤O(shè)計(jì)中照宝,我們不必借助超類型的幫助蛇受,就能輕松地在動(dòng)態(tài)類型語言中實(shí)現(xiàn)一個(gè)原則:面向接口編程,而不是面向?qū)崿F(xiàn)編程厕鹃。例如兢仰,一個(gè)對(duì)象若有 push 和 pop 方法,并且這些方法提供了正確的實(shí)現(xiàn)剂碴,它就可以被當(dāng)作棧來使用把将。一個(gè)對(duì)象如果有 length 屬性,也可以依照下標(biāo)來存取屬性忆矛,這個(gè)對(duì)象就可以被當(dāng)作數(shù)組來使用察蹲。

在靜態(tài)類型語言中,要實(shí)現(xiàn)“面向接口編程”并不是一件容易的事情催训,往往要通過抽象類或者接口等將對(duì)象進(jìn)行向上轉(zhuǎn)型洽议。當(dāng)對(duì)象的真正類型被隱藏在它的超類型身后,這些對(duì)象才能在類型檢查系統(tǒng)的“監(jiān)視”之下互相被替換使用漫拭。只有當(dāng)對(duì)象能夠被互相替換使用亚兄,才能體現(xiàn)出多態(tài)性的價(jià)值。

多態(tài)

多態(tài)的含義是:同一操作作用于不同的對(duì)象上面采驻,可以產(chǎn)生不同的解釋和不同的執(zhí)行結(jié)果审胚。換句話說,給不同的對(duì)象發(fā)送同一個(gè)消息的時(shí)候礼旅,這些對(duì)象根據(jù)這個(gè)消息分別給出不同的反饋膳叨。

靜態(tài)類型語言編譯時(shí)會(huì)進(jìn)行類型匹配檢查,所以不能給變量賦予不同類型的值各淀。為了解決這一問題懒鉴,靜態(tài)類型的面向?qū)ο笳Z言通常通過向上轉(zhuǎn)型的技術(shù)來取得多態(tài)的效果。

而動(dòng)態(tài)類型語言的變量類型在運(yùn)行期是可變的碎浇,這意味著對(duì)象的多態(tài)性是與生俱來的临谱。一個(gè)對(duì)象能否執(zhí)行某個(gè)操作,只取決于有沒有對(duì)應(yīng)的方法奴璃,而不取決于它是否是某種類型的對(duì)象悉默。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市苟穆,隨后出現(xiàn)的幾起案子抄课,更是在濱河造成了極大的恐慌唱星,老刑警劉巖迎卤,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件征炼,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡壳贪,警方通過查閱死者的電腦和手機(jī)抵拘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門哎榴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人僵蛛,你說我怎么就攤上這事尚蝌。” “怎么了充尉?”我有些...
    開封第一講書人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵飘言,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我驼侠,道長(zhǎng)姿鸿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任泪电,我火速辦了婚禮般妙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘相速。我一直安慰自己,他們只是感情好鲜锚,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開白布突诬。 她就那樣靜靜地躺著,像睡著了一般芜繁。 火紅的嫁衣襯著肌膚如雪旺隙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評(píng)論 1 307
  • 那天骏令,我揣著相機(jī)與錄音蔬捷,去河邊找鬼。 笑死榔袋,一個(gè)胖子當(dāng)著我的面吹牛周拐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凰兑,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼妥粟,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了吏够?” 一聲冷哼從身側(cè)響起勾给,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤滩报,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后播急,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脓钾,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年桩警,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了可训。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡生真,死狀恐怖沉噩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情柱蟀,我是刑警寧澤川蒙,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站长已,受9級(jí)特大地震影響畜眨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜术瓮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一康聂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧胞四,春花似錦恬汁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至导狡,卻和暖如春约巷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背旱捧。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來泰國打工独郎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人枚赡。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓氓癌,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親标锄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子顽铸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容