(一)編譯型和解釋型
計算機不能直接理解高級語言,僅僅能直接理解機器語言,所以必需要把高級語言翻譯成機器語言,計算機才干運行高級語言編寫的程序。翻譯的方式有兩種,一個是編譯,一個是解釋。
編譯型語言寫的程序執行之前,已經把程序編譯好了,比方exe文件,以后要執行的話就不用又一次翻譯了。直接使用編譯的結果即可了(exe文件),由於翻譯僅僅做了一次,執行時不須要翻譯,所以編譯型語言的程序執行效率高。
解釋性語言的程序在執行程序的時候才翻譯,邊執行邊翻譯。
這樣解釋性語言每執行一次就要翻譯一次。效率比較低。
用一個樣例類比下,比方一個人讀一本外語書。他能夠選擇直接讀別人翻譯好的(編譯型),或者讓別人一句句讀給他聽(解釋型)。翻譯好的譯文隨時能夠再讀,請別人讀每一個章節都須要又一次讀一次。
(二)動態語言和靜態語言
動態類型語言:在執行期間檢查數據的類型的語言。
用這類語言編程,不會給變量指定類型,而是在附值時得到數據類型。
靜態類型語言:相反靜態類型語言是在執行前編譯時檢查類型。在寫代碼時。沒聲明一個變量必須指定類型。
動態類型語言如JS
function add(a,b){ return a+b; } add(1,2); add('1',2);
靜態類型語言如C、C++、Java、C#等
public int add(int a,int b){ return a+b; }
(三)強類型定義語言和弱類型定義語言
強類型定義語言:強制數據類型定義的語言。
也就是說,一旦一個變量被指定了某個數據類型,假設不經過強制轉換。那么它就永遠是這個數據類型了。舉個樣例:假設你定義了一個整型變量a,那么程序根本不可能將a當作字符串類型處理。
強類型定義語言是類型安全的語言,如Java。
弱類型定義語言:數據類型能夠被忽略的語言。它與強類型定義語言相反, 一個變量能夠賦不同數據類型的值。如JS。