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