編譯是把源程序的每一條語(yǔ)句都編譯成機(jī)器語(yǔ)言,并保存成二進(jìn)制文件,這樣運(yùn)行時(shí)計(jì)算機(jī)可以直接以機(jī)器語(yǔ)言來(lái)運(yùn)行此程序,速度很快; 翻譯與執(zhí)行是分開(kāi)的;比較解釋性語(yǔ)言蛾魄,運(yùn)行速度快征峦。
優(yōu)點(diǎn): 可脫離開(kāi)發(fā)環(huán)境情屹,特定的平臺(tái)上獨(dú)立運(yùn)行柏锄,運(yùn)行效率較高酿箭。
缺點(diǎn):無(wú)法移植;需要移植趾娃,要源代碼重新編譯缭嫡。
代表語(yǔ)言:C 、 C++
解釋則是只在執(zhí)行程序時(shí),才一條一條的解釋成計(jì)算機(jī)可以識(shí)別的機(jī)器語(yǔ)言給計(jì)算機(jī)來(lái)執(zhí)行,
翻譯與執(zhí)行一次性完成抬闷,不生成可存儲(chǔ)的目標(biāo)代碼妇蛀。所以運(yùn)行速度是不如編譯后的程序運(yùn)行的快的.
優(yōu)點(diǎn):跨平臺(tái)較容易,可移植性好笤成,是以犧牲程序執(zhí)行效率為代價(jià)评架。
缺點(diǎn):效率較低,不能脫離解釋器獨(dú)立運(yùn)行
代表語(yǔ)言:ruby python
關(guān)于Java語(yǔ)言:
Java語(yǔ)言比較特殊炕泳,由于Java語(yǔ)言編寫(xiě)的程序需要經(jīng)過(guò)編譯古程,但這個(gè)編譯并不會(huì)生成特定平臺(tái)的機(jī)器碼,而是生成一種與平臺(tái)無(wú)關(guān)的字節(jié)碼(*.class)喊崖,這個(gè)字節(jié)碼不可執(zhí)行挣磨。必須使用java解釋器來(lái)解釋執(zhí)行。
所以java語(yǔ)言既是編譯型語(yǔ)言荤懂,也是解釋型語(yǔ)言茁裙。