編譯型語言與解釋型語言的區別是什麼

編譯型語言

編譯是指在應用源程序執行之前,就將程序源代碼“翻譯”成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便,效率較高。但應用程序一旦修改,必須先修改源代碼,再重新編譯生成新的目標文件(*.obj)才能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型的。編譯程序將源程序翻譯成目標程序後保存在另一個文件中,該目標程序可脫離編譯程序直接在計算機上多次運行。大多數軟件產品都是以目標程序形式發行給用戶的,不僅便於直接運行,同時又使他人難於盜用其中的技術。C、C++、Ada、Pascal都是編譯實現的

解釋型語言

解釋型語言的實現中,翻譯器並不產生目標機器代碼,而是產生易於執行的中間代碼。這種中間代碼與機器代碼是不同的,中間代碼的解釋是由軟件支持的,不能直接使用硬件,軟件解釋器通常會導致執行效率較低。用解釋型語言編寫的程序是由另一個可以理解中間代碼的解釋程序執行的,與編譯程序不同的是,解釋程序的任務是逐一將源程序的語句解釋成可執行的機器指令,不需要將源程序翻譯成目標代碼再執行。解釋程序的優點是當語句出現語法錯誤時,可以立即引起程序員的注意,而程序員在程序開發期間就能進行校正。對於解釋型Basic語言,需要一個專門的解釋器解釋執行Basic程序,每條語句只有在執行時才被翻譯,這種解釋型語言每執行一次就翻譯一次,因而效率低下。一般地,動態語言都是解釋型的,例如:Tcl、Perl、Ruby、VBScript、JavaScript等

需要注意的是

Java是一類特殊的編程語言,Java程序也需要編譯,但是卻沒有直接編譯爲機器語言,而是編譯爲字節碼,然後在Java虛擬機上以解釋方式執行字節碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章