編譯型語言、解釋型語言、靜態類型語言、動態類型語言

 小結:java

一、一個是編譯,一個是解釋。兩種方式只是翻譯的時間不一樣:linux

計算機不能直接理解高級語言,只能直接理解機器語言,因此必需要把高級語言翻譯成機器語言,計算機才能執行高級語言編寫的程序。數據庫

二、編譯性語言不如解釋性語言跨平臺性好:編程

用編譯性語言c語言開發了程序後,須要經過編譯器把程序編譯成機器語言(即計算機識別的二進制文件,由於不一樣的操做系統計算機識別的二進制文件是不一樣的),因此c語言程序進行移植後,要從新編譯。windows

三、java跨平臺的實現:瀏覽器

解釋性語言,例如java語言,java程序首先經過編譯器編譯成class文件,若是在windows平臺上運行,則經過windows平臺上的java虛擬機(VM)進行解釋。若是運行在linux平臺上,則經過linux平臺上的java虛擬機進行解釋執行。因此說能跨平臺,前提是平臺上必需要有相匹配的java虛擬機。若是沒有java虛擬機,則不能進行跨平臺。 [2]服務器

 

 

https://baike.baidu.com/item/編譯型語言編程語言

https://baike.baidu.com/item/解釋型語言性能

 

運行編譯型語言是相對於解釋型語言存在的,編譯型語言的首先將源代碼編譯生成機器語言,再由機器運行機器碼二進制)。像C/C++等都是編譯型語言優化

編譯型語言:程序在執行以前須要一個專門的編譯過程,把程序編譯成 爲機器語言的文件,運行時不須要從新翻譯,直接使用編譯的結果就好了。程序執行效率高,依賴編譯器,跨平臺性差些。如C、C++、Delphi等.  [1] 
而相對的,解釋性語言編寫的程序不進行預先編譯,以文本方式存儲程序代碼。在發佈程序時,看起來省了道編譯工序。可是,在運行程序的時候,解釋性語言必須先解釋再運行。  [2] 
 
中文名
編譯型語言
編譯型語言
相對於解釋型語言存在的
做    用
首先將源代碼編譯生成機器語言
例    如
C/C++等

編寫編譯程序

編譯型語言寫的 程序執行以前,須要一個專門的 編譯過程,把 程序編譯成爲 機器語言的文件,好比 exe文件,之後要運行的話就不用從新翻譯了,直接使用 編譯的結果就好了(exe文件),由於翻譯只作了一次,運行時不須要翻譯,因此編譯型語言的程序執行效率高。

編譯型語言和解釋型語言的區別

解釋性語言在運行 程序的時候才翻譯,好比解釋性basic語言,專門有一個 解釋器可以直接執行basic程序,每一個語句都是執行的時候才翻譯。這樣 解釋性語言每執行一次就要翻譯一次,效率比較低。

編譯型與解釋型,二者各有利弊

前者因爲程序執行速度快,同等條件下對系統要求較低,所以像開發操做系統、大型應用程序、數據庫系統等時都採用它,像C/C++、Pascal/Object Pascal(Delphi)等都是編譯語言,而一些網頁腳本、服務器腳本及輔助開發接口這樣的對速度要求不高、對不一樣系統平臺間的兼容性有必定要求的程序則一般使用解釋性語言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。  [3] 

編譯性語言不如解釋性語言跨平臺性好

編譯性語言例如c語言:用c語言開發了程序後,須要經過編譯器把程序編譯成機器語言(即計算機識別的二進制文件,由於不一樣的操做系統計算機識別的二進制文件是不一樣的),因此c語言程序進行移植後,要從新編譯。(如windows編譯成ext文件,linux編譯成erp文件)。  [3] 
解釋性語言,例如java語言,java程序首先經過編譯器編譯成class文件,若是在windows平臺上運行,則經過windows平臺上的java虛擬機(VM)進行解釋。若是運行在linux平臺上,則經過linux平臺上的java虛擬機進行解釋執行。因此說能跨平臺,前提是平臺上必需要有相匹配的java虛擬機。若是沒有java虛擬機,則不能進行跨平臺。  [3] 

解釋型語言

解釋性語言編寫的程序不進行預先編譯,以文本方式存儲程序代碼。在發佈程序時,看起來省了道編譯工序。可是,在運行程序的時候,解釋性語言必須先解釋再運行。好比解釋性 Basic語言,其專用的 解釋器在執行Basic程序時,會逐條讀取解釋每一個語句,這個其實就是一個編譯過程,而後再執行。通常來講,現有的解釋性語言都是採用的逐行解釋一句,執行一句這樣的方式來構建的。這樣解釋性語言每執行一次就要翻譯一次,效率比較低。  [2] 
 
 
相對於編譯型語言存在的,源代碼不是直接翻譯成機器語言,而是先翻譯成中間代碼,再由解釋器對中間代碼進行解釋運行。好比Python/JavaScript / Perl /Shell等都是解釋型語言。
解釋型語言:程序不須要 編譯,程序在運行時才翻譯成 機器語言,每執 行一次都要翻譯一次。所以效率比較低。好比Basic語言,專門有一個解釋器可以直接執行Basic程 序,每一個語句都是執行的時候才翻譯。(在運行程序的時候才翻譯,專門有一個解釋器去進行翻譯,每一個語句都是執行的時候才翻譯。效率比較低,依賴解釋器,跨 平臺性好.)  [1] 
 
