⑴ 關於「編譯型語言」和「解釋性語言」的區別
1、程序控制權不同:
對於解釋性語言而言,程序運行時的控制權在解釋器(jre,.net)而不再用於程序。編譯型語言對於編譯器而言,運行時的控制權在用戶程序。
2、運行速度不同:
一些網頁腳本,伺服器腳本以及輔助開發介面這樣的對速度要求不高,對不同系統的兼容性有一定要求的程序則通常使用解釋性語言,如java、JavaScript、VBScript、Perl、python、Ruby、Matlab等等。
編譯語言由於程序執行速度快,同等條件下對系統的要求比較低,因此像開發操作系統、大型應用程序、資料庫系統等時都採用它,像C/C++,Pascal/Object Pascal(Delphi)等都是編譯型語言。
3、移植性不同:
解釋型語言,例如Java語言,Java程序首先通過編譯器編譯成class文件,如果在Windows平台上運行,則通過Windows平台上的Java虛擬機(VM)進行解釋。如果運行在Linux平台上,則通過Linux平台上的Java虛擬機進行解釋執行。
所以說能跨平台,前提是平台上必須要有相匹配的Java虛擬機。如果沒有Java虛擬機,則不能進行跨平台。
編譯型語言,例如C語言,用C語言開發程序後,需要通過編譯器把程序編譯成機器語言(即計算機可以識別的二進制文件,因為不同的操作系統識別的二進制文件是不同的),所以C語言程序進行移植後,需要重新編譯(如Windows編譯成ext文件,Linux編譯成erp文件)。
⑵ 編譯程序和解釋程序有何區別
編譯程序能生成目標程序,而解釋程序不能。
⑶ Python 編譯器與解釋器
編譯器是整體編譯再執行,而解釋器是邊解釋便執行。
舉個簡單的例子,編譯器就相當於你買了一桶海底撈,那麼所有海底撈食材都是整體「編譯」好,只要通過倒水(執行)就可以吃,而解釋器相當於你去海底撈門店,然後菜是一道一道上(一條一條解釋這是啥菜),你是一道一道放入湯中吃(執行)。
編譯器 的特點是:
解釋器 的特點是:
python的源文件通過解釋器進行模塊的載入及鏈接,然後將解釋完成的位元組碼存入內存,提供給CPU進行操作,然後寫入本地的.pyc文件,其觸發條件是判斷 是否存在.pyc文件+比較源文件與編譯的.pyc文件的時間戳
⑷ 編譯器和解釋器的主要區別是什麼他們相對於對方各自的優點
解釋器
是
解釋執行
的源代碼,
編譯器
是將源代碼編譯成
目標代碼
他們最大的區別是程序運行時需要解釋器邊解釋邊執行,而編譯器則在運行時是完全不需要的
解釋器的優點是比較容易讓用戶實現自己跨平台的代碼,比如java,php等,同一套代碼可以在
幾乎所有的
操作系統上執行,而無需根據操作系統做修改;
編譯器的目的就是生成目標代碼再由連接器生成可執行的
機器碼
,這樣的話需要根據不同的操作系統編制代碼,雖然有像Qt這樣的源代碼級跨平台的編程工具庫,但在不同的平台上仍然需要重新編譯連接成可執行文件,但其執行效率要遠遠高於解釋運行的程序。
編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機可以直接以機器語言來運行此程序,速度很快;
而解釋器則是只在執行程序時,才一條一條的解釋成機器語言給計算機來執行,所以運行速度是不如編譯後的程序運行的快的.
這是因為計算機不能直接認識並執行我們寫的語句,它只能認識機器語言(是二進制的形式)
⑸ 編譯和解釋的區別是什麼
1.定義區別
①編譯原理旨在介紹編譯程序構造的一般原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。
②匯編語言(assembly language)是一種用於電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。
2.處理方式區別
①編譯過程與解釋挺像,區別就在於編譯是將所有的源代碼指令一次性成翻目標代碼並執行。
②匯編過程就是把匯編指令一對一地翻譯成01機器碼的過程。而採用這種處理方式的語言只有一類:匯編語言。
3.特點區別
①編譯語言的特點就是不需要解釋器的參與,所以運行比較快,但是編譯好的程序只能在當前平台運行,是個局限性。
②匯編語言是當今世界上歷史最早,應用最廣,功能最強大,運行速度最快的編程語言。但是匯編語言開發工期長,可讀性差,並且不能跨平台編程。
⑹ 計算機高級語言裡面的編譯型和解釋型有什麼區別
高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可
將它們分為兩類:
1.解釋類:執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由
相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不
能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可
以動態地調整、修改應用程序,典型的解釋型的高級語言有BASIC。
2.編譯類:編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼
(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。
但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(*.OBJ)才
能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型
的,例如Visual C++、Delphi等。
高級語言里一個程序的編譯和執行大概是 下面的情況:
編譯器將高級語言從源代碼翻譯成與之等價的目標程序(就相當於從中文翻譯成中文),而後就隱退了。在隨後的某個時刻,用戶啟動目標程序由操作系統執行。實現高級語言的另外一種方式為解釋:
與編譯不同的是,解釋器在目標程序(其實根本就沒有目標程序,只是與編譯來對比)執行期間,解釋器一直隨之運行。這種執行過程完全由解釋器控制的。從效果上看,解釋器實現了一台「虛擬計算機」,其「機器語言」就是高級語言,解釋器一次讀入一條或多條語句,按照其自身規定的方式去執行相應的操作。一般說來,解釋比編譯有著很好的靈活性;編譯一般有著較好的性能。但是有些語言確是採用了兩者的混合形式:
書中的原文:」如果初始階段的翻譯器比較簡單,我們就說這個語言是「解釋的」。如果翻譯器很復雜,我們就說這一語言是「編譯的」。現在兩者的區分變得有些模糊了,因為「簡單」和「復雜」都是修飾性術語,也因為完全可能出現用一個編譯器(復雜的翻譯過程)生成代碼,而後又由一個復雜的虛擬機(解釋器)執行。對於最後這種情況,如果翻譯器對程序做了徹底的分析(而不是做某種「機械的」變換),而且有關的中間語言程序與源程序並沒有很強的相似性,我們還是說這個語言是編譯的。這兩種特性----徹底的分析和非平凡的變換-----是刻畫編譯方式的標志性特徵。「
根據以上標准,首先CSC只是對C#到IL做」機械「的翻譯,而且C#和IL之間有很強的相似性,因為兩者的程序代碼幾乎可以100%相互轉換(比如reflector可以將C#反編成IL,也可以將IL反編為C#)。您認為呢?
PS:再者某些人認為的ngen和cache程序集其實也是支持C#是解釋語言的結論,因為編譯型語言因為性能的天然因素是不需要這些手段的
應該是這個吧。。。。。。。
⑺ 即時編譯器和JAVA解釋器的區別
即時編譯器預先把程序編譯完成,當執行時就直接調用。
而JAVA解釋器則是當需要調用該代碼時才臨時編譯解釋,而且沒執行一次就要編譯一次,而即時編譯器則是一次編譯多次執行。
⑻ 解釋和編譯有什麼區別
一、與計算機的交流方式不同
1、解釋程序不產生目標代碼,它逐條地取出源程序中的語句,邊解釋,邊執行;解釋器把源代碼文件邊解釋成機器語言邊交給CPU執行。
三、開發便捷性
1、解釋程序可以隨時修改,立刻生效,改完源代碼後,直接運行看效果
2、編譯程序每次修改源代碼,都要重新編譯,生成機器碼文件
四、運行速度
1、解釋程序運行效率低,所有的代碼均需經過解釋器邊解釋變執行,速度比編譯型慢很多
2、編譯程序執行速度快,因為你的程序代碼已經翻譯成了是計算機可以理解的機器語言。