1. 編譯程序和解釋程序有何區別
編譯程序能生成目標程序,而解釋程序不能。
2. 編譯型語言和解釋型語言的區別
編譯型語言在程序執行之前,有一個單獨的編譯過程,將程序翻譯成機器語言就不用再進行翻譯了。
解釋型語言,是在運行的時候將程序翻譯成機器語言,所以運行速度相對於編C/C++ 等都是編譯型語言,而Java,C#等都是解釋型語言。
雖然Java程序在運行之前也有一個編譯過程,但是並不是將程序編譯成機器語言,而是將它編譯成位元組碼(可以理解為一個中間語言)。
在運行的時候,由JVM將位元組碼再翻譯成機器語言。
註:腳本語言一般都有相應的腳本引擎來解釋執行。 他們一般需要解釋器才能運行。JAVASCRIPT,ASP,PHP,PERL,Nuva都是腳本語言。C/C++編譯、鏈接後,可形成獨立執行的exe文件。
編譯型語言:
編譯型語言最大的優勢之一就是其執行速度。用C/C++編寫的程序運行速度要比用Java編寫的相同程序快30%-70%。
編譯型程序比解釋型程序消耗的內存更少。
不利的一面——編譯器比解釋器要難寫得多。
編譯器在調試程序時提供不了多少幫助——有多少次在你的C語言代碼中遇到一個「空指針異常」時,需要花費好幾個小時來明確錯誤到底在代碼中的什麼位置。
可執行的編譯型代碼要比相同的解釋型代碼大許多。例如,C/C++的.exe文件要比同樣功能的Java的.class文件大很多。
編譯型程序是面向特定平台的因而是平台依賴的。
編譯型程序不支持代碼中實現安全性——例如,一個編譯型的程序可以訪問內存的任何區域,並且可以對你的PC做它想做的任何事情(大部分病毒是使用編譯型語言編寫的)
由於鬆散的安全性和平台依賴性,編譯型語言不太適合開發網際網路或者基於Web的應用。
解釋型語言:
解釋型語言提供了極佳的調試支持。一名Java程序員只需要幾分鍾就可以定位並修復一個「空指針異常」,因為Java運行環境不僅指明了異常的性質,而且給出了異常發生位置具體的行號和函數調用順序(著名的堆棧跟蹤信息)。這樣的便利是編譯型語言所無法提供的。
另一個優勢是解釋器比編譯器容易實現
解釋型語言最大的優勢之一是其平台獨立性
解釋型語言也可以保證高度的安全性——這是互聯網應用迫切需要的
中間語言代碼的大小比編譯型可執行代碼小很多
平台獨立性,以及嚴密的安全性是使解釋型語言成為適合互聯網和Web應用的理想語言的2個最重要的因素。
解釋型語言存在一些嚴重的缺點。解釋型應用佔用更多的內存和CPU資源。這是由於,為了運行解釋型語言編寫的程序,相關的解釋器必須首先運行。解釋器是復雜的,智能的,大量消耗資源的程序並且它們會佔用很多CPU周期和內存。
由於解釋型應用的decode-fetch-execute(解碼-抓取-執行)的周期,它們比編譯型程序慢很多。
解釋器也會做很多代碼優化,運行時安全性檢查;這些額外的步驟佔用了更多的資源並進一步降低了應用的運行速度。
3. 編譯程序和解釋程序有何區別
計算機並不能直接地接受和執行用高級語言編寫的源程序,源程序在輸入計算機時,通過"翻譯程序"翻譯成機器語言形式的目標程序,計算機才能識別和執行。這種"翻譯"通常有兩種方式,即編譯方式和解釋方式。編譯方式是指利用事先編好的一個稱為編譯程序的機器語言程序,作為系統軟體存放在計算機內,當用戶將高級語言編寫的源程序輸入計算機後,編譯程序便把源程序整個地翻譯成用機器語言表示的與之等價的目標程序,然後計算機再執行該目標程序,以完成源程序要處理的運算並取得結果。解釋方式是指源程序進入計算機後,解釋程序邊掃描邊解釋,逐句輸入逐句翻譯,計算機一句句執行,並不產生目標程序。如PASCAL、FORTRAN、COBOL等高級語言執行編譯方式;BASIC語言則以執行解釋方式為主;而PASCAL、C語言是能書寫編譯程序的高級程序設計語言。
編譯程序、解釋程序、匯編程序是3種語言處理程序。其區別主要為:匯編程序(為低級服務)是將匯編語言書寫的源程序翻譯成由機器指令和其他信息組成的目標程序。解釋程序(為高級服務)直接執行源程序或源程序的內部形式,一般是讀一句源程序,翻譯一句,執行一句,不產生目標代碼,如BASIC解釋程序。編譯程序(為高級服務)是將高級語言書寫的源程序翻譯成與之等價的低級語言的目標程序。編譯程序與解釋程序最大的區別之一在於前者生成目標代碼,而後者不生成;此外,前者產生的目標代碼的執行速度比解釋程序的執行速度要快;後者人機交互好,適於初學者使用。用COBOL、FORTRAN等語言編寫的程序考慮到執行速度一般都是編譯執行。
4. 解釋型語言和編譯型語言的區別是什麼
一、編譯型
編譯型語言:編譯型語言在執行之前要先經過編譯過程,編譯成為一個可執行的機器語言的文件,比如exe。因為翻譯只做一遍,以後都不需要翻譯,所以執行效率高。
編譯型語言的典型代表:C語言,C++。
編譯型語言的優缺點:執行效率高,缺點是跨平台能力弱,不便調試。
二、解釋型
解釋型語言:解釋性語言編寫的程序不進行預先編譯,以文本方式存儲程序代碼。執行時才翻譯執行。程序每執行一次就要翻譯一遍。
代表語言:python,JavaScript。
優缺點:跨平台能力強,易於調,執行速度慢。
編譯型與解釋型,兩者各有利弊
前者由於程序執行速度快,同等條件下對系統要求較低,因此像開發操作系統、大型應用程序、資料庫系統等時都採用它,像C/C++、Pascal/Object Pascal(Delphi)等都是編譯語言。
而一些網頁腳本、伺服器腳本及輔助開發介面這樣的對速度要求不高、對不同系統平台間的兼容性有一定要求的程序則通常使用解釋性語言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB等等。
5. 「編譯方式」和「解釋方式」的區別
程序員編寫的程序現在一般都是用高級語言編寫的,如c/c++
以及面向對象的visual
系列;這樣編寫的程序計算機是不能直接執行的,因為計算機只能執行二進製程序。因此要經過一個源程序代碼翻譯成二進制的過程。計算機並不能直接地接受和執行用高級語言編寫的源程序,源程序在輸入計算機時,通過「翻譯程序」翻譯成機器語言形式的目標程序,計算機才能識別和執行。這種「翻譯」通常有兩種方式,即編譯方式和解釋方式。
兩者的區別如下:
解釋方式:程序運行時,取一條指令,將其轉化為機器指令,再執行這條機器指令。這種方式每次運行程序時都要重新翻譯整個程序,效率較低,執行速度慢,如QB,不過現在很少再用這種低效的方式的設計語言了。
編譯方式:程序運行時之前,將程序的所有代碼編譯為機器代碼,再運行這個程序。然後每次執行的時候就可以直接執行這個翻譯好的二進制文件了,這樣的程序只需要翻譯一次,效率明顯要高很多,現在的大多數語言都是這種方式,網頁中的asp.net
採用的也是這種方式。
簡單的說,編譯就是全文翻譯,全部翻譯完才執行。解釋就相當於同聲翻譯,邊翻譯邊執行。
6. 編譯和解釋的區別是什麼
編譯和解釋的區別是與計算機的交流方式不同、運行環境不同、運行速度不同。
一、與計算機的交流方式不同
編譯是將源程序翻譯成可執行的目標代碼,執行可執行程序文件,翻譯與執行是分開的。
解釋程序不產生目標代碼,它逐條地取出源程序中的語句,邊解釋邊執行,解釋器把源代碼文件邊解釋成機器語言邊交給CPU執行。
二、運行環境不同
編譯程序跨平台性不好,不同操作系統,調用底層的機器指令不同,需為不同平台生成不同的機器碼文件,編譯程序每次修改源代碼,都要重新編譯,生成機器碼文件。
解釋程序可跨平台使用,因為解釋器已經做好了對不同平台的交互處理,用戶寫的源代碼不需要再考慮差異性,源代碼所有平台都可以直接執行,解釋程序可以隨時修改,立刻生效,改完源代碼後,直接運行看效果。
三、運行速度不同
編譯程序執行速度快,因為你的程序代碼已經翻譯成了是計算機可以理解的機器語言。
解釋程序運行效率低,所有的代碼均需經過解釋器邊解釋變執行,速度比編譯型慢很多。
7. 編譯和解釋的區別是什麼
1.定義區別
①編譯原理旨在介紹編譯程序構造的一般原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。
②匯編語言(assembly language)是一種用於電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。
2.處理方式區別
①編譯過程與解釋挺像,區別就在於編譯是將所有的源代碼指令一次性成翻目標代碼並執行。
②匯編過程就是把匯編指令一對一地翻譯成01機器碼的過程。而採用這種處理方式的語言只有一類:匯編語言。
3.特點區別
①編譯語言的特點就是不需要解釋器的參與,所以運行比較快,但是編譯好的程序只能在當前平台運行,是個局限性。
②匯編語言是當今世界上歷史最早,應用最廣,功能最強大,運行速度最快的編程語言。但是匯編語言開發工期長,可讀性差,並且不能跨平台編程。
8. 解釋和編譯的區別
解釋和編譯的區別如下:
1、讀音不同
解釋:讀音是jiě shì。
編譯:讀音是biān yì。
2、意思不同
解釋:意思是指在觀察的基礎上進行思考,合理地說明事物變化的原因,事物之間的聯系,或者是事物發展的規律。
編譯:編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。
編譯的詞法分析
詞法分析的任務是對由字元組成的單詞進行處理,從左至右逐個字元地對源程序進行掃描,產生一個個的單詞符號,把作為字元串的源程序改造成為單詞符號串的中間程序。執行詞法分析的程序稱為詞法分析程序或掃描器。
源程序中的單詞符號經掃描器分析,一般產生二元式:單詞種別;單詞自身的值。單詞種別通常用整數編碼,如果一個種別只含一個單詞符號,那麼對這個單詞符號,種別編碼就完全代表它自身的值了。若一個種別含有許多個單詞符號,那麼,對於它的每個單詞符號,除了給出種別編碼以外,還應給出自身的值。
詞法分析器一般來說有兩種方法構造:手工構造和自動生成。手工構造可使用狀態圖進行工作,自動生成使用確定的有限自動機來實現。