編程語(yǔ)言的分類(lèi)方法


編譯型語(yǔ)言和解釋型語(yǔ)言

1缘滥、編譯型語(yǔ)言

需通過(guò)編譯器(compiler)將源代碼編譯成機(jī)器碼轰胁,之后才能執(zhí)行的語(yǔ)言朝扼。一般需經(jīng)過(guò)編譯(compile)、鏈接(linker)這兩個(gè)步驟擎颖。編譯是把源代碼編譯成機(jī)器碼,鏈接是把各個(gè)模塊的機(jī)器碼和依賴(lài)庫(kù)串連起來(lái)生成可執(zhí)行文件肖抱。

優(yōu)點(diǎn):編譯器一般會(huì)有預(yù)編譯的過(guò)程對(duì)代碼進(jìn)行優(yōu)化。因?yàn)榫幾g只做一次意述,運(yùn)行時(shí)不需要編譯吮蛹,所以編譯型語(yǔ)言的程序執(zhí)行效率高荤崇〕闭耄可以脫離語(yǔ)言環(huán)境獨(dú)立運(yùn)行。

缺點(diǎn):編譯之后如果需要修改就需要整個(gè)模塊重新編譯每篷。編譯的時(shí)候根據(jù)對(duì)應(yīng)的運(yùn)行環(huán)境生成機(jī)器碼端圈,不同的操作系統(tǒng)之間移植就會(huì)有問(wèn)題子库,需要根據(jù)運(yùn)行的操作系統(tǒng)環(huán)境編譯不同的可執(zhí)行文件。

代表語(yǔ)言:C仑嗅、C++宴倍、Pascal仓技、Object-C以及最近很火的蘋(píng)果新語(yǔ)言swift

2、解釋型語(yǔ)言

解釋性語(yǔ)言的程序不需要編譯恭理,相比編譯型語(yǔ)言省了道工序郭变,解釋性語(yǔ)言在運(yùn)行程序的時(shí)候才逐行翻譯涯保。

優(yōu)點(diǎn):有良好的平臺(tái)兼容性,在任何環(huán)境中都可以運(yùn)行夕春,前提是安裝了解釋器(虛擬機(jī))。靈活及志,修改代碼的時(shí)候直接修改就可以,可以快速部署率寡,不用停機(jī)維護(hù)倚搬。

缺點(diǎn):每次運(yùn)行的時(shí)候都要解釋一遍,性能上不如編譯型語(yǔ)言每界。

代表語(yǔ)言:JavaScript、Python庙楚、Erlang趴樱、PHP酪捡、Perl、Ruby

3沛善、混合型語(yǔ)言

既然編譯型和解釋型各有缺點(diǎn)就會(huì)有人想到把兩種類(lèi)型整合起來(lái)塞祈,取其精華去其糟粕。就出現(xiàn)了半編譯型語(yǔ)言议薪。比如C#,C#在編譯的時(shí)候不是直接編譯成機(jī)器碼而是中間碼,.NET平臺(tái)提供了中間語(yǔ)言運(yùn)行庫(kù)運(yùn)行中間碼产捞,中間語(yǔ)言運(yùn)行庫(kù)類(lèi)似于Java虛擬機(jī)哼御。.net在編譯成IL代碼后,保存在dll中恋昼,首次運(yùn)行時(shí)由JIT在編譯成機(jī)器碼緩存在內(nèi)存中,下次直接執(zhí)行(博友回復(fù)指出)挟炬。我個(gè)人認(rèn)為拋開(kāi)一切的偏見(jiàn)C#是這個(gè)星球上最好的編程語(yǔ)言嗦哆。可惜微軟的政策限制了C#的推廣老速。

Java先生成字節(jié)碼再在Java虛擬機(jī)中解釋執(zhí)行。

嚴(yán)格來(lái)說(shuō)混合型語(yǔ)言屬于解釋型語(yǔ)言容客。C#更接近編譯型語(yǔ)言约郁。


動(dòng)態(tài)語(yǔ)言和靜態(tài)語(yǔ)言

1、動(dòng)態(tài)語(yǔ)言

是一類(lèi)在運(yùn)行時(shí)可以改變其結(jié)構(gòu)的語(yǔ)言:例如新的函數(shù)鬓梅、對(duì)象、甚至代碼可以被引進(jìn)芥丧,已有的函數(shù)可以被刪除或是其他結(jié)構(gòu)上的變化。通俗點(diǎn)說(shuō)就是在運(yùn)行時(shí)代碼可以根據(jù)某些條件改變自身結(jié)構(gòu)续担。

主要?jiǎng)討B(tài)語(yǔ)言:Object-C、C#物遇、JavaScript、PHP乃沙、Python诗舰、Erlang。

