高級編程語言可以分為兩大類,如下:
1. 編譯型:C、C++、Pascal等;
2. 解釋型:Basic、JavaScript、Python等。
1. 編譯型語言
編譯型語言在程序執(zhí)行之前有一個專門的編譯過程,編譯器會把程序編譯成針對不同CPU類型的可執(zhí)行文件,之后再由機器運行這個可執(zhí)行文件。運行時不再需要重新翻譯,直接使用編譯的結果就行。編譯型語言的工作原理類似于“翻譯書籍”。
在同一平臺(操作系統(tǒng))上,編譯型語言可以一次編譯,無限次運行。只要在首次執(zhí)行前編譯生成相應的可執(zhí)行文件,以后每次運行時直接運行這個可執(zhí)行文件即可,因此其運行效率高于解釋型語言。
但針對不同平臺(操作系統(tǒng)),要生成的可執(zhí)行文件卻并不相同,因為不同平臺支持的函數(shù)、類型、變量等可能都不同。所以編譯型語言寫出來的代碼,要想在不同類型的操作系統(tǒng)上運行,必須經(jīng)歷多次不同的編譯,故難以實現(xiàn)在不同操作系統(tǒng)間隨意地切換,可移植性較差。
2. 解釋型語言
解釋型語言則是一邊轉(zhuǎn)換一邊執(zhí)行,不會把源代碼生成可執(zhí)行的文件。而是會把源碼翻譯成中間代碼,再由解釋器對中間代碼進行解釋運行,每執(zhí)行一次都要翻譯一次。解釋型語言的工作原理類似于“同聲傳譯”。
解釋型語言寫出的代碼,每次運行時都要重新轉(zhuǎn)換源代碼。會有一個解釋器根據(jù)操作系統(tǒng)的不同,將源代碼轉(zhuǎn)換成不同的機器碼。所以相同的源代碼,可以實現(xiàn)在不同的平臺上運行,即“一次編寫,到處運行”。但解釋型語言每次執(zhí)行時都要重新轉(zhuǎn)換源代碼,在效率上天生低于編譯型語言。
總之,編譯型和解釋型語言各有其優(yōu)缺點!
3. Java編程語言特點
而我們的java編程語言,確切地來說,既不是編譯型語言,也不是解釋型語言,而是結合了以上兩種語言類型的優(yōu)點。Java會先對源代碼進行編譯,再將編譯后的字節(jié)碼文件解釋執(zhí)行!