電腦不能直接理解進階語言,只能直接理解機器語言,所以必須要把進階語言翻譯成機器語言,電腦才能執行進階語言編寫的程式.
翻譯的方式有兩種:一個是編譯,一個是解釋。
編譯型語言寫的程式執行之前,需要一個專門的編譯過程,把程式編譯成為機器語言的檔案,以後要啟動並執行話就不用重複翻譯了,直接使用編譯的結果就行了。程式執行效率高,依賴編譯器,跨平台性差些。如C、C++、Delphi等。
解釋型語言在運行程式的時候才翻譯,專門有一個解譯器去進行翻譯,每個語句都是執行的時候才翻譯。效率比較低,依賴解譯器,跨平台性好,如Basic。
指令碼語言介於HTML和C,C++,Java,C#等程式設計語言之間。
HTML通常用于格式化和鏈結文本。而程式設計語言通常用於向機器發出一系列複雜的指令。
指令碼語言與程式設計語言也有很多相似地方,其函數與程式設計語言比較相象一些,其也涉及到變數。與程式設計語言之間最大的區別是程式設計語言的文法和規則更為嚴格和複雜一些.
指令碼與程式碼的關係:指令碼也是一種語言,其同樣由程式碼組成。 註:指令碼語言一般都有相應的指令碼引擎來解釋執行。他們一般需要解譯器才能運行。JAVASCRIPT、ASP、PHP、PERL都是指令碼語言。C/C++編譯、連結後,可形成獨立執行的exe檔案。
指令碼語言是一種解釋性的語言,例如vbscript、javascript、installshield script等等,它不象c\c++等可以編譯成二進位代碼,以可執行檔的形式存在。
指令碼語言不需要編譯,可以直接用,由解譯器來負責解釋。
指令碼語言一般都是以文本形式存在,類似於一種命令。
舉個例子說,如果你建立了一個程式,叫aaa.exe,可以開啟.aa為副檔名的檔案。你為.aa檔案的編寫指定了一套規則(文法),當別人編寫了.aa檔案後,你的程式用這種規則來理解編寫人的意圖,並作出回應.那麼,這一套規則就是指令碼語言。
JAVA語言
java很特殊,java程式也需要編譯,但是沒有直接編譯稱為機器語言,而是編譯稱為位元組碼,然後用解釋方式執行位元組碼。Java既可以被編譯,也可以被解釋。通過編譯器,可以把Java程式翻譯成一種中間代碼 - 稱為位元組碼 - 可以被Java解譯器解釋的獨立於平台的代碼。通過解譯器,每條Java位元組指令被分析,然後在電腦上運行。只需編譯一次,程式運行時解釋執行。下圖說明了它是如何工作的:
可以把Java位元組碼看作運行在Java虛擬機器(Java VM)上的機器代碼指令。每中Java解譯器,不管是Java開發工具還是可以運行Java小應用程式的Web瀏覽器,都是一種Java VM的執行個體。JavaVM也可以由硬體實現。
Java位元組碼使“寫一次,到處運行”成為可能。可以在任何有Java編譯器的平台上把Java程式編譯成位元組碼。這個位元組碼可以運行在任何Java VM上。例如,同一個Java程式可以運行在WindowsNT、Solaris和Macintosh上。
Java平台
平台是程式啟動並執行硬體或軟體環境。Java平台與大多數其它平台不同之處在於它是運行於其它基於硬體平台的純軟體平台。大多數其它平台是硬體和作業系統的結合。
Java平台由兩部分組成:
Java虛擬機器(Java VM)
Java應用程式介面(Java API)
Java VM是Java平台的基礎,可以移植到各種基於硬體的平台上。Java API是軟體組件的集合,它們提供了很多有用的功能,如圖形化使用者介面(GUI)。Java API被分組為相關組件的庫(包)。
下圖描述了一個運行在Java平台上的Java程式,如應用程式(application)或小應用程式(applet)。如圖中顯示的,JavaAPI和VM把Java程式從硬體依賴中分離出來。
作為一種獨立於平台的環境,Java比本地代碼慢一些。然而,聰明的編譯器、很好地調製過的解譯器和即時位元組碼編譯器可以在不犧牲可移植性的條件下使Java的表現接近本地代碼。
指令碼語言:如ASP PhP,JSP等
解釋型語言:如vb,perl,python等
混合型語言:java C#等
編譯型語言: c/C++ delphi等
組合語言: 如8086彙編,win32彙編等