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