中文名
解釋型語言
運    行
先翻譯成中間代碼,由 解釋器運行
相    對
編譯型語言
特    點
源代碼不是直接翻譯成機器語言
例    子
Python,JavaScript,Perl,Shell

兩種方式

計算機不能直接理解高級語言,只能直接理解 機器語言,因此必需要把高級語言翻譯成機器語言,計算機才能執行高級語言編寫的程序。
一個是編譯,一個是解釋。兩種方式只是翻譯的時間不一樣。 編譯型語言寫的程序執行以前,須要一個專門的編譯過程,把 程序編譯成爲機器語言的文件,好比exe文件,之後要運行的話就不用從新翻譯了,直接使用編譯的結果就好了(exe文件),由於翻譯只作了一次,運行時不須要翻譯,因此編譯型語言的程序執行效率高,但也不能一律而論,部分解釋型語言的 解釋器經過在運行時動態優化代碼,甚至可以使解釋型語言的性能超過編譯型語言。
解釋則不一樣, 解釋性語言的程序不須要編譯,省了道工序,解釋性語言在運行程序的時候才翻譯,好比解釋性basic語言,專門有一個解釋器可以直接執行basic程序,每一個語句都是執行的時候才翻譯。這樣解釋性語言每執行一次就要翻譯一次,效率比較低。解釋是一句一句的翻譯。

編譯型與解釋型,二者各有利弊

前者因爲程序執行速度快,同等條件下對系統要求較低,所以像開發操做系統、大型應用程序、 數據庫系統等時都採用它,像C/C++、Pascal/Object Pascal(Delphi)等都是編譯語言,而一些 網頁腳本、服務器腳本及輔助開發接口這樣的對速度要求不高、對不一樣系統平臺間的兼容性有必定要求的程序則一般使用 解釋性語言,如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。
但隨着硬件的升級和 設計思想的變革,編譯型和解釋型語言愈來愈籠統,主要體如今一些新興的高級語言上,而解釋型語言的自身特色也使得 編譯器廠商願意花費更多成原本優化 解釋器,解釋型語言性能超過 編譯型語言也是必然的。

編譯型語言

編譯型語言:程序在執行以前須要一個專門的編譯過程,把程序編譯成 爲機器語言的文件,運行時不須要從新翻譯,直接使用 編譯的結果就好了。程序執行效率高,依賴編譯器,跨平臺性差些。如C、C++、Delphi等.  [1] 

編譯型語言和解釋型語言的區別

解釋性語言在運行程序的時候才翻譯,好比解釋性basic語言,專門有一個 解釋器可以直接執行basic程序,每一個語句都是執行的時候才翻譯。這樣解釋性語言每執行一次就要翻譯一次,效率比較低。  [2] 

編譯型與解釋型,二者各有利弊

前者因爲程序執行速度快,同等條件下對系統要求較低,所以像開發操做系統、大型應用程序、數據庫系統等時都採用它,像C/C++、Pascal/Object Pascal(Delphi)等都是編譯語言,而一些網頁腳本、服務器腳本及輔助開發接口這樣的對速度要求不高、對不一樣系統平臺間的兼容性有必定要求的程序則一般使用解釋性語言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。  [2] 

編譯性語言不如解釋性語言跨平臺性好

編譯性語言例如c語言:用c語言開發了程序後,須要經過編譯器把程序編譯成機器語言(即計算機識別的二進制文件,由於不一樣的操做系統計算機識別的二進制文件是不一樣的),因此c語言程序進行移植後,要從新編譯。(如windows編譯成ext文件,linux編譯成erp文件)。  [2] 
解釋性語言,例如java語言,java程序首先經過編譯器編譯成class文件,若是在windows平臺上運行,則經過windows平臺上的java虛擬機(VM)進行解釋。若是運行在linux平臺上,則經過linux平臺上的java虛擬機進行解釋執行。因此說能跨平臺,前提是平臺上必需要有相匹配的java虛擬機。若是沒有java虛擬機,則不能進行跨平臺。  [2] 
 

 

《代碼的將來》

靜態:不實際運行程序,僅經過程序代碼的字母來肯定結果;

動態:只有運行時才肯定結果;

Java、GO偏靜態;Ruby、JavaScript偏動態。

 誕生於1995年Java,伴隨嵌入在瀏覽器的Applet技術而出現的。

 不管任何程序,或多或少都包含了動態的特性。若是一個程序徹底是靜態的話,那就意味着只須要對代碼進行字面的上的分析,

就能夠獲得全部的結果,這樣一來程序的運行就沒有任何意義了。

做爲一個程序的實現者,編程語言也多多少少都具有動態的性質;所謂動態仍是靜態,指的是這種語言對於動態的功能進行了多少

限制,或者反過來講,對動態功能進行了多少積極的強化。咱們所探討的實際上是語言的這種設計方針。

相關文章
相關標籤/搜索