相信學(xué)計(jì)算機(jī)的人都應(yīng)該學(xué)過(guò)不止一種程序語(yǔ)言,很多時(shí)候,很可能是兩種,或者三種,甚至有人4種5種,當(dāng)然,大部分人都知道它們是編譯型的或者是解釋型的,但是有多少人去了解過(guò)他們各自的優(yōu)缺點(diǎn)?我也正如那大部分人一樣,知道這是什么類(lèi)型的語(yǔ)言,不過(guò)也很少去真正了解過(guò)它們!
那么什么是解釋型語(yǔ)言?什么是編譯型語(yǔ)言?
大家都知道,計(jì)算機(jī)是不能直接理解高級(jí)語(yǔ)言的,只能直接理解機(jī)器語(yǔ)言,所以必須要把高級(jí)語(yǔ)言翻譯成機(jī)器語(yǔ)言,計(jì)算機(jī)才能執(zhí)行高級(jí)語(yǔ)言編寫(xiě)的程序,而翻譯的方式有兩種,一種編譯,另一種就是解釋?zhuān)瑑烧叻g的時(shí)間不同!
編譯型語(yǔ)言寫(xiě)的程序在執(zhí)行之前,需要一個(gè)專(zhuān)門(mén)的編譯過(guò)程,把程序編譯成機(jī)器語(yǔ)言的文件,比如將hello.c文件進(jìn)行預(yù)處理,編譯,匯編和鏈接,最終生成可執(zhí)行代碼文件,這樣以后再次運(yùn)行的時(shí)候,就可以直接使用編譯的結(jié)果(即exe文件)!
解釋型語(yǔ)言不需要編譯,省了道工序,解釋型語(yǔ)言是在運(yùn)行程序的時(shí)候才翻譯的,需要一個(gè)專(zhuān)門(mén)的解釋器能夠執(zhí)行解釋型語(yǔ)言寫(xiě)的程序,每個(gè)語(yǔ)句都是執(zhí)行的時(shí)候才進(jìn)行翻譯的!
編譯型語(yǔ)言的優(yōu)點(diǎn):
1:因?yàn)榭梢灾苯邮褂镁幾g的結(jié)果而不需要再次翻譯,所以執(zhí)行的效率是比較高的!
2:編譯程序?qū)⒃闯绦蚍g成目標(biāo)程序后保存在另一個(gè)文件中,該目標(biāo)程序可以脫離編譯程序直接在計(jì)算機(jī)上多次使用,大部分軟件產(chǎn)品都是以目標(biāo)程序形勢(shì)發(fā)行給用戶的,不僅便于直接執(zhí)行,而且又使得他人難以盜用期中的技術(shù)!
編譯型語(yǔ)言的缺點(diǎn):
1:編譯執(zhí)行的語(yǔ)言因?yàn)橐苯油珻PU的指令集打交道,具有很強(qiáng)的指令依賴(lài)性和系統(tǒng)依賴(lài)性!
2:編譯后的程序是由機(jī)器語(yǔ)言指令構(gòu)成的,但是使用不同硬件平臺(tái)的計(jì)算機(jī),它們的機(jī)器語(yǔ)言是不同的,使得便宜過(guò)的程序不 能順利從一個(gè)計(jì)算機(jī)平臺(tái)往另外一個(gè)平臺(tái)上移植,因此在不同的平臺(tái)上往往需要重新編譯甚至重寫(xiě)程序,這將會(huì)耗費(fèi)大量的人力物力財(cái)力!
解釋型語(yǔ)言的優(yōu)點(diǎn):
1:一般情況下,只要有相應(yīng)版本的語(yǔ)言解釋器,解釋型語(yǔ)言所寫(xiě)的程序可以幾乎不做任何修改地移植到其他平臺(tái)上去,這相對(duì)于編譯型語(yǔ)言來(lái)說(shuō),是個(gè)極大的優(yōu)勢(shì)!
2:解釋型語(yǔ)言所寫(xiě)的程序是逐行進(jìn)行翻譯執(zhí)行命令的,因此當(dāng)語(yǔ)句出現(xiàn)語(yǔ)法問(wèn)題的時(shí)候,可以立即引起程序猿的注意,而程序猿在程序開(kāi)發(fā)期間就能進(jìn)行校正!
解釋型語(yǔ)言的缺點(diǎn):
1:解釋型語(yǔ)言的實(shí)現(xiàn)中,翻譯器并不產(chǎn)生目標(biāo)機(jī)器代碼,而是產(chǎn)生易于執(zhí)行的中間代碼,但是這種中間代碼與機(jī)器代碼不同,中間代碼的解釋是由軟件支持的,不能直接使用硬件,軟件解釋器通常會(huì)導(dǎo)致執(zhí)行效率較低,并且每執(zhí)行一次就得再翻譯一次,不能像編譯型語(yǔ)言那樣,一次編譯,任意次使用,因而效率方便沒(méi)有編譯型的高!