2.3 解釋程序:
所謂解釋程序是高級語言翻譯程序的一種,它將源語言(如BASIC)書寫的源程序作為輸入,解釋一句后就提交計(jì)算機(jī)執(zhí)行一句,并不形成目標(biāo)程序。就像外語翻譯中的“口譯”一樣,說一句翻一句,不產(chǎn)生全文的翻譯文本。這種工作方式非常適合于人通過終端設(shè)備與計(jì)算機(jī)會話,如在終端上打一條命令或語句,解釋程序就立即將此語句解釋成一條或幾條指令并提交硬件立即執(zhí)行且將執(zhí)行結(jié)果反映到終端,從終端把命令打入后,就能立即得到計(jì)算結(jié)果。這的確是很方便的,很適合于一些小型機(jī)的計(jì)算問題。但解釋程序執(zhí)行速度很慢,例如源程序中出現(xiàn)循環(huán),則解釋程序也重復(fù)地解釋并提交執(zhí)行這一組語句,這就造成很大浪費(fèi)。
對源程序邊解釋翻譯成機(jī)器代碼邊執(zhí)行的高級語言程序。由于它的方便性和交互性較好,早期一些高級語言采用這種方式,如BASIC、dBASE。但它的弱點(diǎn)是運(yùn)行效率低,程序的運(yùn)行依賴于開發(fā)環(huán)境,不能直接在操作系統(tǒng)下運(yùn)行。
解釋程序是一種語言處理程序,它直接執(zhí)行源程序或源程序的內(nèi)部形式。它并不產(chǎn)生目標(biāo)程序,這是它和編譯程序的主要區(qū)別。
高級語言實(shí)現(xiàn)語言處理有4種方案:
◆ 源程序被直接解釋執(zhí)行。
◆ 先將源程序翻譯成高級中間代碼,然后再掃描和解釋執(zhí)行高級中間代碼。
◆ 先將源程序轉(zhuǎn)化成和機(jī)器代碼十分接近的低級中間代碼,再解釋執(zhí)行這種中間代碼。
◆ 源程序被最終翻譯成機(jī)器語言表示的目標(biāo)程序。這類系統(tǒng)的目標(biāo)程序執(zhí)行效率最高。
翻譯系統(tǒng)與解釋系統(tǒng)比較:
◆ 翻譯系統(tǒng)在執(zhí)行速度上都優(yōu)于建立在解釋執(zhí)行基礎(chǔ)上的系統(tǒng);
◆ 翻譯系統(tǒng)的缺點(diǎn)是其復(fù)雜性高,這使得它的開發(fā)和維護(hù)費(fèi)用都大;
◆ 解釋系統(tǒng)比較簡單,可移植性較好,適合于以交互方式執(zhí)行程序;
◆ 解釋系統(tǒng)缺點(diǎn)是執(zhí)行速度慢;
純粹的解釋和純粹的編譯都是極端,因此一般是兩種技術(shù)的結(jié)合,先將源程序編譯形成中間代碼,然后由解釋器解釋執(zhí)行。
解釋系統(tǒng)的結(jié)構(gòu)可分成兩個部分。
1.包括通常的詞法分析程序以及語法和語義分析程序,它的作用仍是把源程序翻譯成中間代碼,中間代碼的設(shè)計(jì)常采用逆波蘭(后綴)表示形式(符號在后面)。
2.解釋部分,用來對第一部分所產(chǎn)生的中間代碼進(jìn)行解釋執(zhí)行,完成真正的解釋。
工作過程
解釋程序由一個總控程序和若干個執(zhí)行子程序組成。解釋程序的工作過程如下:首先,由總控程序執(zhí)行初始準(zhǔn)備工作,置工作初態(tài);然后,從源程序中取一個語句S,并進(jìn)行語法檢查。如果語法有錯,則輸出錯誤信息;否則,根據(jù)所確定的語句類型轉(zhuǎn)去執(zhí)行相應(yīng)的執(zhí)行子程序。返回后檢查解釋工作是否完成,如果未完成,則繼續(xù)解釋下一語句;否則,進(jìn)行必要的善后處理工作。
適用范圍
解釋程序的突出優(yōu)點(diǎn)是可簡單地實(shí)現(xiàn),且易于在解釋執(zhí)行過程中靈活、方便地插入修改和調(diào)試措施,但最大缺點(diǎn)是執(zhí)行效率很低。例如,需要多次重復(fù)執(zhí)行的語句,采用編譯程序時只需要翻譯一次;但在解釋程序中卻需要重復(fù)翻譯,重復(fù)執(zhí)行。根據(jù)這些特點(diǎn),解釋程序適用于如下場合:
、儆行┱Z言中的大多數(shù)語句,如字符串加工語言中的字符串查找語句和加工語句,其執(zhí)行時間比翻譯時間長得多。對于這種語言,采用生成性方案,效果甚微,而采用解釋性方案則易于實(shí)現(xiàn)。
②為了便于用戶調(diào)試和修改程序,又能保證程序高效運(yùn)行,很多程序設(shè)計(jì)語言配置兩個加工系統(tǒng),一個用于調(diào)試,一個用于有效地運(yùn)行。調(diào)試用的系統(tǒng)一般用解釋程序?qū)崿F(xiàn),以便及時監(jiān)視運(yùn)行情況、動態(tài)地輸出調(diào)試信息和靈活地修改錯誤。
、劢换ナ綍捳Z言(如BASIC,APL),要為用戶提供并行、交錯編寫、執(zhí)行、調(diào)試和修改源程序的功能。采用解釋程序易于實(shí)現(xiàn)這些功能。
隨著超大規(guī)模集成電路的迅速發(fā)展,不少人提出用微程序設(shè)計(jì)方法實(shí)現(xiàn)高級程序設(shè)計(jì)語言解釋程序的想法,隨之出現(xiàn)了如 “FORTRAN機(jī)”之類的高級語言機(jī)器的概念。
相關(guān)推薦:
2012年軟考系統(tǒng)分析師考試60天完美復(fù)習(xí)計(jì)劃
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |