在軟考的過程中,有很多重要的知識點,也有很多相似的東西。在做真題的過程中,每套都有關於「
編譯」和「
解釋」的題型,總是傻傻分不清楚。今天我們就來聊一聊「編譯與
解釋」~
在計算機中,使用
高階語言開發的程式
是不能被直接執行的,必須經過一系列的處理之後
才能執行
。根據這種處理方式的不同,可以分為解釋和編譯兩種型別。
編譯型:將用某種程式語言編寫的源程式直接翻譯成另外一種語言(目標語言程式),而且兩者在邏輯上等價。如c語言。
解釋型:接受所輸入的用程式語言編譯的源程式,然後直接解釋執行
。該類語言中的最典型代表是basic。
編譯型:編譯程式的過程可以分為以下幾個部分:詞法分析,語法分析,語義分析,中間**生成,**優化,目標**生成以及貫穿始終的**管理與出錯處理。其中,中間**生成、**優化並不是每個編譯器所必須的。詳細過程可以參考 高階語言程式的兩種處理方式——編譯和解釋。
編譯程式的工作過程:
解釋型:解釋程式通常分成兩部分:分析部分(包括:詞法分析,語法分析和語義分析)和解釋部分(對第一部分產生的中間**進行解釋執行)。
解釋程式實現高階語言的3種方式:
1、是否生成目標**。這是「編譯」與「解釋」的根本區別。
編譯是將源程式翻譯成可執行的目標**,翻譯與執行是分開的;而解釋是對源程式的翻譯與執行一次性完成,不生成可儲存的目標**。
(編譯程式是整體編譯完了,再一次性執行; 而解釋程式是一邊解釋,一邊執行。
)這只是表象,二者背後的最大區別是:對解釋執行而言,程式執行時的控制權在直譯器而不在使用者程式;對編譯執行而言,執行時的控制權在使用者程式。
2、語言處理的過程不同。編譯過程包括詞法分析、語法分析、語義分析、中間**生成、**優化和目標**生成等階段,以及貫穿始終的**管理與出錯處理。解釋過程在詞法、語法和語義分析方面與編譯程式的工作原理基本相同,但是在執行使用者程式時,它直接執行源程式或源程式的中間表示形式。
3、是否參與使用者程式的執行。編譯程式不參與使用者程式的執行控制,解釋程式則參與。
4、效率不同。編譯比解釋方式效率更高。編譯程式,源程式只需要被編譯程式翻譯一次就可以多次執行。解釋程式可能需要反覆掃瞄源程式,從而降低了程式的執行速度。
5、靈活性不同。由於解釋程式需要反覆檢查程式,這也就使得解釋方式能夠比編譯方式更靈活。當直譯器直接執行源程式時,「在執行中」修改程式就成為可能。另外,當直譯器直接在源程式上工作時,它可以對錯誤進行更準確的定位。
6、可移植性不同。直譯器一般也是用某種程式語言編寫的,因此只要對直譯器進行重新編譯,就可以使直譯器執行在不同的環境中。
說了這麼多,是不是對編譯和解釋有了更深的了解了呢?考試也不怕不怕啦,哈哈哈~
軟考總結之編譯與解釋 衝突 關係模式轉換
街上 13年上第18題 以下關於解釋程式和編譯程式的敘述中,正確的是 20 20.a.編譯程式和解釋程式都生成源程式的目標程式 b.編譯程式和解釋程式都不生成源程式的目標程式 c.編譯程式生成源程式的目標程式,而解釋程式則不然 d.編譯程式不生成源程式的目標程式,而解釋程式反之 解析 p65 把書寫...
軟考路上 編譯原理
編譯原理在軟考中的考點大體上分為以下幾點 文法 語法推倒樹和算符優先 下面就從這三方面來總結一下。基本元素 首先要了解文法中最基本的兩個元素 非終結符和終結符。非終結符可以理解為還可以拆分的元素,一般用大寫字母來表示 終結符當然就可以看做是不可以拆分的元素,終結符不能轉換為其他狀態,也不能用其他的量...
軟考編譯原理總結
軟考中要考的主要的是文法 正規式 有窮自動機 語法推導樹和算符優先。有0型文法 1型文法 2型文法 3型文法。0型文法是限制最少的乙個。有 vn 非終結符集合。vt 終結符集合。p 推導式集合 s 開始符。只要推導式的左側至少含義 1個非終結符就可。1型文法又叫上下文有關文法,他要求在 0型文法的基...