計算機組成原理——解釋程序和編譯程序


一、定義

編譯型程序:把做好的源程序全部編譯成二進制代碼的可運行程序。然后,可直接運行這個程序。 
解釋型程序:把做好的源程序翻譯一句,然后執行一句,直至結束!

二、區別

編譯型程序,執行速度快、效率高;依靠編譯器、跨平台性差些。 
解釋型程序,執行速度慢、效率低;依靠解釋器、跨平台性好。

編譯型的語言包括:C、C++、Delphi、Pascal、Fortran 
解釋型的語言包括:Java、Basic、javascript、Python

三、Java

那java是編譯型的還是解釋型的?

Java這個語言很非凡。 
一、你可以說它是編譯型的。因為所有的Java代碼都是要編譯的,.java不經過編譯就什么用都沒有。 
二、你可以說它是解釋型的。因為java代碼編譯后不能直接運行,它是解釋運行在JVM上的,所以它是解釋運行的,那也就算是解釋的了。 
三、但是,現在的JVM為了效率,都有一些JIT優化。它又會把.class的二進制代碼編譯為本地的代碼直接運行,所以,又是編譯的。
像C、C++ 他們經過一次編譯之后直接可以編譯成操作系統了解的類型,可以直接執行的 所以他們是編譯型的語言。沒有經過第二次的處理 而Java不一樣他首先由編譯器編譯成.class類型的文件,這個是java自己類型的文件 然后在通過虛擬機(JVM)從.class文件中讀一行解釋執行一行,所以他是解釋型的語言,而由於java對於多種不同的操作系統有不同的JVM所以 Java實現了真正意義上的跨平台! 
請觀看下面兩張圖 了解一下Java的虛擬機機制: 
(1)java語言的編譯-->解釋--->執行過程 
(轉)java是編譯型的還是解釋型的 - david_lyf - 紫楓軒 
(2)java的虛擬機 
(轉)java是編譯型的還是解釋型的 - david_lyf - 紫楓軒

從java來看用編譯型、解釋型來分類編程語言已經有點力不從心了。

 


免責聲明!

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



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