動(dòng)畫(huà)講編程python程序設(shè)計(jì)
? -編譯:一次性翻譯,之后不再需要源代碼(類(lèi)似英文翻譯)
????-解釋?zhuān)好看纬绦蜻\(yùn)行時(shí)隨翻譯隨執(zhí)行(類(lèi)似實(shí)時(shí)的同聲傳譯)
????解釋和編譯的區(qū)別在于編譯是一次性地翻譯,一旦程序被編譯,不再需要編譯程序或者源代碼。解釋則在每次程序運(yùn)行時(shí)都需要解釋器和源代碼。這兩者的區(qū)別類(lèi)似于外語(yǔ)資料的翻譯和實(shí)時(shí)的同聲傳譯。
????編譯過(guò)程只進(jìn)行一次,所以,編譯過(guò)程的速度并不是關(guān)鍵,目標(biāo)代碼的運(yùn)行速度是關(guān)鍵。因此,編譯器一般都集成盡可能多的優(yōu)化技術(shù),使生成的目標(biāo)代碼具備更好的執(zhí)行效率。然而,解釋器卻不能集成太多優(yōu)化技術(shù),因?yàn)榇a優(yōu)化技術(shù)會(huì)消耗運(yùn)行時(shí)間,使整個(gè)程序的執(zhí)行速度受到影響。
? ? -- 采用編譯方式有如下好處。
? ?? (1)對(duì)于相同源代碼,編譯所產(chǎn)生的目標(biāo)代碼執(zhí)行速度更快。
????????(2)目標(biāo)代碼不需要編譯器就可以運(yùn)行,在同類(lèi)型操作系統(tǒng)上使用靈活。
? ? -- 采用解釋方式有如下好處。
? ?? (1)解釋執(zhí)行需要保留源代碼,程序糾錯(cuò)和維護(hù)十分方便。
? ?? (2)只要存在解釋器,源代碼可以在任何操作系統(tǒng)上運(yùn)行,可移植性好。
????簡(jiǎn)單地說(shuō),解釋執(zhí)行、逐條運(yùn)行用戶(hù)編寫(xiě)的代碼,沒(méi)有縱覽全部代碼的性能優(yōu)化過(guò)程,因此執(zhí)行性能略低,但可以支持跨硬件或操作系統(tǒng)平臺(tái),保留源代碼對(duì)升級(jí)維護(hù)十分有利,適合非性能關(guān)鍵的程序運(yùn)行場(chǎng)景。采用編譯執(zhí)行的編程語(yǔ)言是靜態(tài)語(yǔ)言,如?C?語(yǔ)言、Java?語(yǔ)言;采用解釋執(zhí)行的編程語(yǔ)言是腳本語(yǔ)言,如?JavaScript?語(yǔ)言,PHP?語(yǔ)言。Python?語(yǔ)言是一種被廣泛使用的高級(jí)通用腳本編程語(yǔ)言,雖采用解釋執(zhí)行方式,但它的解釋器也保留了編譯器的部分功能,隨著程序運(yùn)行,解釋器也會(huì)生成一個(gè)完整的目標(biāo)代碼。這種將解釋器和編譯器結(jié)合的新解釋器是現(xiàn)代腳本語(yǔ)言為了提升計(jì)算性能的一種有益演進(jìn)。