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


 

 

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

       計算機是不能理解高級語言的,更不能直接執行高級語言,它只能直接理解機器語言,所以使用任何高級語言編寫的程序若想被計算機運行,都必須將其轉換成計算機語言,也就是機器碼。

 
 

     

 計算機是不能理解高級語言的,更不能直接執行高級語言,它只能直接理解機器語言,所以使用任何高級語言編寫的程序若想被計算機運行,都必須將其轉換成計算機語言,也就是機器碼。而這種轉換的方式有兩種:

 

1.編譯

2.解釋

 

由此高級語言也分為編譯型語言和解釋型語言。

 

主要區別在於,前者源程序編譯后即可在該平台運行,后者是在運行期間才編譯。所以前者運行速度快,后者跨平台性好。


 

編譯型語言

       使用專門的編譯器,針對特定的平台,將高級語言源代碼一次性的編譯成可被該平台硬件執行的機器碼,並包裝成該平台所能識別的可執行性程序的格式。

特點

       在編譯型語言寫的程序執行之前,需要一個專門的編譯過程,把源代碼編譯成機器語言的文件,如exe格式的文件,以后要再運行時,直接使用編譯結果即可,如直接運行exe文件。因為只需編譯一次,以后運行時不需要編譯,所以編譯型語言執行效率高。

總結

1.一次性的編譯成平台相關的機器語言文件,運行時脫離開發環境,運行效率高;

2.與特定平台相關,一般無法移植到其他平台;

3.現有的C、C++、Objective等都屬於編譯型語言。

 

 
 

解釋型語言

使用專門的解釋器對源程序逐行解釋成特定平台的機器碼並立即執行。是代碼在執行時才被解釋器一行行動態翻譯和執行,而不是在執行之前就完成翻譯。

特點

解釋型語言不需要事先編譯,其直接將源代碼解釋成機器碼並立即執行,所以只要某一平台提供了相應的解釋器即可運行該程序。

總結

1.解釋型語言每次運行都需要將源代碼解釋稱機器碼並執行,效率較低;

2.只要平台提供相應的解釋器,就可以運行源代碼,所以可以方便源程序移植;

3.Python等屬於解釋型語言。


 

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

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

關於java

Java和其他的語言不太一樣。因為java針對不同的平台有不同的JVM,實現了跨平台。所以Java語言有一次編譯到處運行的說法。

1.你可以說它是編譯型的:因為所有的Java代碼都是要編譯的,.java不經過編譯就什么用都沒有。 

2.你可以說它是解釋型的:因為java代碼編譯后不能直接運行,它是解釋運行在JVM上的,所以它是解釋運行的,那也就算是解釋的了。 

3.但是,現在的JVM為了效率,都有一些JIT優化。它又會把.class的二進制代碼編譯為本地的代碼直接運行,所以,又是編譯的。

 

 
 

 

 
 

個人認為,java是解釋型的語言,因為雖然java也需要編譯,編譯成.class文件,但是並不是機器可以識別的語言,而是字節碼,最終還是需要 jvm的解釋,才能在各個平台執行,這同時也是java跨平台的原因。所以可是說java即是編譯型的,也是解釋型,但是假如非要歸類的話,從概念上的定義,恐怕java應該歸到解釋型的語言中。 

編譯型的語言包括:C、C++、Delphi、Pascal、Fortran 

解釋型的語言包括:Java、Basic、javascript、python




參考:https://www.jianshu.com/p/54e2aeca013b


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM