概念區別 【編譯型語言與解釋型語言、動態型別語言與靜態型別語言、強型別語言與弱型別語言】
概念區別 【編譯型語言與解釋型語言、動態型別語言與靜態型別語言、強型別語言與弱型別語言】
一、編譯型語言與解釋型語言
計算機只能夠直接理解機器語言,不能夠理解高階語言,所以若想執行高階語言編寫的程式,都必須轉換成計算機語言才可以被執行,計算機語言就是機器語言,將高階語言轉換成機器語言的方式有兩種,一種是編譯,另外一種是解釋,所以高階語言也被分為編譯型語言和解釋型語言。
這兩者的主要區別在於編譯和執行的順序不同。
編譯型語言是指將源程式進行編譯後再執行,執行速度較快,會直接生成一個可以直接執行的機器語言的檔案,例如在原始檔下會生成一個exe檔案,這樣在下次執行的時候就不用編譯可以直接使用編譯結果,因為只需編譯一次,以後執行時不需要編譯,所以編譯型語言執行效率高,但其只能在特定平臺進行程式執行,一般無法移植到特定平臺。
解釋型語言是在執行期間編譯,不需要進行事先編譯,可以直接通過平臺提供的相應直譯器將原始碼解釋成機器碼並立即執行,即可執行該程式,解釋型語言每次執行都要編譯一次,因而效率較低,但是其跨平臺效能較好,程式移植較為方便,可以在不同的平臺執行。
現有的C、C++、Objective等都屬於編譯型語言,Python等屬於解釋型語言。
二、動態型別語言與靜態型別語言
動態型別語言和靜態型別語言主要是針對於資料型別的檢查,兩者對於資料型別的定義順序不同。
動態型別語言是指在執行期間進行資料型別檢查,這意味著在使用動態型別語言進行編譯的時候,不需要給變數提前指定資料型別,動態型別語言會變數第一次賦值時,自動記錄資料型別,這種語言對於資料的使用較為方便,可以在需要的時候再進行定義,較為自由。
靜態型別語言是指在編譯期間進行資料檢查,然後再進行執行,這意味著使用靜態型別語言進行編寫程式的時候,就需要宣告所有的資料型別,否則就會出錯,這種資料型別執行速度較快,較為穩定,在大型專案時,為了可控,更多選用靜態型別語言。
現有的C、C++、Java、Delphi、C#等都屬於靜態型別語言,Python、Ruby、Perl等都屬於動態型別語言。
三、強型別語言與弱型別語言
強型別語言和弱型別語言是針對於型別定義來說的,兩者關於變數的型別定義的強制性不同。
強型別語言指的是強制型別定義的語言,要求變數的使用要嚴格符合定義,所有變數都必須先定義後使用,如果一個變數被指定了某個資料型別,如果不經過強制轉換,它的資料型別則不會被改變。java、.NET、C++等都屬於強型別語言。例如被定義為int的型別資料,只有經過轉換,才可以視為其他型別。
弱型別語言指的是不強制型別定義的語言,資料型別可以被忽略,一個變數可以賦給不同的資料型別的值。vb,php等就屬於弱型別語言。
參考:強型別和弱型別語言有什麼不同
總結
編譯型語言和解釋性語言主要區別在於編譯順序的不同,動態型別語言和靜態型別語言主要區別在於對於資料型別的定義順序的不同,強型別語言和弱型別語言主要區別在於對於變數的資料型別的定義的不同。
相關文章
- 計算機語言:編譯型/解釋型、動態語言/靜態語言、強型別語言/弱型別語言計算機編譯型別
- 解釋型語言與編譯型語言的區別?編譯
- 解釋型語言、編譯型語言 區別編譯
- 淺談程式語言型別的強型別,弱型別,動態型別,靜態型別型別
- 動態語言與鴨子型別型別
- Python 語言特性:編譯+解釋、動態型別語言、動態語言Python編譯型別
- 編譯型語言與解釋型語言編譯
- 淺談強型別語言與弱型別語言,歡迎大家來點評型別
- Java 語言是強型別語言語言(轉)Java型別
- 編譯型語言和解釋型語言的區別編譯
- 語言型別介紹及其Python的語言型別型別Python
- python---之編譯型語言和解釋型語言的區別Python編譯
- Python 既是解釋型語言,也是編譯型語言Python編譯
- go語言資料型別-基礎型別Go資料型別
- C語言資料型別C語言資料型別
- C語言(共用體型別)C語言型別
- go語言——資料型別Go資料型別
- C語言(typedef 型別取別名)C語言型別
- 強型別語言變數和資料型別的理解變數資料型別
- C語言(基本資料型別)C語言資料型別
- q語言的資料型別資料型別
- Go 語言型別系統詳解Go型別
- 計算機程式語言的分類,解釋型語言、編譯型語言、指令碼語言的關係計算機編譯指令碼
- 羅素悖論 型別系統與程式語言型別
- 解析Java語言的介面與型別安全(轉)Java型別
- 編譯語言、解釋語言與指令碼語言之間的區別編譯指令碼
- 讚美 void, ECMAScript 秒變靜態型別語言型別
- 現代程式語言系列1:靜態型別趨勢型別
- C語言 列舉資料型別C語言資料型別
- C語言筆記——自定義型別C語言筆記型別
- 補充:C語言列舉型別C語言型別
- GO語言————8.4 map 型別的切片Go型別
- c語言的基本資料型別C語言資料型別
- c語言(列舉(enumeration)型別)C語言型別
- go語言資料型別轉換Go資料型別
- C語言基礎-2、字元型別C語言字元型別
- 高階語言——編譯型、解釋型、混合型編譯
- 為什麼動態型別程式語言會如此流行?型別