解釋型語言、編譯型語言 區別
轉自(侵刪):
編譯型語言與解釋型語言的區別
編譯器與直譯器和解釋型語言與編譯型語言
一. 編譯器和直譯器的區別
1. 編譯器:
將原始碼直接編譯成目標平臺的機器碼,即可執行程式碼。執行過程中不需要依賴編譯器。
2. 直譯器:
逐行解釋原始碼,並轉化成對應的目標平臺的機器碼執行。在執行過程中需要依賴直譯器。
二. 解釋型語言和編譯型語言
1. 編譯型:
- 在執行前,編譯器將原始碼生成目標平臺的可執行程式碼,執行時不需要依賴編譯器。
- 編譯型的語言指使用專門的編譯器、針對特定平臺(作業系統)將某種高階語言原始碼一次性“翻譯”成該平臺硬體執行的機器碼(包括機器指令和運算元),幷包裝成該平臺所能識別的可執行性程式的格式,這個轉換過程稱為編譯(Compile)。編譯生成的可執行程式可以以脫離開發環境,在特定的平臺上獨立執行。
- 有些程式在編譯結束之後,還可能需要對其他編譯好的目的碼進行連結,即組裝兩個以上的目的碼模組生成最終的可執行程式,通過這種方式實現低層次的程式碼複用。
- 因為編譯型語言是一次性的編譯成機器碼,所以可以脫離開發環境獨立執行,而且通常執行效率較高。
- 但因為編譯性語言的程式被編譯成特定平臺上的機器碼,因此編譯生成的可執行程式通常無法移植到其他平臺上執行;如果需要移植,則必須將原始碼複製到特定的平臺上,針對特定的平臺進行修改,至少也需要採用特定平臺上的編譯器重新編譯。
- 比如我們現在的C、C++、Objective-C、Pasca等高階語言都屬於編譯型語言。
2. 解釋型:
- 在執行時,通過直譯器解析原始碼執行程式。執行過程中依賴直譯器。
- 解釋型語言是指使用專門的直譯器對源程式進行逐行解釋成特定平臺的機器碼並立即執行的語言。解釋型語言通常不會進行整體的編譯和連結處理,解釋型語言相當於把編譯型語言中的編譯和解釋過程混合在一起同時完成。
- 可以這樣認為:每次執行解釋型語言的程式都需要進行一次編譯,因此解釋型語言的程式執行效率通常較低,而且它不能脫離直譯器獨立執行。
- 但解釋性語言有一個優勢:跨平臺比較容易,只需提供特定平臺的直譯器即可,每個特定平臺上的直譯器負責將源程式解釋成特定平臺的機器指令即可。解釋性語言可以方便的實現源程式的移植,但這是以犧牲程式執行效率為代價的。
- 比如我們現在的Java、Ruby、Python等高階語言都屬於解釋型語言。
- java的編譯器先將其編譯為class檔案,也就是位元組碼;然後將位元組碼交由jvm(java虛擬機器)解釋執行;所以很多地方都說“java是一種半編譯、半解釋執行”的語言。(參考知乎)
相關文章
- 概念區別 【編譯型語言與解釋型語言、動態型別語言與靜態型別語言、強型別語言與弱型別語言】編譯型別
- 編譯型語言與解釋型語言編譯
- 計算機語言:編譯型/解釋型、動態語言/靜態語言、強型別語言/弱型別語言計算機編譯型別
- Python 既是解釋型語言,也是編譯型語言Python編譯
- Python 語言特性:編譯+解釋、動態型別語言、動態語言Python編譯型別
- python---之編譯型語言和解釋型語言的區別Python編譯
- 高階語言——編譯型、解釋型、混合型編譯
- 計算機程式語言的分類,解釋型語言、編譯型語言、指令碼語言的關係計算機編譯指令碼
- 編譯語言、解釋語言與指令碼語言之間的區別編譯指令碼
- 『無為則無心』Python基礎 — 2、編譯型語言和解釋型語言的區別Python編譯
- Python程式設計基礎(一)程式語言是什麼?編譯型語言和解釋型語言的區別|Python是什麼?Python程式設計編譯
- 語言型別介紹及其Python的語言型別型別Python
- Go 語言型別系統詳解Go型別
- python程式碼是解釋型語言,為什麼還有編譯過程?Python編譯
- go語言——資料型別Go資料型別
- C語言資料型別C語言資料型別
- go語言資料型別-基礎型別Go資料型別
- 淺談強型別語言與弱型別語言,歡迎大家來點評型別
- 【譯】Ruby2.6的JIT功能,編譯和解釋型語言的相關說明編譯
- Css預編語言以及區別CSS
- 程式語言語法:`=`表示賦值,`:`表示型別。賦值型別
- GO語言————8.4 map 型別的切片Go型別
- C語言基礎-2、字元型別C語言字元型別
- go語言資料型別轉換Go資料型別
- 補充:C語言列舉型別C語言型別
- C語言 列舉資料型別C語言資料型別
- C語言筆記——自定義型別C語言筆記型別
- 強型別語言變數和資料型別的理解變數資料型別
- 淺談程式語言型別的強型別,弱型別,動態型別,靜態型別型別
- 源語言、目標語言、翻譯器、編譯器、直譯器編譯
- 支援泛型的Go語言1.18釋出泛型Go
- 關於編譯型語言程式碼優化的一點迷思編譯優化
- GO語言————4.5 基本型別和運算子Go型別
- C語言的隱式型別轉換C語言型別
- 6.Go語言基本資料型別Go資料型別
- C語言-變數常量資料型別C語言變數資料型別
- Python語言的全部資料型別分享!Python資料型別
- 程式語言:型別系統的本質型別