于愛華
【摘要】編譯原理是計算機學(xué)科的一門核心課程,本文結(jié)合教學(xué)實際,介紹了根據(jù)不同的教學(xué)目標(biāo),選擇不同的教學(xué)內(nèi)容。
【關(guān)鍵詞】編譯原理 教學(xué)目標(biāo) 教學(xué)內(nèi)容
【中圖分類號】G42 【文獻(xiàn)標(biāo)識碼】A 【文章編號】2095-3089(2017)38-0219-01
1.引言
《編譯原理》課程理論知識較抽象,涉及到的算法較復(fù)雜,因此想學(xué)好該課程,需要投入較大的精力。同時,對于該課程又存在課時設(shè)置不足的情況。因此,在不同的教學(xué)目標(biāo)下,選擇合適的教學(xué)內(nèi)容尤為重要?;诮虒W(xué)的現(xiàn)狀以及筆者承擔(dān)《編譯原理》這門課程教學(xué)的體會,本文將闡述對于不同專業(yè)的需求,選擇不同教學(xué)內(nèi)容的認(rèn)識。
該課程對于學(xué)生學(xué)習(xí)來說,難度較大;且真正從事主流編程語言編譯器設(shè)計的雖然只是極少數(shù)一部分人,但是編譯技術(shù)在計算機體系結(jié)構(gòu)設(shè)計、提高軟件開發(fā)效率與質(zhì)量的工具開發(fā)等方面有著重要的應(yīng)用,這是學(xué)習(xí)編譯原理的主要理由[1]。
2.教學(xué)目標(biāo)
目前,我校培養(yǎng)方案中,有三個專業(yè)開設(shè)了編譯原理這門課程,分別是計算機科學(xué)與技術(shù)、軟件外包和通信工程。軟件外包專業(yè)是計算機科學(xué)與技術(shù)的一個分支,對該課的要求一致。每個專業(yè)根據(jù)需要設(shè)置了不同的教學(xué)目標(biāo)。
(1)通信工程專業(yè)的教學(xué)目標(biāo)是:通過各個階段實現(xiàn)技術(shù)的學(xué)習(xí),提高學(xué)習(xí)編程語言的能力,具體如下:
了解完整的編譯過程。
了解各個階段的功能及它們之間的銜接關(guān)系。
提高理解和使用編程語言的能力。
(2)計算機科學(xué)與技術(shù)的目標(biāo)是:通過課程的學(xué)習(xí),提高在程序設(shè)計中使用編程語言的能力,具體如下:
掌握各階段的設(shè)計原理和實現(xiàn)技術(shù)。
提高學(xué)習(xí)編程語言能力。
提高程序排錯和編寫高質(zhì)量程序代碼的能力。
3.教學(xué)內(nèi)容的選擇
3.1 通信工程專業(yè)
該專業(yè)的學(xué)生學(xué)習(xí)該課程,旨在讓整體上對編譯系統(tǒng)的各個階段使用到的編譯原理和技術(shù)有所了解。針對編譯系統(tǒng)的各個邏輯階段,其教學(xué)內(nèi)容如下:
(1)詞法分析
詞法分析是編譯的第一個階段,該階段講述的主線是詞法分析器的生成器的產(chǎn)生,即正規(guī)式、有限自動機和化簡。該階段通過講解正規(guī)式和有限自動機的概念,讓學(xué)生明白為什么需要轉(zhuǎn)換等問題。
(2)語法分析
語法分析分兩類方法介紹,自上而下分析和自下而上分析。
自上而下的分析方法關(guān)鍵的問題是,非終結(jié)符有多個候選時,如何選擇的問題。在教學(xué)中,需要重點講述LL(1)分析方法的判別和預(yù)測分析表的構(gòu)造。
自下而上的分析方法關(guān)鍵的問題是,尋找句柄。對于上下文無關(guān)文法的分析,LR分析方法是一種高效的方法,包括:LR(0)、SLR、規(guī)范LR和LALR方法。LR分析表的生成算法較為復(fù)雜,因此講解時重點應(yīng)放在LR實現(xiàn)的關(guān)鍵問題,即如何確定棧頂符號是否構(gòu)成句柄。對于具體的算法,只需要讓學(xué)生了解。
(3)語義分析
該階段的主要內(nèi)容有屬性文法、語法制導(dǎo)翻譯、中間語言和中間代碼產(chǎn)生。
屬性文法和語法制導(dǎo)翻譯部分主要是基本概念;基于屬性文法的處理方法。通過實例講解S-屬性文法的自下而上計算,使學(xué)生對整個過程中屬性如何計算有個了解。
中間語言包括后綴式、圖表示法和三地址代碼。
中間代碼產(chǎn)生部分主要通過實例講解賦值語句的翻譯,使學(xué)生了解從高級語言的賦值語句,翻譯為中間語言的整個過程。
(4)優(yōu)化
優(yōu)化部分主要講解局部優(yōu)化和循環(huán)優(yōu)化。讓學(xué)生了解能進(jìn)行什么樣的優(yōu)化。
(5)目標(biāo)代碼生成
該部分通過一個簡單的寄存器分配策略的代碼生成算法講解,讓學(xué)生有所了解。
3.2 計算機科學(xué)與技術(shù)專業(yè)
根據(jù)培養(yǎng)目標(biāo),軟件外包專業(yè)的學(xué)生將來主要從事軟件的開發(fā)、維護(hù)等工作。因此,對該專業(yè)的學(xué)生除了要求對編譯原理和技術(shù)的全局把握外,還需要對編譯系統(tǒng)的各個階段使用到的編譯原理和技術(shù)都有所掌握。其教學(xué)內(nèi)容如下:
(1)詞法分析
詞法分析階段讓學(xué)生掌握正規(guī)式和有限自動機轉(zhuǎn)換的技術(shù)、最小化的方法,讓學(xué)生對有限自動機的識別功能,有個更深刻的理解。
(2)語法分析
自上而下分析時,主要講述LL(1)分析法。涉及到一些基本的算法也需要學(xué)生掌握。
自下而上分析時,學(xué)生需掌握LR分析表的生成方法;LR(0)、SLR(1)的分析方法、規(guī)范LR和LALR方法。
(3)語義分析
掌握L-屬性文法的自頂向下翻譯、自下而上計算繼承屬性。中間代碼產(chǎn)生部分需要掌握說明語句、賦值語句、布爾表達(dá)式和控制語句的翻譯。
(4)優(yōu)化
該部分通過實例介紹各類優(yōu)化,讓學(xué)生掌握編譯器能完成哪些優(yōu)化。
4.結(jié)束語
《編譯原理》課程是計算機專業(yè)的核心課程之一,針對當(dāng)前編譯原理教學(xué)中任務(wù)重、學(xué)時少、教學(xué)目標(biāo)不同等問題,就如何根據(jù)不同的教學(xué)目標(biāo),選擇不同教學(xué)內(nèi)容等作了一些研究和探索。
參考文獻(xiàn):
[1]張昱,陳意云.“編譯原理”課程的教學(xué)內(nèi)容選擇的探討[J].計算機教育,2009,(18):143-146endprint