最近在刷牛客網,發現了一個問題就是。做一道題,如果要是用c++寫出來的語言,無論是在時間還是空間方面,都比java的效果要好。
用我自己的知識,我也能想到一點,那就是一點皮毛,因為c++是編譯型的語言,而java是解釋型的語言。而什么是編譯型的語言,什么是解釋型的語言呢?
編譯型語言:程序在執行之前需要一個專門的編譯過程,把程序編譯成為機器語言的文件,運行時不需要重新翻譯,直接使用編譯的結果就行了。程序執行效率高,依賴編譯器,跨平台性差。c,c++,Delphi等。
解釋型語言:程序不需要編譯,程序運行時才翻譯成機器語言,每執行一次都要翻譯一次。因此效率比較低。比如Basic語言,專門有一個解釋器能夠直接執行Basic程序,每個語句都是執行的時候才翻譯。效率比較低,依賴解釋器,跨平台性好。運行:先翻譯成中間代碼,然后由解釋器執行。
1.編譯型語言
編譯型語言指的是將所有代碼一次性編譯,然后再執行。
優點:執行速度快;缺點:開發效率低。
2.解釋型語言:
解釋型語言指的是每編譯一句,執行一句。
優點:開發效率高;缺點:執行速度慢。
注:當代碼量非常多,有幾萬行甚至更多的時候,僅僅只是把這些代碼全部編譯,可能就需要耗費數幾個小時的時間。因此,一旦代碼出錯,對於編譯型語言而言,就需要重新開始重頭編譯,極度耗費時間。
開發效率低,但他的執行速度很快。相反解釋型語言,每解釋一句,就執行一句,一旦出錯,可以及時修正,繼續編譯,因此,開發效率高,但速度慢。
編譯型語言和解釋型語言的區別
編譯型與解釋型,兩者各有利弊
前者由於程序執行速度快,同等條件下對系統要求較低,因此像開發操作系統、大型應用程序、數據庫系統等時都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是編譯語言,而一些網頁腳本、服務器腳本及輔助開發接口這樣的對速度要求不高、對不同系統平台間的兼容性有一定要求的程序則通常使用解釋性語言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。
編譯性語言不如解釋性語言跨平台性好
編譯性語言例如c語言:用c語言開發了程序后,需要通過編譯器把程序編譯成機器語言(即計算機識別的二進制文件,因為不同的操作系統計算機識別的二進制文件是不同的),所以c語言程序進行移植后,要重新編譯。(如windows編譯成ext文件,linux編譯成erp文件)。
[2]
解釋性語言,例如java語言,java程序首先通過編譯器編譯成class文件,如果在windows平台上運行,則通過windows平台上的java虛擬機(VM)進行解釋。如果運行在linux平台上,則通過linux平台上的java虛擬機進行解釋執行。所以說能跨平台,前提是平台上必須要有相匹配的java虛擬機。如果沒有java虛擬機,則不能進行跨平台。