2眶根、靜態(tài)語(yǔ)言

與動(dòng)態(tài)語(yǔ)言相對(duì)應(yīng)的,運(yùn)行時(shí)結(jié)構(gòu)不可變的語(yǔ)言就是靜態(tài)語(yǔ)言记劝。如Java诸老、C钳恕、C++。

3忧额、注意:

很多人認(rèn)為解釋型語(yǔ)言都是動(dòng)態(tài)語(yǔ)言,這個(gè)觀(guān)點(diǎn)是錯(cuò)的类茂!Java是解釋型語(yǔ)言但是不是動(dòng)態(tài)語(yǔ)言托嚣,Java不能在運(yùn)行的時(shí)候改變自己結(jié)構(gòu)。反之成立嗎示启?

動(dòng)態(tài)語(yǔ)言都是解釋型語(yǔ)言。也是錯(cuò)的迟螺!Object-C是編譯型語(yǔ)言,但是他是動(dòng)態(tài)語(yǔ)言矩父。得益于特有的run time機(jī)制(準(zhǔn)確說(shuō)runtime不是語(yǔ)法特性是運(yùn)行時(shí)環(huán)境,這里不展開(kāi))OC代碼是可以在運(yùn)行的時(shí)候插入民轴、替換方法的夹姥。

C#也是動(dòng)態(tài)語(yǔ)言杉武,通過(guò)C#的反射機(jī)制可以動(dòng)態(tài)的插入一段代碼執(zhí)行辙售。所以我說(shuō)C#是這個(gè)星球最好的編程語(yǔ)言。


動(dòng)態(tài)類(lèi)型語(yǔ)言和靜態(tài)類(lèi)型語(yǔ)言

1祈搜、動(dòng)態(tài)類(lèi)型語(yǔ)言

很多網(wǎng)上資料把動(dòng)態(tài)類(lèi)型語(yǔ)言和動(dòng)態(tài)語(yǔ)言混為一談士八,簡(jiǎn)直是誤人子弟。動(dòng)態(tài)類(lèi)型語(yǔ)言和動(dòng)態(tài)語(yǔ)言是完全不同的兩個(gè)概念蘸秘。動(dòng)態(tài)類(lèi)型語(yǔ)言是指在運(yùn)行期間才去做數(shù)據(jù)類(lèi)型檢查的語(yǔ)言蝗茁,說(shuō)的是數(shù)據(jù)類(lèi)型,動(dòng)態(tài)語(yǔ)言說(shuō)的是運(yùn)行是改變結(jié)構(gòu)哮翘,說(shuō)的是代碼結(jié)構(gòu)。

動(dòng)態(tài)類(lèi)型語(yǔ)言的數(shù)據(jù)類(lèi)型不是在編譯階段決定的阻课,而是把類(lèi)型綁定延后到了運(yùn)行階段艰匙。

主要語(yǔ)言:Python、Ruby员凝、Erlang、JavaScript、swift硕舆、PHP、Perl扬跋。

2、靜態(tài)類(lèi)型語(yǔ)言

靜態(tài)語(yǔ)言的數(shù)據(jù)類(lèi)型是在編譯其間確定的或者說(shuō)運(yùn)行之前確定的钦听,編寫(xiě)代碼的時(shí)候要明確確定變量的數(shù)據(jù)類(lèi)型倍奢。

主要語(yǔ)言:C、C++卒煞、C#、Java衣撬、Object-C扮饶。

3、注意:

相當(dāng)一部分程序員甜无,也包括曾經(jīng)的我,認(rèn)為解釋型語(yǔ)言都是動(dòng)態(tài)類(lèi)型語(yǔ)言陵究,編譯型語(yǔ)言都是靜態(tài)類(lèi)型語(yǔ)言元潘。這個(gè)也是錯(cuò)的君仆。swift是編譯型語(yǔ)言但是它也是動(dòng)態(tài)類(lèi)型語(yǔ)言。C#和Java是解釋型語(yǔ)言也是靜態(tài)類(lèi)型語(yǔ)言返咱。


強(qiáng)類(lèi)型語(yǔ)言和弱類(lèi)型語(yǔ)言

1、強(qiáng)類(lèi)型語(yǔ)言:

強(qiáng)類(lèi)型語(yǔ)言评姨,一旦一個(gè)變量被指定了某個(gè)數(shù)據(jù)類(lèi)型,如果不經(jīng)過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換吐句,那么它就永遠(yuǎn)是這個(gè)數(shù)據(jù)類(lèi)型。你不能把一個(gè)整形變量當(dāng)成一個(gè)字符串來(lái)處理攀芯。

