Objective-C 是不是動(dòng)態(tài)語(yǔ)言 共螺?

一、動(dòng)態(tài)語(yǔ)言和靜態(tài)語(yǔ)言的概念

首先情竹,我們了解一個(gè)概念:動(dòng)態(tài)語(yǔ)言和靜態(tài)語(yǔ)言的概念;

靜態(tài):編譯期間
動(dòng)態(tài):運(yùn)行期間

動(dòng)態(tài)語(yǔ)言:是指程序運(yùn)行時(shí)藐不,可以改變程序結(jié)構(gòu),引入新的函數(shù)(方法)、已有的函數(shù)可以被刪除等在結(jié)構(gòu)上的變化佳吞;程序運(yùn)行期間才去做數(shù)據(jù)類(lèi)型檢查的語(yǔ)言拱雏,即在動(dòng)態(tài)類(lèi)型的語(yǔ)言編程時(shí),永遠(yuǎn)不要給任何變量指定數(shù)據(jù)類(lèi)型底扳,該語(yǔ)言在你第一次賦值給變量時(shí)铸抑,在內(nèi)部將數(shù)據(jù)類(lèi)型記錄下來(lái);

舉例:JavaScript衷模、Ruby鹊汛、Python … 都屬于動(dòng)態(tài)語(yǔ)言;

靜態(tài)語(yǔ)言:在編譯時(shí)阱冶,變量的數(shù)據(jù)類(lèi)型已經(jīng)確定刁憋,多數(shù)靜態(tài)類(lèi)型語(yǔ)言要求在使用變量之前必須聲明數(shù)據(jù)類(lèi)型;
舉例:C木蹬、C++ 至耻、Java、C# … 等語(yǔ)言靜態(tài)語(yǔ)言镊叁;

二尘颓、Objective-C 是不是動(dòng)態(tài)語(yǔ)言 ?

這需要從 Objective-C 的發(fā)展歷史說(shuō)起:
Tom Love 和 Brad Cox 這兩名開(kāi)發(fā)人員在 ITT 公司接觸到 Smalltalk 晦譬,Cox 想要在 C 語(yǔ)言中加入面相對(duì)象功能疤苹,只用 C 語(yǔ)言就可以進(jìn)行面相對(duì)象編程,將文件擴(kuò)展名命名為:COOPC敛腌,表示用 C 語(yǔ)言實(shí)現(xiàn)面向?qū)ο笪酝痢:髞?lái)兩人成了一家公司,新語(yǔ)言被命名為 Objective-C 像樊。若干年后尤莺,Steve Jobs 領(lǐng)導(dǎo)的一家名為 NeXT 的小型創(chuàng)業(yè)公司,獲準(zhǔn)使用并標(biāo)準(zhǔn)化 Objective - C 語(yǔ)言生棍,以作為 NeXT - step 操作系統(tǒng)的主要語(yǔ)言缝裁,NeXT 最終被蘋(píng)果收購(gòu),NeXTstep 操作系統(tǒng)最終發(fā)展為 Mac OS 系統(tǒng)足绅。
由此可見(jiàn),Objective-C 是對(duì) C 語(yǔ)言進(jìn)行擴(kuò)展韩脑,具備靜態(tài)語(yǔ)言的特性氢妈;
Smalltalk 是動(dòng)態(tài)語(yǔ)言的始祖,因此 Objective - C 是具備動(dòng)態(tài)語(yǔ)言的特性的段多,可以說(shuō) Objective-C 是動(dòng)態(tài)語(yǔ)言首量。

    Objective - C 在純靜態(tài)語(yǔ)言和純動(dòng)態(tài)語(yǔ)言之間實(shí)現(xiàn)了平衡,是少有的幾種通常進(jìn)行編譯的語(yǔ)言,不僅能從類(lèi)似 C 和 C++ 在編譯時(shí)對(duì)語(yǔ)法進(jìn)行檢查加缘,還能從負(fù)責(zé)處理動(dòng)態(tài)對(duì)象類(lèi)型的動(dòng)態(tài)運(yùn)行時(shí)受益鸭叙;

因此,可以說(shuō) Objective - C 是動(dòng)態(tài)語(yǔ)言拣宏,但是是比較特殊的動(dòng)態(tài)語(yǔ)言沈贝;

Java 和 Objective-C 為何有很多的共同點(diǎn):

