编译型语言和解释型语言的区别
?
計算機(jī)是不能理解高級語言的,更不能直接執(zhí)行高級語言,它只能直接理解機(jī)器語言,所以使用任何高級語言編寫的程序若想被計算機(jī)運行,都必須將其轉(zhuǎn)換成計算機(jī)語言,也就是機(jī)器碼。而這種轉(zhuǎn)換的方式有兩種:
1.編譯
2.解釋
由此高級語言也分為編譯型語言和解釋型語言。
主要區(qū)別在于,前者源程序編譯后即可在該平臺運行,后者是在運行期間才編譯。所以前者運行速度快,后者跨平臺性好。
編譯型語言 : 程序執(zhí)行前將代碼全部編譯一遍(如c,c++) 編譯完成后 程序再執(zhí)行
優(yōu)點:編譯型語言在運行前翻譯,效率高
缺點:但是因為編譯前無法得知運行環(huán)境的情況,故不能跨平臺執(zhí)行
解釋型語言 : 程序邊執(zhí)行邊解釋代碼(一行一行的解釋,故解釋型語言運行效率較低)(如javascript,python) 不是一下就全部解釋完的
,但當(dāng)你又想知道上句內(nèi)容還得重新翻譯(把上一句重新翻譯一遍)
優(yōu)點:不用在運行前將整個翻譯一遍,節(jié)省時間
缺點:一行一行的解釋,故解釋型語言運行效率較低
編譯和解釋 都可以理解成翻譯
外國人看不懂中文書 把整個書翻譯成英文了 再看 就看得懂了
外國人看不懂中文書 要看書的那個部分 就翻譯那個部分 不用一次把整個書都翻譯完
編譯型的 如果代碼有變更 那項目要重新再編譯一遍了 而解釋型的就不用這樣了 因為它是邊執(zhí)行邊解釋的
關(guān)于java
Java和其他的語言不太一樣。因為java針對不同的平臺有不同的JVM,實現(xiàn)了跨平臺。所以Java語言有一次編譯到處運行的說法。
1.**你可以說它是編譯型的:**因為所有的Java代碼都是要編譯的,.java不經(jīng)過編譯就什么用都沒有。
2.**你可以說它是解釋型的:**因為java代碼編譯后不能直接運行,它是解釋運行在JVM上的,所以它是解釋運行的,那也就算是解釋的了。
3.但是,現(xiàn)在的JVM為了效率,都有一些JIT優(yōu)化。它又會把.class的二進(jìn)制代碼編譯為本地的代碼直接運行,所以,又是編譯的。
java語言 既是編譯型的也是解釋型的 先從java文件 編碼成 class字節(jié)碼文件 然后經(jīng)由類加載器加載到內(nèi)存 由字節(jié)碼校驗器校驗代碼語法 如果沒有問題
再經(jīng)過解釋器把代碼解釋成機(jī)器語言給操作系統(tǒng)能識別的機(jī)器語言
將java認(rèn)為成解釋型語言也是可以的
因為雖然java也需要編譯,編譯成.class文件,但是并不是機(jī)器可以識別的語言,而是字節(jié)碼,最終還是需要 jvm的解釋,才能在各個平臺執(zhí)行,這同時也是java跨平臺的原因。所以可是說java即是編譯型的,也是解釋型,但是假如非要歸類的話,從概念上的定義,恐怕java應(yīng)該歸到解釋型的語言中。
編譯型的語言包括:C、C++、Delphi、Pascal、Fortran
解釋型的語言包括:Java、Basic、javascript、python
編譯型與解釋型,兩者各有利弊
前者由于程序執(zhí)行速度快,同等條件下對系統(tǒng)要求較低,因此像開發(fā)操作系統(tǒng)、大型應(yīng)用程序、數(shù)據(jù)庫系統(tǒng)等時都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是編譯語言,而一些網(wǎng)頁腳本、服務(wù)器腳本及輔助開發(fā)接口這樣的對速度要求不高、對不同系統(tǒng)平臺間的兼容性有一定要求的程序則通常使用解釋性語言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。
總結(jié)
以上是生活随笔為你收集整理的编译型语言和解释型语言的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql截取时分:15小时26分钟
- 下一篇: 电子科大计算机学院张小松院长,祝贺!电子