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