Objective-C 實(shí)際上影響了很多的其他編程技術(shù),比如 Java 語(yǔ)言和 Objective-C 具有很多共同點(diǎn)勋乾。原因是:在 Objective-C 的早期宋下,NeXT 和 Sun Microsystems 合作開(kāi)發(fā) OpenStep 平臺(tái),用來(lái)開(kāi)發(fā)這種技術(shù)的語(yǔ)言就是 Objective-C 辑莫。當(dāng) NeXT 計(jì)算機(jī)的表現(xiàn)沒(méi)有達(dá)到 Sun 公司的預(yù)期要求是学歧,NeXT 走向了失敗各吨;
Sun 公司決定自己開(kāi)發(fā)語(yǔ)言和跨平臺(tái)的開(kāi)發(fā)包 —— Java 枝笨,Java 工程師都是通曉 Objective-C 的,因?yàn)?Objective - C 是他們?cè)谑褂?Java 之前的首選語(yǔ)言揭蜒。后來(lái)一些較好的功能被引入 Java 中 横浑,因此,Java 和 Objective-C 具有很多的共同點(diǎn)忌锯。

舉例以更好的說(shuō)明 Objective-C 是具備動(dòng)態(tài)特性和靜態(tài)特性于一身的語(yǔ)言:

C 語(yǔ)言(靜態(tài)語(yǔ)言特性)伪嫁,函數(shù)的調(diào)用在編譯的時(shí)候,會(huì)決定調(diào)用那個(gè)函數(shù)偶垮;

Objective - C (靜態(tài)語(yǔ)言特性):在編譯時(shí)张咳,并不能決定真正調(diào)用哪個(gè)函數(shù),但是 Objective-C 會(huì)檢查調(diào)用函數(shù)似舵;

于是就出現(xiàn)了一種特殊情況:
在編譯階段脚猾,C 語(yǔ)言調(diào)用為實(shí)現(xiàn)的函數(shù),就會(huì)報(bào)錯(cuò)砚哗;
在編譯階段龙助,OC 時(shí)可以調(diào)用任何函數(shù)的,即使這個(gè)函數(shù)并未實(shí)現(xiàn)蛛芥,只要聲明過(guò)就不會(huì)報(bào)錯(cuò)提鸟;

OC 語(yǔ)言,具有動(dòng)態(tài)調(diào)用的過(guò)程仅淑,僅當(dāng)真正運(yùn)行時(shí)称勋,才能會(huì)根據(jù)函數(shù)名找到對(duì)應(yīng)的函數(shù)來(lái)調(diào)用。此時(shí)涯竟,函數(shù)如果仍然沒(méi)有實(shí)現(xiàn)赡鲜,就會(huì)報(bào)錯(cuò)了空厌;

C 語(yǔ)言程序的執(zhí)行過(guò)程:

源程序 - 預(yù)處理 - 編譯器 - 匯編器 - 鏈接器 - 可執(zhí)行目標(biāo)程序(二進(jìn)制)

關(guān)于執(zhí)行效率:靜態(tài)語(yǔ)言執(zhí)行效率要比動(dòng)態(tài)語(yǔ)言高;

解釋?zhuān)阂驗(yàn)橐徊糠?CPU 計(jì)算損耗在 RunTime 過(guò)程中银酬,而靜態(tài)語(yǔ)言生成的機(jī)器指令更簡(jiǎn)潔嘲更;正是因?yàn)檫@個(gè)原因,所以開(kāi)發(fā)語(yǔ)言的人付出了很大一部分努力保持 Runtime 小巧揩瞪;

Objective-C 語(yǔ)言是 C 語(yǔ)言的超集 + 一個(gè)小巧的 Runtime 環(huán)境

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赋朦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子壮韭,更是在濱河造成了極大的恐慌北发,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喷屋,死亡現(xiàn)場(chǎng)離奇詭異琳拨,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)屯曹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)狱庇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人恶耽,你說(shuō)我怎么就攤上這事密任。” “怎么了偷俭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵浪讳,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我涌萤,道長(zhǎng)淹遵,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任负溪,我火速辦了婚禮透揣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘川抡。我一直安慰自己辐真,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布崖堤。 她就那樣靜靜地躺著侍咱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪密幔。 梳的紋絲不亂的頭發(fā)上放坏,一...
    開(kāi)封第一講書(shū)人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音老玛,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蜡豹,可吹牛的內(nèi)容都是我干的麸粮。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼镜廉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼弄诲!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起娇唯,我...
    開(kāi)封第一講書(shū)人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤事格,失蹤者是張志新(化名)和其女友劉穎鞍陨,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡倘潜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了茶行。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沃呢。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖流纹,靈堂內(nèi)的尸體忽然破棺而出糜烹,到底是詐尸還是另有隱情,我是刑警寧澤漱凝,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布疮蹦,位于F島的核電站,受9級(jí)特大地震影響茸炒,放射性物質(zhì)發(fā)生泄漏愕乎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一扣典、第九天 我趴在偏房一處隱蔽的房頂上張望妆毕。 院中可真熱鬧,春花似錦贮尖、人聲如沸笛粘。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)薪前。三九已至,卻和暖如春关斜,著一層夾襖步出監(jiān)牢的瞬間示括,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工痢畜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留垛膝,地道東北人鳍侣。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像吼拥,于是被迫代替她去往敵國(guó)和親倚聚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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