主要語(yǔ)言:Java文虏、C#、Python氧秘、Object-C、Ruby

2搔确、弱類(lèi)型語(yǔ)言:

數(shù)據(jù)類(lèi)型可以被忽略已添,一個(gè)變量可以賦不同數(shù)據(jù)類(lèi)型的值。一旦給一個(gè)整型變量a賦一個(gè)字符串值更舞,那么a就變成字符類(lèi)型。

主要語(yǔ)言:JavaScript宇葱、PHP刊头、C、C++(C和C++有爭(zhēng)議原杂,但是確實(shí)可以給一個(gè)字符變量賦整形值,可能初衷是強(qiáng)類(lèi)型年局,形態(tài)上接近弱類(lèi)型)

3咸产、注意:

一個(gè)語(yǔ)言是不是強(qiáng)類(lèi)型語(yǔ)言和是不是動(dòng)態(tài)類(lèi)型語(yǔ)言也沒(méi)有必然聯(lián)系。Python是動(dòng)態(tài)類(lèi)型語(yǔ)言僵朗,是強(qiáng)類(lèi)型語(yǔ)言。JavaScript是動(dòng)態(tài)類(lèi)型語(yǔ)言验庙,是弱類(lèi)型語(yǔ)言。Java是靜態(tài)類(lèi)型語(yǔ)言云矫,是強(qiáng)類(lèi)型語(yǔ)言汗菜。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市陨界,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌腮敌,老刑警劉巖俏扩,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異捌木,居然都是意外死亡嫉戚,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)帆啃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)窍帝,“玉大人,你說(shuō)我怎么就攤上這事坤学。” “怎么了贴膘?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵略号,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我突梦,道長(zhǎng)羽利,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任娃闲,我火速辦了婚禮匾浪,結(jié)果婚禮上皇帮,老公的妹妹穿的比我還像新娘蛋辈。我一直安慰自己,他們只是感情好渐白,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布逞频。 她就那樣靜靜地躺著,像睡著了一般托酸。 火紅的嫁衣襯著肌膚如雪柒巫。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天应结,我揣著相機(jī)與錄音,去河邊找鬼鹅龄。 笑死亭畜,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拴鸵。 我是一名探鬼主播蜗搔,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼樟凄,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼兄渺!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起挂谍,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤口叙,失蹤者是張志新(化名)和其女友劉穎百新,沒(méi)想到半個(gè)月后庐扫,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铅辞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年斟珊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了富纸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡晓褪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出勤庐,到底是詐尸還是另有隱情好港,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布丈探,位于F島的核電站,受9級(jí)特大地震影響碗降,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜遗锣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一精偿、第九天 我趴在偏房一處隱蔽的房頂上張望赋兵。 院中可真熱鬧笔咽,春花似錦霹期、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至臣淤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間姓蜂,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工钱慢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留卿堂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓麦箍,卻偏偏與公主長(zhǎng)得像陶珠,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子揍诽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

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

  • TITLE: 編程語(yǔ)言亂燉 碼農(nóng)最大的煩惱——編程語(yǔ)言太多。不是我不學(xué)習(xí)渠啤,這世界變化快! 有時(shí)候還是蠻懷念十幾份名、二...
    碼園老農(nóng)閱讀 5,321評(píng)論 2 35
  • 將來(lái)時(shí) 將來(lái)時(shí)是由werden(成為)的現(xiàn)在時(shí)變位和動(dòng)詞的基本形式(不定式)構(gòu)成壶栋。以spielen(玩耍)的將來(lái)時(shí)...
    medisol閱讀 2,025評(píng)論 0 2
  • 2016年第二季讀書(shū)活動(dòng)已經(jīng)快要結(jié)束了毙玻,由于是人物傳記,再加上我對(duì)碎片化的時(shí)間把握的比較緊淆珊,閱讀可以提前結(jié)束。閱讀...
    YKmonica閱讀 472評(píng)論 1 0
  • 萬(wàn)達(dá)賤賣(mài)資產(chǎn),王石出局萬(wàn)科听哭,賈躍停出走美國(guó)。 曾經(jīng)的巨大帝國(guó)陆盘,頃刻興亡過(guò)手。這真是商業(yè)版的戰(zhàn)國(guó)呀隘马!是海嘯前的預(yù)示,...
    奔跑的馬齒莧閱讀 142評(píng)論 0 0
  • 三月春光 一季的爛漫于我 不過(guò)是眨眼間的杏花如雪 再回首 只聽(tīng)到了晚櫻的絕唱 還有 與那倉(cāng)皇逃竄的東風(fēng)的邂逅 任我...
    塘東閱讀 230評(píng)論 0 0