解釋和編譯系統
『壹』 編譯和解釋的區別是什麼
1.定義區別
①編譯原理旨在介紹編譯程序構造的一般原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。
②匯編語言(assembly language)是一種用於電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。
2.處理方式區別
①編譯過程與解釋挺像,區別就在於編譯是將所有的源代碼指令一次性成翻目標代碼並執行。
②匯編過程就是把匯編指令一對一地翻譯成01機器碼的過程。而採用這種處理方式的語言只有一類:匯編語言。
3.特點區別
①編譯語言的特點就是不需要解釋器的參與,所以運行比較快,但是編譯好的程序只能在當前平台運行,是個局限性。
②匯編語言是當今世界上歷史最早,應用最廣,功能最強大,運行速度最快的編程語言。但是匯編語言開發工期長,可讀性差,並且不能跨平台編程。
『貳』 程序的編譯與解釋有什麼區別
一 解釋和編譯的區別 解釋是讀一段代碼,解釋執行一段代碼。如果已經完成一段代碼的語法分析和語義分析並且生成了執行過程,但是不立即執行這個過程,而是把它們全部收集起來,連成一個大的執行過程,這就是編譯這也意味著01 相同一段代碼,每次解釋執行都要重復進行語法分析和語義分析,編譯執行省略了這個過程 02 解釋是交錯執行,完全按照程序「原始」的控制流走,編譯則有機會對整個程序進行流分析和優化 03 編譯後的代碼是「固定」的,解釋執行則可以在代碼運行時直接修改代碼和數據 二 解釋型語言和編譯型語言的區別 動態特性越多的語言,需要解釋的地方就越多,反之則越少。 特別要說一下,C語言和匯編是完全沒有動態特性的語言,所以幾乎所有語言的運行時系統,都是用C來寫的不過這一點上,解釋和編譯並沒有非常清晰的區別,動態特性也可以交給即時編譯器來處理
『叄』 編譯和解釋的區別是什麼
編譯和解釋的區別是與計算機的交流方式不同、運行環境不同、運行速度不同。
一、與計算機的交流方式不同
編譯是將源程序翻譯成可執行的目標代碼,執行可執行程序文件,翻譯與執行是分開的。
解釋程序不產生目標代碼,它逐條地取出源程序中的語句,邊解釋邊執行,解釋器把源代碼文件邊解釋成機器語言邊交給CPU執行。
二、運行環境不同
編譯程序跨平台性不好,不同操作系統,調用底層的機器指令不同,需為不同平台生成不同的機器碼文件,編譯程序每次修改源代碼,都要重新編譯,生成機器碼文件。
解釋程序可跨平台使用,因為解釋器已經做好了對不同平台的交互處理,用戶寫的源代碼不需要再考慮差異性,源代碼所有平台都可以直接執行,解釋程序可以隨時修改,立刻生效,改完源代碼後,直接運行看效果。
三、運行速度不同
編譯程序執行速度快,因為你的程序代碼已經翻譯成了是計算機可以理解的機器語言。
解釋程序運行效率低,所有的代碼均需經過解釋器邊解釋變執行,速度比編譯型慢很多。
『肆』 編譯系統和解釋系統的區別
解釋程序(為高級服務)直接執行源程序或源程序的內部形式,一般是讀一句源程序,翻譯一句,執行一句,不產生目標代碼,如BASIC解釋程序。
編譯程序(為高級服務)是將高級語言書寫的源程序翻譯成與之等價的低級語言的目標程序。
編譯程序與解釋程序最大的區別之一在於前者生成目標代碼,而後者不生成;此外,前者產生的目標代碼的執行速度比解釋程序的執行速度要快;後者人機交互好,適於初學者使用。用COBOL、FORTRAN等語言編寫的程序考慮到執行速度一般都是編譯執行。 解釋:程序運行時,取一條指令,將其換化為機器指令, 再執行這條機器指令。 編譯:程序運行時之前,將程序的把有代碼編譯為機器代碼,再運行這個程序。
『伍』 語言處理系統和編譯系統這兩個概念區別在哪裡。應該如何解釋這倆概念
首先,我們假定討論的問題僅針對計算機系統中的程序設計語言,不包括自然語言等其它非計算機系統中的概念。
編譯系統,指的是將一種語言的程序翻譯成另一種語言的程序的軟體系統。一般多是將高級語言翻譯成低級語言。它的翻譯對象的單位是程序。
語言處理系統的內涵較廣,既包括語言之間的翻譯,也包括那些非翻譯的、對文件中的詞語句子進行掃描分析處理的工作。即便是語言之間的翻譯,編譯也只是其中的一種。除了編譯以外,語言的翻譯還可以用解釋和匯編等系統來處理。解釋方式翻譯時的單位是語句而不是程序,匯編則針對符號化的機器語言程序--匯編語言程序。
『陸』 編譯程序和解釋程序有何區別
編譯程序能生成目標程序,而解釋程序不能。
『柒』 解釋和編譯有什麼區別
分類: 電腦/網路 >> 程序設計 >> 其他編程語言
問題描述:
編譯能產生exe文件,解釋也能嗎。
如果都能,那他們的exe文件有什麼區別
解析:
解釋(intepreter)和編譯(pile)的區別:
1. 解釋 -- 運行時必需用解釋器把程序一行一行執行, 運行比較慢, 因為是運行時才把程序解析並執行. 優點是移植性, 不同的機器只要有解釋器就可以運行相同的程序.
2. 編譯 -- 先把程序轉成 CPU 跟操作系統認識的機械碼, 執行程序就是直接執行機械碼, 所以速度比較快, 但因為是機械碼 (加上一些操作系統的 loader 所要的信息), 不同的 CPU 與操作系統並不能運行編譯後的程序
另外還有一種是半編譯的, 先把程序編譯成一種中間碼, 再在不同的機器運行解釋器解釋這種中間碼.
網頁上的 java 可以是解釋的或是中間碼的形式
解釋是讀一行解釋一行,然後再執行,執行完後,再讀下一行,然後再解釋一下再執行。
下次再執行時還要解釋。
編譯的話就是只要編譯一次,下次再執行是就不用再解釋了,相對來說速度較快。
『捌』 編譯系統和解釋系統有什麼區別
計算機並不能直接地接受和執行用高級語言編寫的源程序,源程序在輸入計算機時,通過"翻譯程序"翻譯成機器語言形式的目標程序,計算機才能識別和執行。這種"翻譯"通常有兩種方式,即編譯方式和解釋方式。編譯方式是指利用事先編好的一個稱為編譯程序的機器語言程序,作為系統軟體存放在計算機內,當用戶將高級語言編寫的源程序輸入計算機後,編譯程序便把源程序整個地翻譯成用機器語言表示的與之等價的目標程序,然後計算機再執行該目標程序,以完成源程序要處理的運算並取得結果。解釋方式是指源程序進入計算機後,解釋程序邊掃描邊解釋,逐句輸入逐句翻譯,計算機一句句執行,並不產生目標程序。如PASCAL、FORTRAN、COBOL等高級語言執行編譯方式;BASIC語言則以執行解釋方式為主;而PASCAL、C語言是能書寫編譯程序的高級程序設計語言。
編譯程序、解釋程序、匯編程序是3種語言處理程序。其區別主要為:匯編程序(為低級服務)是將匯編語言書寫的源程序翻譯成由機器指令和其他信息組成的目標程序。解釋程序(為高級服務)直接執行源程序或源程序的內部形式,一般是讀一句源程序,翻譯一句,執行一句,不產生目標代碼,如BASIC解釋程序。編譯程序(為高級服務)是將高級語言書寫的源程序翻譯成與之等價的低級語言的目標程序。編譯程序與解釋程序最大的區別之一在於前者生成目標代碼,而後者不生成;此外,前者產生的目標代碼的執行速度比解釋程序的執行速度要快;後者人機交互好,適於初學者使用。用COBOL、FORTRAN等語言編寫的程序考慮到執行速度一般都是編譯執行。
解釋:程序運行時,取一條指令,將其換化為機器指令, 再執行這條機器指令。
編譯:程序運行時之前,將程序的把有代碼編譯為機器代碼,再運行這個程序。
計算機並不能直接地接受和執行用高級語言編寫的源程序,源程序在輸入計算機時,通過"翻譯程序"翻譯成機器語言形式的目標程序,計算機才能識別和執行。這種"翻譯"通常有兩種方式,即編譯方式和解釋方式。
編譯方式是指利用事先編好的一個稱為編譯程序的機器語言程序,作為系統軟體存放在計算機內,當用戶將高級語言編寫的源程序輸入計算機後,編譯程序便把源程序整個地翻譯成用機器語言表示的與之等價的目標程序,然後計算機再執行該目標程序,以完成源程序要處理的運算並取得結果。
解釋方式是指源程序進入計算機後,解釋程序邊掃描邊解釋,逐句輸入逐句翻譯,計算機一句句執行,並不產生目標程序。如PASCAL、FORTRAN、COBOL等高級語言執行編譯方式;BASIC語言則以執行解釋方式為主;而PASCAL、C語言是能書寫編譯程序的高級程序設計語言。
簡單的說,編譯就是全文翻譯,全部翻譯完才執行。解釋就相當於同聲翻譯,邊翻譯邊執行。
解釋語言, 比如以前的Basic, 源程序是文本的, 運行時有一個解釋程序, 它把源程序讀入, 一條一條地現翻譯現執行. 這當然慢了, 因為它要現場解釋嘛. 現在網頁中的VBScript, JavaScript等也是如此.
編譯語言, 比如C或C++, 你編一段程序, 由Turbo C, VC, 或其它什麼編譯器編譯, 變成了一個可執行的程序文件 (在DOS或Windows下, 擴展名為 .EXE的), 以後運行這個編譯好的文件就成了. 因為已經翻譯好了, 所以運行時就沒有現場解釋這一步, 當然快得多了. DOS或Windows下的 EXE 文件, 都是編譯或匯編出來的.
『玖』 編譯系統和解釋系統的區別
首先...直接編譯成可執行文件的方式 在執行速度上要快於解釋執行的方式
但是 JAVA是誇平台的.......
也就是說 ..雖然它是解釋執行的,,在速度上稍微亞於其他語言..(在硬體更新如此之快的今天,這算不上什麼劣勢)
但由於它的誇平台性...這個巨大的優勢 決定了JAVA 會成為熱門.....
JAVA語言程序 也可以根據需要有特定工具 再次編譯 生成在特定系統中能執行的執行程序..比如說windows下的exe 但是這樣就失去了誇平台性..
所以JAVA程序的交互 採用JAVA獨特的程序包 .jar方式進行交互是非常好的選擇
,也並不是非常復雜...
JAVA實際上是既有編譯又有解釋的....先編譯成CLASS文件..這是在誇平台前提下的最大程度的編譯....然後再進行解釋執行,可以讓解釋的過程和復雜度降到最低 .如果完全採用解釋執行...是很不可取的 增加了用戶機的負擔
『拾』 急!!!!!!!!解釋程序與編譯程序有什麼區別,各舉例!!!!!!
編譯程序和解釋程序2006年10月16日
星期一
14:26如果一個程序能夠把某一種語言程序(稱為源語言程序)改造成為另一種語言程序(稱為目標語言程序),則這親戚的程序稱為「翻譯程序」。如果源語言是「高級語言」(諸如FORTRAN、PASCAL等等),而目標語言是「低級語言」(如匯編語言或機器語言),則這樣的翻譯程序稱為「編譯程序」。
現在的計算機尚不能直接執行高級語言程序。執行一個高級語言程序大體上要分兩步:第一步,把高級語言的源程序編譯成低級語言的目標程序;第二步,運行這個目標程序。編譯程序的典型工作過程是:輸入源程序,對它進行加工處理,輸出目標程序。加工處理是非常復雜的過程,它又可劃分成以下幾個階段:源程序→詞法分析→語法分析→產生中間代碼→優化→目標代碼生成→目標程序。
第一階段是詞法分析。承擔詞法分析任務的程序稱為「掃描器」。詞法分析的任務是:對構成源程序的字元串進行掃描和分解。第二階段是語法分析。承擔語法分析任務的程序稱為「分析器」。語法分析的任務是:根據語法規則,把描掃器所提供的結果分析成各類語法范疇。第三階段是產生中間代碼。承擔產生中間代碼任務的程序稱為「中間代碼產生器」。其任務是:按照語法分析器所識別出的語法范疇,產生相應的中間指令。第四階段是優化,即代碼優化。優化的任務是對前階段產生的中間代碼進行加工變換,以便使生成的目標程序,能運行得更快更省(省內存)。第五階段是目標代碼生成。這一階段的任務是:按照優化後的中間代碼和其它有關信息生成目標程序。這種目標程序可以在計算機上直接執行。執行這個目標程序,就可得到一個高級語言程序的結果。
我們知道,所謂翻譯程序是這樣一種程序,它能夠把用甲語言寫的程序翻譯成與之等價的用乙語言寫的程序。這里的甲語言是該翻譯程序的源語言,而乙語言則為該翻譯程序的目標語言。對於編譯程序而言,源程序是被加工的對象,而目標程序是加工後的結果。
在計算機上執行用某種高級語言寫的源程序,通常有兩種方式:一是編譯執行方式,二是解釋執行方式。
採用編譯執行方式執行源程序時要分兩大步:編譯和運行。編譯中的加工處理過程又可分為五個階段。
解釋執行方式與編譯執行方式是不同的,其根本區別在於:編譯方式把源程序的執行過程嚴格地分成兩大步:編譯和運行。即先把源程序全部翻譯成目標代碼,然後再運行此目標代碼,獲執行結果。解釋方式則不然。它是按照源程序中語句的動態順序,直接地逐句進行分析解釋,並立即執行。所以,解釋程序是這樣一種程序,它能夠按照源程序中語句的動態順序,逐句地分析解釋並執行,直至源程序結束。
與編譯程序一樣,解釋程序也與源語言及計算機有關。同一台計算機上不同語言的解釋程序是不同的;同一種語言在不同的計算機上的解釋程序也可能不同。同一種高級語言的源程序,它可以採用解釋執行方式,也可以採用編譯執行方式。例如,BASIC語言有解釋BASIC和編譯BASIC之分。前者執行速度慢;後者執行速度快。編譯程序和解釋程序都屬於系統程序。