溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

編譯型語言和解釋型語言有哪些區(qū)別

發(fā)布時間:2020-08-26 15:32:30 來源:億速云 閱讀:479 作者:Leah 欄目:編程語言

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)編譯型語言和解釋型語言有哪些區(qū)別,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Python 是一門解釋型的編程語言,因此它具有解釋型語言的運(yùn)行機(jī)制。

計(jì)算機(jī)程序,其實(shí)就是一組計(jì)算機(jī)指令的集合,能真正驅(qū)動機(jī)器運(yùn)行的是機(jī)器指令,但讓普通開發(fā)者直接編寫機(jī)器指令是不現(xiàn)實(shí)的,因此就出現(xiàn)了計(jì)算機(jī)高級語言。高級語言允許使用自然語言(通常就是英語)來編程,但高級語言的程序最終必須被翻譯成機(jī)器指令來執(zhí)行。

高級語言按照程序的執(zhí)行方式,可以分為編譯型和解釋型兩種。

編譯型語言

編譯型語言是指使用專門的編譯器,針對特定平臺(操作系統(tǒng))將某種高級語言源代碼,一次性“翻譯”成可被該平臺硬件執(zhí)行的機(jī)器語言(包括機(jī)器指令和操作數(shù)),并包裝成該平臺所能識別的可執(zhí)行程序的格式,這個轉(zhuǎn)換過程稱為編譯(Compile)。編譯生成的可執(zhí)行程序可以脫離開發(fā)環(huán)境,在特定的平臺上獨(dú)立運(yùn)行。

編譯器,可以理解為就是一個比較復(fù)雜的計(jì)算機(jī)程序,它可以接受一個以高級語言編寫的程序,并將其翻譯成以某個計(jì)算機(jī)的機(jī)器
語言表達(dá)的等效程序。

有些程序編譯結(jié)束后,還可能需要對其他編譯好的目標(biāo)代碼進(jìn)行鏈接,即組裝兩個以上的目標(biāo)代碼模塊生成最終的可執(zhí)行程序,通過這種方式實(shí)現(xiàn)低層次的代碼復(fù)用。

因?yàn)榫幾g型語言是一次性編譯成機(jī)器語言的,所以可以脫離開發(fā)環(huán)境獨(dú)立運(yùn)行,而且通常運(yùn)行效率較高。但因?yàn)榫幾g型語言的程序被編譯成特定平臺上的機(jī)器碼,因此編譯生成的可執(zhí)行程序通常無法移植到其他平臺上運(yùn)行,如果需要移植,則必須將源代碼復(fù)制到特定平臺上,針對特定平臺進(jìn)行修改,至少需要采用特定平臺上的編譯器重新編譯。

半編譯型語言

此外,還有一種偽編譯型語言,如 Visual Basic,它屬于半編譯型語言,并不是真正的編譯型語言。它首先被編譯成 P-code 代碼(中間代碼),并將解釋引擎封裝在可執(zhí)行程序內(nèi),當(dāng)運(yùn)行程序時,P-code 代碼才會被解析成真正的二進(jìn)制代碼。

從表面上看,Visual Basic 可以編譯生成可執(zhí)行的 EXE 文件,而且這個 EXE 文件也可以脫離開發(fā)環(huán)境,在特定平臺上運(yùn)行,非常像編譯型語言。實(shí)際上,在這個 EXE 文件中,既有程序的啟動代碼,也有鏈接解釋程序的代碼,而這部分代碼負(fù)責(zé)啟動 Visual Basic 解釋程序,再對 Visual Basic 代碼進(jìn)行解釋井執(zhí)行。

解釋型語言

解釋型語言是指使用專門的解釋器,將源程序逐行解釋成特定平臺的機(jī)器代碼并立即執(zhí)行的語言。

解釋型語言通常不會進(jìn)行整體性的編譯和鏈接處理,解釋型語言相當(dāng)于把編譯型語言中的編譯和解釋過程混合到一起同時完成。

可以這樣認(rèn)為,每次執(zhí)行解釋型語言的程序都需要進(jìn)行一次編譯,因此解釋型語言的程序運(yùn)行效率通常較低,而且不能脫離解釋器獨(dú)立運(yùn)行。但解釋型語言有一個優(yōu)勢,就是跨平臺比較容易,只需提供特定平臺的解釋器即可,每個特定平臺上的解釋器都負(fù)責(zé)將源程序解釋成特定平臺的機(jī)器指令。

也就是說,解釋型語言可以方便地實(shí)現(xiàn)源程序級的移植,但這是以犧牲程序執(zhí)行效率為代價的。

編譯型語言PK解釋型語言

編譯型語言和解釋型語言的對比如下圖所示。

編譯型語言和解釋型語言有哪些區(qū)別

借助上圖不難理解,編譯型語言和解釋型語言的區(qū)別在于,編譯是對高級語言程序進(jìn)行一次性翻譯,這樣的好處是,一旦源程序被徹底翻譯,它就可以重復(fù)運(yùn)行,且今后都不再需要編譯器和源代碼;而如果使用解釋器,則高級語言程序每次運(yùn)行,都需要借助源程序和解釋器,其最大的好處就是,程序有很好的可移植性。

上述就是小編為大家分享的編譯型語言和解釋型語言有哪些區(qū)別了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI