大體上,可以將程序設(shè)計語言可以分為兩類:編譯型語言和解釋型語言。
很多傳統(tǒng)的程序設(shè)計語言,例如 Fortran、Ada、Pascal、C、C++ 和 Java,都是編譯型語言。這類語言需要預(yù)先將我們寫好的源代碼(source code)轉(zhuǎn)換成目標代碼(object code),這個過程被稱作“編譯”。
運行程序時,直接讀取目標代碼(object code)。由于編譯后的目標代碼(object code)非常接近計算機底層,因此執(zhí)行效率很高,這是編譯型語言的優(yōu)點。
但是,由于編譯型語言多半運作于底層,所處理的是字節(jié)、整數(shù)、浮點數(shù)或是其他機器層級的對象,往往實現(xiàn)一個簡單的功能需要大量復(fù)雜的代碼。例如,在 C++ 里,就很難進行“將一個目錄里所有的文件復(fù)制到另一個目錄中”之類的簡單操作。
解釋型語言也被稱作“腳本語言”。執(zhí)行這類程序時,解釋器(interpreter)需要讀取我們編寫的源代碼(source code),并將其轉(zhuǎn)換成目標代碼(object code),再由計算機運行。因為每次執(zhí)行程序都多了編譯的過程,因此效率有所下降。
使用腳本編程語言的好處是,它們多半運行在比編譯型語言還高的層級,能夠輕易處理文件與目錄之類的對象;缺點是它們的效率通常不如編譯型語言。不過權(quán)衡之下,通常使用腳本編程還是值得的:花一個小時寫成的簡單腳本,同樣的功能用 C 或 C++ 來編寫實現(xiàn),可能需要兩天,而且一般來說,腳本執(zhí)行的速度已經(jīng)夠快了,快到足以讓人忽略它性能上的問題。腳本編程語言的例子有 awk、Perl、Python、Ruby 與 Shell。