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