摘要:“編譯原理”是高校計算機類專業的重要基礎和骨干課程,本文分析了該課程的重要性及教學目的,討論了課程中采用的多種教學方法,并就實踐環節進行了設計。實踐證明,教學環節的設置與教學方法的選擇適應學生的認知規律,有助于學生理解知識和鍛煉能力。
關鍵詞:編譯原理;理論教學;教學方法;實踐教學
1研究背景
“編譯原理”是計算機及相關專業的一門重要專業課程,著重培養學生的程序設計和實現能力,在計算機科學中有很重要的地位,被列入國際ACM91教程。編譯程序構造的基本原理和技術蘊涵了計算機科學解決問題的思路和抽象解決問題的方法,其中的設計思想、算法、思維方式和技術都會對學生今后的發展產生比較大的影響,甚至還有“編譯原理對計算機專業學生的重要性與高等數學對理科學生的重要性幾乎可以相提并論”[1]的說法,可見其重要性。編譯原理與其他計算機學科課程關系緊密,如高級程序設計語言、數據結構、離散數學、軟件工程等,是一門理論深度和實踐要求并重的課程。
學習一門課程,首先應該明確學習目的,這樣才能有針對性地學習,提高學習熱情。本課程系統地向學生介紹編譯系統的結構、工作原理及編譯程序各組成部分的設計原理和實現技術,學生學習后,既應掌握編譯理論和方法的基本知識,也應具有設計、實現、分析和移植編譯程序的初步能力,為從事計算機軟件開發及理論研究打下堅實的基礎。
為了實現本課程的教學目標,筆者采用了多種教學方法,并就實踐環節進行了設計,以下就是筆者的教學實踐總結和反思。
2理論課教學
2.1啟發式教學
“啟發式教學”是先進的教學模式之一,強調傳授知識的同時重視學生能力的培養及非智力因素的發展。它把學生真正置于主動者位置,充分調動學生的積極性,激發學生的學習興趣。由于本課程理論性較強,概念原理較多,所以充分發揮學生的積極性就顯得尤為重要。
在授課過程中,教師注重引導學生自我發現問題。例如在講解句型分析內容時,提到自頂向下和自底向上分別體現推導和歸約的本質,及每一種方法的特點和局限性。通過教師引導,學生意識到如何選擇產生式和如何識別可歸約串是這兩種方法的根本問題。有了以上認識,對語法分析內容的學習也非常重要,教師同時啟發學生對知識的遷移,在講到LR分析方法可歸約前綴圖的構造時,可與詞法分析中構造的狀態圖作對比,得出可歸前綴圖的射出弧上不僅可標記終結符,還可標記非終結符的結論,通過對前序內容的遷移,指出知識的前后關系,以加深學生對知識的理解。
2.2任務驅動教學
所謂“任務驅動”,就是將要學習的新知識隱含在一個或幾個任務中,學生通過對任務進行分析、討論,明確涉及的知識,并找出新知識,然后在教師的指導幫助下找出解決問題的方法,在完成任務的同時培養學生分析問題、解決問題的能力。在該課程中,詞法分析的功能和任務以及有限自動機等分析工具的內容較抽象,是教學的重點和難點,采用任務驅動法能達到較好的效果。
詞法分析是編譯的第一個階段,該階段的任務是從左到右逐個字符對源程序進行掃描,產生一個個單詞序列,用以進行語法分析。直白地說就是輸入源程序,輸出單詞符號。例如下面是學生熟悉的C語言程序[2]:
main()
{float a, b,h,s;
s=(a*b+a*h+b*h) *2;}
通過詞法分析得到單詞符號結果:
保留字:main,float
標識符:a,b,h,s
常數:2
運算符:=,*, +
界符:,;( ){ }
單詞序列已完成,如何描述以上的單詞符號成為問題的關鍵,我們采用正規文法構造單詞,通過分析得到如下正規文法:
G[S]:
S—> F | I | D | O | B
F—> float
I—>a | b | h | s
D—>2
0—> = | * | +
B—> ,| ;( | ) | { | }
其中F為保留字;I為標識符;D為常數;O為運算符;B為界符。具備了正規文法知識,講解形式語言與自動機理論知識時就較易被學生接受。
2.3案例式教學
“案例式教學”是從典型事例分析評價中加深學生對所學理論的理解,提高運用該理論的能力。
“編譯原理”中的難點、重點通常以理論性、抽象性、枯燥性為特征,而案例式教學具有實踐性、形象性、生動性的特點,恰好可彌補其不足,充分調動學生興趣,使其在分析案例、得出結論的過程中提高創新能力[3]。
在教學過程中,案例的主要形式是例題,一般是具有代表性的例題或綜合習題,約占2/3的課堂時間。在自動機理論中,正則式或正則文法轉化成等價的NFA、NFA轉換為等價的DFA、DFA的最小化等內容,可用一道綜合題將這部分知識融會貫通,教學效果很好;LL(1)分析方法、優先分析方法、LR分析方法等內容也都可以通過實例實現教學。而反例的選擇可以包括非LR(0)的SLR(1)文法、非SLR(1)的LR(1)文法、非LALR(1)的LR(1)文法,以更好地說明每種文法的特點及區別和聯系。教學內容結束后教師布置作業,學生自己變為實例教學模型的主體,教師再就作業中出現的問題安排習題課,效果更佳。除課本上的例題外,教師還可選擇一些考研試題,拓展學生的知識面。
2.4演示教學
在課堂教學中,合理結合黑板、粉筆和先進的多媒體教學技術,可適當降低教學速度,使學生有充裕的時間思考,也能提高學生的重視程度。我們除制備完整的多媒體教學課件外,還設計了模擬LL(1)分析方法全過程的Flash動畫,有利于學生形象記憶分析全過程。在講授詞法分析時演示分析程序,得到詞法分析后的輸出序列如圖1所示,通過修改源程序顯示不同的甚至是包含錯誤提示的輸出結果,使學生加深對理論知識的理解。
3實踐課教學
實踐活動是創新意識的源泉,是創新能力的基礎,學生只有在不斷的實驗環節中嘗試、探索、研究和創新,才能不斷提高解決工程問題的能力。因此,要培養學生的創新意識和創新能力,除了培養學生的開放型思維和科學精神外,實踐能力的培養最重要。
“編譯原理”課程對實踐性要求較高,學生在實驗中掌握一些重要算法,將數據結構、高級語言等內容融會貫通,最終提高各門知識的綜合應用能力。編譯原理實驗加強了學生對編譯理論知識的理解,消除其對該課程的“神秘感”和“恐懼感”。在教學設計中,我們精心設計了三個實驗,分別是詞法分析程序、語法分析—LL(1)和語法分析—LR。教師在每個實驗前明確實驗目的和要求,演示成果及結果,使學生更明確要完成的任務。
實現詞法分析器的設計需要兩個關鍵步驟:先要掃描需要分析的源代碼,過濾掉其中的空格、換行符、注釋等字符;再把得到的字符和保留字表中的字符進行比較,看是否存在該字符,若存在則打印出該字符串,并說明在保留字表中的位置,為下一步語法分析做準備,否則提示錯誤信息,如圖1所示。完成詞法分析器功能后,要求學生編寫程序實現自動機理論知識,圖2是從NFA到DFA的構造及DFA最小化的構造過程。
對于自頂向下的語法分析程序—LL(1),FIRST、FOLLOW、SELECT集合的計算方法一直是學習的難點,學生通過實驗可以充分理解這三個集合的意義,掌握確定的自頂向下的分析思想,教師在教學中需重點強調編程中的左遞歸和回溯現象問題。
自底向上LR分析法有一系列算法,在詞法分析程序的基礎上,構造該分析法對符號表中的單詞進行語法分析,對符合給定文法規則的字符串輸出結果,否則提示錯誤,如圖3所示。除此之外,對學有余力的學生,可以使用程序動態演示可歸前綴圖的構造過程和LR分析表的構造過程,加深學生對所學理論知識的理解。
對課程中部分經典算法的實現培養了學生的實踐動手能力,使學生學以致用,加深理解,鞏固知識,真正將書本上的理論知識變為學生知識儲備庫中的知識。為督促學生自主學習,老師不僅要檢查每位學生的實踐結果,還要就算法內容、編程知識的理解、編譯原理的應用等內容提出疑問,使學生不局限于掌握課本內容,還熟悉計算機知識的全面整合。
4結語
通過“編譯原理”課程學習編譯程序的構造原理和實現技術,學生不僅能掌握編譯程序本身的實現技術,也能加深對程序設計語言的理解,提高語言的設計和開發大型軟件的能力,還能提高抽象思維能力和形式化描述能力。編譯及相關技術在很多領域都有廣泛應用,如逆向工程[5]、通信協議[6]、軟件再工程等,這更凸顯了本課程的重要性。通過多年教學實踐并對近兩屆學生成績的分析證明,本課程教學環節的設置與教學方法的選擇適應學生的認知規律,有助于學生理解知識、提高能力。
參考文獻:
[1] 陳文宇. 關于“編譯原理”課程教學的思考[J]. 實驗科學與技術,2008(12):80-82.
[2] 李娟,孫濤. “編譯原理”課程教學改革實踐[J]. 高師理科學刊,2007(7):93-95.
[3] 岳小婷. 貫徹以人為本,推進“編譯原理”教學改革[J]. 福建電腦,2008(1):213-214.
[4] 陳意云. “編譯原理”的教學與實際相結合的探討[J]. 教育與現代化,2005(12):32-36.
[5] 胡燕京. 編譯技術研究與逆向工程研究[J]. 現代電子技術,2007(16):99-101.
[6] 劉希遠. 編譯原理在通信協議轉換中的應用[J]. 甘肅工業大學學報,2000(9):69-72.
Research and Practice of the Teaching Method of “Compiler Principles”
WANG Shun-ye
(Department of Computer Science and Technology, Langfang Teachers College, Langfang 065000, China)
Abstract: “Compiler Principles” is a basic and essential course for college students majoring in computer related fields. This article analyzes the importance and the purpose of teaching, discusses many teaching method, and designs the practice arrangements. We believe that the arrangements and methods adapt to the students’ cognitive rules and can help them understand and take exercises.
Key words: Compiler Principle; teaching in theory; teaching method; practice teaching