陳蒙 李學(xué)志
【摘 要】針對(duì)編譯原理課程在長(zhǎng)期的實(shí)踐教學(xué)中存在學(xué)生學(xué)習(xí)目標(biāo)不明確,課堂教學(xué)效果不佳等問(wèn)題。文章針對(duì)這些現(xiàn)實(shí)情況,經(jīng)過(guò)不斷的教學(xué)實(shí)踐,總結(jié)編譯原理課程的教學(xué)現(xiàn)狀,結(jié)合具體的教學(xué)實(shí)例,有針對(duì)性的對(duì)編譯原理課程進(jìn)行了改革和實(shí)踐,設(shè)計(jì)幾種課程教學(xué)改革的實(shí)施方案,取得了不錯(cuò)的教學(xué)效果。
【關(guān)鍵詞】編譯程序;編譯原理;課程改革;課程實(shí)踐
【中圖分類號(hào)】G424 【文獻(xiàn)標(biāo)識(shí)碼】A
【文章編號(hào)】2095-3089(2019)02-0029-01
編譯原理是計(jì)算機(jī)科學(xué)與技術(shù)和軟件工程專業(yè)非常重要的核心課程。具有很強(qiáng)的理論性、實(shí)踐性和技術(shù)性。課程要求學(xué)生掌握和理解編譯系統(tǒng)的結(jié)構(gòu)、工作流程以及編譯程序的設(shè)計(jì)原理和實(shí)現(xiàn)技術(shù)。幫助計(jì)算機(jī)相關(guān)專業(yè)的同學(xué)提升計(jì)算機(jī)問(wèn)題求解的水平,運(yùn)用編譯算法解決軟件問(wèn)題,提升學(xué)生的專業(yè)素養(yǎng)[1]。
一、編譯原理課程教學(xué)中存在的問(wèn)題
1.學(xué)生的前期課程學(xué)習(xí)不足。
編譯原理是計(jì)算機(jī)相關(guān)專業(yè)的重要核心課程,主要介紹的是編譯器構(gòu)建的原理和方法。要求學(xué)生具有較好的計(jì)算機(jī)知識(shí),對(duì)計(jì)算機(jī)的工作原理有一定了解,對(duì)應(yīng)的先修課程包括數(shù)據(jù)結(jié)構(gòu),離散數(shù)學(xué),高級(jí)程序設(shè)計(jì)語(yǔ)言。實(shí)際中存在前導(dǎo)課程學(xué)生掌握情況一般,知識(shí)體系缺失,這些是編譯原理課程教學(xué)中效果不佳的原因。
2.課程本身的理論性較強(qiáng)。
編譯器規(guī)模很大,且模糊了編譯器的各個(gè)邏輯部分和某些算法的實(shí)現(xiàn)之間的接口,涉及到形式語(yǔ)言和自動(dòng)機(jī)理論,語(yǔ)法指導(dǎo)等概念,對(duì)這些理論的研究很困難。編譯原理課程中包括DFA確定和化簡(jiǎn)的算法,用于構(gòu)建文法符號(hào)的符號(hào)集和后續(xù)符號(hào)集的算法,以及用于各種數(shù)據(jù)流方程的迭代求解算法,對(duì)于本科生而言,掌握這些算法是有難度的。
3.學(xué)生的學(xué)習(xí)能力與自制力相對(duì)不足。
根據(jù)課程實(shí)際的教學(xué)體驗(yàn),現(xiàn)階段大學(xué)生的學(xué)習(xí)動(dòng)機(jī)不足,無(wú)法保證基本的學(xué)習(xí)時(shí)間。厭倦學(xué)習(xí),缺乏課堂興趣,沒(méi)有明確的學(xué)習(xí)目標(biāo)和學(xué)習(xí)計(jì)劃。開(kāi)設(shè)編譯原理課程的年級(jí)一般是大三或者是大四,作為高年級(jí)的學(xué)生在學(xué)習(xí)上的自制能力尤為不夠,更容易受到其它因素的影響,在學(xué)習(xí)的過(guò)程中遇到困難,容易放棄。
二、探索編譯原理教學(xué)改革的方法
1.明確學(xué)習(xí)目標(biāo)。
首先是要提高學(xué)生們主動(dòng)學(xué)習(xí)的興趣,在編譯原理課程的第一課,要向?qū)W生們闡述課程的意義。對(duì)現(xiàn)實(shí)問(wèn)題進(jìn)行抽象化和形式化表示是進(jìn)行計(jì)算機(jī)問(wèn)題求解的基本途徑,編譯原理課程教授同學(xué)們具有這種抽象化和形式化思維的能力[2]。編譯原理課程集中體現(xiàn)了計(jì)算思維,采用理論和算法解決了高級(jí)語(yǔ)言到低級(jí)語(yǔ)言的翻譯問(wèn)題,為計(jì)算機(jī)和人對(duì)話提供了可靠的接口。學(xué)習(xí)本課程有助于學(xué)生理解高級(jí)語(yǔ)言的本質(zhì),增加學(xué)生的學(xué)習(xí)興趣。其次,編譯原理對(duì)很多領(lǐng)域理論的研究具有深遠(yuǎn)的意義,如計(jì)算機(jī)軟件技術(shù)領(lǐng)域,計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)領(lǐng)域,人工智能系統(tǒng)的機(jī)器學(xué)習(xí)領(lǐng)域,并行處理技術(shù)領(lǐng)域等[3]。在講解到具體章節(jié)的時(shí)候,我們注意對(duì)其說(shuō)明,如:正規(guī)式和有窮自動(dòng)機(jī)在文本編輯器中的廣泛應(yīng)用,有窮自動(dòng)機(jī)在字符串查找中的運(yùn)用,由文法來(lái)定義網(wǎng)絡(luò)協(xié)議等。
2.抽象內(nèi)容具體化。
編譯原理課程中的一些概念比較抽象,不容易理解,在某種程度上增加了本門課程的難度。在講解這些知識(shí)的時(shí)候,可從現(xiàn)實(shí)生活中找一些實(shí)例,通過(guò)類比學(xué)習(xí),幫助學(xué)生們對(duì)于概念的理解。舉例說(shuō)明,在講解編譯過(guò)程的六個(gè)階段:詞法分析、語(yǔ)法分析時(shí)可類比一個(gè)英文句子翻譯為中文的實(shí)例,從而明確整個(gè)語(yǔ)言的編譯過(guò)程[4]。
3.課堂教學(xué)生動(dòng)化。
為了更進(jìn)一步提高學(xué)生的學(xué)習(xí)興趣,提高課堂教學(xué)效果,利用現(xiàn)代多媒體技術(shù),將需要在教學(xué)過(guò)程中解釋的知識(shí)點(diǎn)動(dòng)態(tài)表示的過(guò)程制作成CAI課件。比如自動(dòng)機(jī)如何動(dòng)態(tài)識(shí)別字符串,如何以交互方式設(shè)計(jì)自動(dòng)機(jī),如何完成正則表達(dá)式到自動(dòng)機(jī)的轉(zhuǎn)換,如何幫助學(xué)生設(shè)計(jì)語(yǔ)法分析表地等。可借助于JFLAP和JELLRAP軟件解決上述問(wèn)題[5]。該軟件能夠像向?qū)б粯虞o助學(xué)生完成詞法和文法設(shè)計(jì)的每一步,并且動(dòng)態(tài)演示學(xué)生設(shè)計(jì)的每一個(gè)詞法和文法分析器的工作過(guò)程。在課堂上,不僅僅使用單一的多媒體教學(xué)方法,還可將多媒體與傳統(tǒng)教學(xué)相結(jié)合。對(duì)于在一張幻燈片中難以展現(xiàn)的內(nèi)容,通過(guò)黑板板書(shū)的方式,使多媒體和黑板有機(jī)分工,兩者相結(jié)合,學(xué)生可以更好地理解和掌握課程內(nèi)容。
4.理論教學(xué)與實(shí)踐教學(xué)相結(jié)合。
編譯原理課程實(shí)驗(yàn)課的設(shè)計(jì)要與課程本身的理論體系相互遵循,原理要與技術(shù)相互對(duì)照。根據(jù)編譯程序的結(jié)構(gòu),詞法分析,語(yǔ)法分析,語(yǔ)義分析和中間代碼生成,代碼優(yōu)化和目標(biāo)代碼生成五個(gè)階段來(lái)設(shè)計(jì)實(shí)驗(yàn)內(nèi)容。實(shí)踐教學(xué)內(nèi)容,可由學(xué)生根據(jù)自己掌握的程度和自學(xué)的能力選擇,三種題目難度從高到低,分?jǐn)?shù)所占的總評(píng)比例分別是50%,30%,20%。
(1)手動(dòng)構(gòu)造小型的編譯器。
完整的編譯器包括前端部分,如詞法分析,語(yǔ)法分析、語(yǔ)義分析,中間代碼生成和代碼優(yōu)化。還包括生成適用于特定計(jì)算機(jī)體系結(jié)構(gòu)的可執(zhí)行代碼后端部分。學(xué)生在有限的實(shí)踐教學(xué)中同時(shí)完成前端和后端是不現(xiàn)實(shí)的,允許學(xué)生可以只完成編譯的前端。
(2)自動(dòng)構(gòu)造編譯器。
對(duì)某一種語(yǔ)言,借助Lex和 Yacc等工具,自動(dòng)生成詞法分析程序和語(yǔ)法分析程序,然后組裝成完整的編譯程序。這種形式的實(shí)踐,學(xué)生必須花費(fèi)大量的時(shí)間研究開(kāi)發(fā)工具的基本原理及使用方法,通過(guò)學(xué)習(xí),學(xué)生對(duì)編譯程序前端的理論知識(shí)有一很好的學(xué)習(xí)和提高。
(3)采用分析現(xiàn)有編譯器程序的方法。
不需要設(shè)計(jì)和開(kāi)發(fā)特定的編譯器,可通過(guò)閱讀現(xiàn)有的編譯器來(lái)了解它的工作原理。這將確保大多數(shù)學(xué)生能夠完成實(shí)踐任務(wù),并達(dá)到讓學(xué)生通過(guò)課程實(shí)踐理解編譯過(guò)程的目的。
三、結(jié)語(yǔ)
編譯原理是一門理論性和實(shí)踐性都很強(qiáng)的課程,在計(jì)算機(jī)相關(guān)專業(yè)的教學(xué)體系中有著非常重要的作用。在實(shí)際教學(xué)中,課程雖然比較抽象,難度比較大,但是學(xué)生的學(xué)習(xí)效果還是有的,不僅掌握了基礎(chǔ)知識(shí),而且已經(jīng)體會(huì)到教學(xué)中的深層次的內(nèi)容,達(dá)到了提高教學(xué)效果的目的。
參考文獻(xiàn)
[1]蔣宗禮.基本學(xué)科能力培養(yǎng)在編譯原理課程教學(xué)中的實(shí)現(xiàn)[J].計(jì)算機(jī)教育,2007(1):28-30.
[2]趙曉,張振國(guó).編譯原理課程教學(xué)改革探索[J].陜西教育(高教版),2008(11):39-49.
[3]雷宇,馬新娜.編譯原理課程教學(xué)改革與實(shí)踐[J].中國(guó)電力教育,2010(28):71-72.
[4]郝愛(ài)峰.編譯原理教學(xué)探索[J].電腦開(kāi)發(fā)與應(yīng)用,2008(12):73-74.
[5]何炎祥,伍春香.現(xiàn)代教學(xué)理論指導(dǎo)下的“編譯原理”[J].計(jì)算機(jī)教育,2010(1):46-49.