動(dòng)態(tài)語言vs動(dòng)態(tài)類型語言

有兩組概念容易引起混淆:

  • 靜態(tài)語言vs動(dòng)態(tài)語言 ( StaticProgramming Language & Dynamic Programming Language)

  • 靜態(tài)類型語言vs動(dòng)態(tài)類型語言 (Statically Typed Language & Dynamically Typed Language)

經(jīng)常造成誤解的是: 把動(dòng)態(tài)語言等同于動(dòng)態(tài)類型語言,把靜態(tài)語言等同于靜態(tài)類型語言

其實(shí),這是兩組不同的概念:

動(dòng)態(tài)語言是指運(yùn)行期間可以改變其結(jié)構(gòu)的語言:例如增加或者刪除函數(shù)祝懂、對(duì)象伟叛、甚至代碼屯仗。比如JavaScript鱼填、Objective-C擒贸、Ruby橘沥、Python等窗轩,而C、C++等語言則不屬于動(dòng)態(tài)語言座咆。靜態(tài)語言與動(dòng)態(tài)語言相反品姓,在運(yùn)行時(shí)不能改變其結(jié)構(gòu)寝并。盡管靜態(tài)語言可以通過復(fù)雜的手段實(shí)現(xiàn)動(dòng)態(tài)語言的特性,但是動(dòng)態(tài)語言提供了直接的方法實(shí)現(xiàn)語言的動(dòng)態(tài)性腹备。

動(dòng)態(tài)類型語言是指在運(yùn)行期間才去做數(shù)據(jù)類型檢查的語言衬潦。在用動(dòng)態(tài)語言編程時(shí),不用給變量指定數(shù)據(jù)類型植酥,第一次賦值給變量時(shí)镀岛,在內(nèi)部將數(shù)據(jù)類型記錄下來。JavaScript友驮、Ruby漂羊、Python是典型的動(dòng)態(tài)類型語言。靜態(tài)類型語言與動(dòng)態(tài)類型語言剛好相反卸留,它的數(shù)據(jù)類型檢查發(fā)生在在編譯階段走越,也就是說在寫程序時(shí)要聲明變量的數(shù)據(jù)類型。C/C++耻瑟、C#旨指、Java都是靜態(tài)類型語言的典型代表。

大部分動(dòng)態(tài)語言是動(dòng)態(tài)類型的喳整,但是不是所有都是谆构。

動(dòng)態(tài)類型語言舉例(Python):

Python是動(dòng)態(tài)類型語言

# coding: utf-8

def sum(a, b):

    return a + b;

print sum(1,2);
print sum("Hello ", "Word")

輸出:
3
Hello Word
上面的Python代碼中sum函數(shù)沒有指定參數(shù)類型,只在運(yùn)行時(shí)決定參數(shù)類型框都。

動(dòng)態(tài)語言舉例(javascript):

function Person(name, age, job)
{
  this.name = name;
  this.age = age;
  this.job = job
  this.hello = function(name){
    alert("Hello, " + name);
};

person = new Person("Eric", 28, 'worker');
alert(person.name + '' + person.age + '');
person.hello("Alice");
//為對(duì)象添加方法
person.work = function(){
  alert('I am working');
}
person.work();

//刪除方法
delete person.work;
person.work();

javascript對(duì)象可以在運(yùn)行時(shí)給對(duì)象添加和刪除方法搬素。javascript是通過關(guān)聯(lián)數(shù)組實(shí)現(xiàn)語言的動(dòng)態(tài)性。

動(dòng)態(tài)語言舉例(Objective-C):

- (void)addMethod
{

  NSObject*obj = [[NSObjectalloc]init];

  class_addMethod([objclass],@selector(hello), (IMP)helloWorld,"v@:");

  [objperformSelector:@selector(hello)];

}

voidhelloWorld(idself,SEL_cmd){
  NSLog(@"Hello, this is a new Method!");
}

上面Objective-C代碼中魏保,NSObject對(duì)象并沒有hello方法熬尺,但是在運(yùn)行時(shí)給NSObject動(dòng)態(tài)添加了一個(gè)hello方法。Objective-C語言是通過語言的runtime特性實(shí)現(xiàn)語言的動(dòng)態(tài)性谓罗。

一般來說粱哼,動(dòng)態(tài)語言是運(yùn)行時(shí)可以給類增加或者刪除方法;而動(dòng)態(tài)類型語言是推遲到運(yùn)行時(shí)才去做數(shù)據(jù)類型檢查的語言妥衣,兩個(gè)概念說的不是同一個(gè)問題皂吮。

參考文獻(xiàn)

[1]. https://en.wikipedia.org/wiki/Dynamic_programming_language
[2]. https://martinfowler.com/bliki/DynamicTyping.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市税手,隨后出現(xiàn)的幾起案子蜂筹,更是在濱河造成了極大的恐慌,老刑警劉巖芦倒,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艺挪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)麻裳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門口蝠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人津坑,你說我怎么就攤上這事妙蔗。” “怎么了疆瑰?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵眉反,是天一觀的道長。 經(jīng)常有香客問我穆役,道長寸五,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任耿币,我火速辦了婚禮梳杏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘淹接。我一直安慰自己十性,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布蹈集。 她就那樣靜靜地躺著烁试,像睡著了一般雇初。 火紅的嫁衣襯著肌膚如雪拢肆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天靖诗,我揣著相機(jī)與錄音郭怪,去河邊找鬼。 笑死刊橘,一個(gè)胖子當(dāng)著我的面吹牛鄙才,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播促绵,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼攒庵,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了败晴?” 一聲冷哼從身側(cè)響起浓冒,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎尖坤,沒想到半個(gè)月后稳懒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡慢味,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年场梆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了墅冷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡或油,死狀恐怖寞忿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情顶岸,我是刑警寧澤罐脊,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站蜕琴,受9級(jí)特大地震影響萍桌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜凌简,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一上炎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧雏搂,春花似錦藕施、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至芙沥,卻和暖如春诲祸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背而昨。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國打工救氯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人歌憨。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓着憨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親务嫡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子甲抖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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