編譯型語言在程序執(zhí)行之前,有一個單獨的編譯過程,將程序翻譯成機器語言,以后執(zhí)行這個程序的時候,就不用再進行翻譯了。(就像咱們的oc,上線的時候打包的時候就是編譯成了計算機能認識的,到了手機上直接運行很快,你在開發(fā)的時候每次都是先編譯一下 你會發(fā)現(xiàn)很慢)
解釋型語言,是在運行的時候?qū)⒊绦蚍g成機器語言,所以運行速度相對于編譯型語言要慢。
C/C++ 等都是編譯型語言,而Java,C#等都是解釋型語言。
雖然Java程序在運行之前也有一個編譯過程,但是并不是將程序編譯成機器語言,而是將它編譯成字節(jié)碼(可以理解為一個中間語言)。
在運行的時候,由JVM將字節(jié)碼再翻譯成機器語言。
注:腳本語言一般都有相應(yīng)的腳本引擎來解釋執(zhí)行。 他們一般需要解釋器才能運行。pyhton,JAVASCRIPT,ASP,PHP,PERL,Nuva都是腳本語言。C/C++編譯、鏈接后,可形成獨立執(zhí)行的exe文件。
4.腳本語言是一種解釋性的語言,例如vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等可以編譯成二進制代碼,以可執(zhí)行文件的形式存在.
腳本語言不需要編譯,可以直接用,由解釋器來負責(zé)解釋。
一,編譯型語言:
編譯生成的可執(zhí)行程序可以以脫離開發(fā)環(huán)境,在特定的平臺上獨立運行。
因為編譯型語言是一次性的編譯成機器碼,所以可以脫離開發(fā)環(huán)境獨立運行,而且通常運行效率較高;但因為編譯性語言的程序被編譯成特定平臺上的機器碼,因此編譯生成的可執(zhí)行程序通常無法移植到其他平臺上運行;如果需要移植,則必須將源代碼復(fù)制到特定的平臺上,針對特定的平臺進行修改,至少也需要采用特定平臺上的編譯器重新編譯。
比如我們現(xiàn)在的C、C++、Objective-C、Pasca等高級語言都屬于編譯型語言。
二,解釋型語言
解釋型語言是指使用專門的解釋器對源程序進行逐行解釋成特定平臺的機器碼并立即執(zhí)行的語言。解釋型語言通常不會進行整體的編譯和鏈接處理,解釋型語言相當于把編譯型語言中的編譯和解釋過程混合在一起同時完成。
可以這樣認為:每次執(zhí)行解釋型語言的程序都需要進行一次編譯,因此解釋型語言的程序運行效率通常較低,而且它不能脫離解釋器獨立運行。
但解釋性語言有一個優(yōu)勢:跨平臺比較容易,只需提供特定平臺的解釋器即可,每個特定平臺上的解釋器負責(zé)將源程序解釋成特定平臺的機器指令即可。解釋性語言可以方便的實現(xiàn)源程序的移植,但這是以犧牲程序執(zhí)行效率為代價的。
三:java說的是解釋型語言,但是就如上面所講,java既有編譯的成分也有解釋的成分,java的跨平臺靠的是他的jvm即java虛擬機