大致上,能夠將程序設計語言能夠分爲兩類:編譯型語言和解釋型語言。編程
不少傳統的程序設計語言,例如Fortran、Ada、Pascal、C、C++和Java,都是編譯型語言。這類語言須要預先將咱們寫好的源代碼(source code)轉換成目標代碼(object code),這個過程被稱做「編譯」。
運行程序時,直接讀取目標代碼(object code)。因爲編譯後的目標代碼(object code)很是接近計算機底層,所以執行效率很高,這是編譯型語言的優勢。
可是,因爲編譯型語言多半運做於底層,所處理的是字節、整數、浮點數或是其餘機器層級的對象,每每實現一個簡單的功能須要大量複雜的代碼。例如,在C++裏,就很難進行「將一個目錄裏全部的文件複製到另外一個目錄中」之類的簡單操做。編程語言
解釋型語言也被稱做「腳本語言」。執行這類程序時,解釋器(interpreter)須要讀取咱們編寫的源代碼(source code),並將其轉換成目標代碼(object code),再由計算機運行。由於每次執行程序都多了編譯的過程,所以效率有所降低。
使用腳本編程語言的好處是,它們多半運行在比編譯型語言還高的層級,可以輕易處理文件與目錄之類的對象;缺點是它們的效率一般不如編譯型語言。不過權衡之下,一般使用腳本編程仍是值得的:花一個小時寫成的簡單腳本,一樣的功能用C或C++來編寫實現,可能須要兩天,並且通常來講,腳本執行的速度已經夠快了,快到足以讓人忽略它性能上的問題。腳本編程語言的例子有awk、Perl、Python、Ruby與Shell。性能