【摘 要】目前的編譯原理課程的教學中存在以下問題:1、教學內容偏重于原理;2、實驗內容的語言不合理;3、實踐環節太薄弱。針對此做出了如下的改變:1、區分不同層次的學生合理組織教學;2、靈活應用多種教學方法;3、加強學生動手能力。
【關鍵詞】編譯原理 改革 教學方法 動手能力 組織教學
一、引言
編譯原理是計算機專業的一門重要專業課,旨在介紹編譯程序構造的一般原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。 編譯原理是計算機專業設置的一門重要的專業課程。雖然只有少數人從事編譯方面的工作,但是這門課在理論、技術、方法上都對學生提供了系統而有效的訓練,有利于提高軟件人員的素質和能力。
二、在教學過程中存在的問題
在編譯原理課程的教學實踐中,我們發現需要解決下列問題:1. 教學內容比較偏重于原理。編譯原理中的核心理論是詞法分析和語法分析這兩部分, 如果說不去做題的話是不可能學懂的。那么按照這樣的教學內容教課, 就容易給學生造成誤解, 認為學編譯原理關鍵就是會做題。但是事實上是不對的,編譯原理不同于一般我們所學的純理論課,它的實踐性也是很強的。2. 實驗內容所使用的語言不合理。目前大多數教材中的實驗內容使用PL/0語言的編譯程序。但是事實上因為PL/0語言是pascal的子集,而現在很多學生已經不再學習pascal語言了,所以大多數的程序是看不太明白的。3. 實踐環節太薄弱。縱觀整個編譯原理的教學,事實上所偏重的都是理論教學,而真正的實踐實在是少之又少,以致學生搞不太清楚研究編譯原理到底有什么意義。
而且由于編譯原理涉及的理論知識較多, 形成了一種抽象層面上的數據變換, 許多學生難以理解, 曾一度被視為天書。有些學生在專業課學習時還存在考研或實用的偏愛, 投入到編譯原理的學習時間相對來說就較少, 給教學帶來一定的影響。
三、 對這些問題做出的一些改進方法
針對以上的這些問題,我們有必要對編譯原理這門課程做出一些改革。
第一,區分不同層次的學生合理組織教學。在教學過程中要考慮到大多數學生的學習現況,達到基本的教學目的,講授編譯原理的基本概念、基本知識,讓絕大多數學生了解編譯原理的基本思想,掌握常用的編譯技術。具體的說,可以根據學生對編譯原理的不同要求,將學生分為兩個不同層次:第一層次的學生只是按大綱要求掌握編譯原理的基本內容, 第二層次的學生則需要在第一層次基礎上拓展和提高。這類學生一般是對編譯原理有興趣,準備考研或者是想掌握相應的編譯技術的。教學內容應以第一層次的學生為基礎, 而實驗內容應考慮第二層次學生的要求。針對這樣的情況,教學的主要內容相同, 但要求不同, 如課后作業可分必做和選做兩種, 實驗內容也可分必做和選做兩種。在教學過程中, 應突出編譯原理的主要內容以及基本框架, 對教材及教學內容做一定的取舍, 突出重點。
第二,靈活應用多種教學方法。利用啟發式教學提高學生學習的積極性和主動性。根據教材的內在聯系和學生的認識規律,由淺入深、由近及遠、由表及里、由易到難逐步提出問題,解決問題、引導學生主動、積極、自覺的掌握知識。
采用形象化的方法來幫助學生掌握原理。比如,在講解句型的短語、直接短語和句柄的時候,如果按照書上所給出的概念來做的話,學生理解起來非常困難,這個時候可以依靠語法樹來幫助學生理解原理。語法樹有幾個內部節點就代表有幾棵子樹,每棵子樹的葉節點從左至右排列組成一個短語 ,只具有父子兩代的子樹則組成了直接短語,而處于整棵語法樹最左邊的只具有父子兩代的子樹則構成了句柄。
利用實例教學,通過從環境中取得若干與某概念相關的例子,經過歸納得出一般性概念。首先讓學生學習理論知識,然后講解和知識相關的實例,讓學生聽懂例子,理解例子,學生再綜合實踐,從而激發學生學習這門課程的興趣,增強了學生的自信心,為學好這門課排除心理障礙。
第三,加強學生的動手能力。為了幫助學生理解編譯的各個過程,可以在學期最開始的時候布置給學生完成一個簡單編譯器的作業,等到學期結束的時候驗收。這樣,學生在學習理論知識的同時又鍛煉了自己的動手能力,并且加深了對整個編譯器工作過程的理解。因為,如果不理解編譯器編譯的各個過程的話,是無法很好的完成這樣一個編譯器的。
四、總結
編譯原理是計算機科學以及相關專業的一門重要的專業基礎課程,尤其是對于軟件專業的學生來說,學習編譯原理可以幫助他們更好地了解計算機的底層工作,從而才能開發出能夠滿足客戶和計算機雙重需要的軟件。所以,老師在教學過程中應該注重理論與實踐的結合,認真的組織編譯原理課程實踐,將閱讀代碼與動手完成真正的編譯器結合,提高實驗的效果,幫助學生打好扎實的理論基礎的同時并具備較強的實踐能力,提高教學質量。