張 艷
(上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)
“編譯原理”課程的教學(xué)新思考
張 艷
(上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)
本文論述了“編譯原理”課程對計(jì)算機(jī)專業(yè)學(xué)生專業(yè)能力培養(yǎng)與素質(zhì)提高的必要性和重要性,提出了“編譯原理”課程理論教學(xué)和實(shí)驗(yàn)教學(xué)的新方法和新模式。解決了新形勢下,“編譯原理”課程要不要設(shè)置以及如何教授的問題,為“編譯原理”課程的“教”與“學(xué)”提供了一些新思維。
編譯原理;能力培養(yǎng);教學(xué)
從當(dāng)前的就業(yè)情況看,計(jì)算機(jī)專業(yè)的學(xué)生在軟硬件知識和應(yīng)用能力上的優(yōu)勢逐漸弱化、在與具備特定行業(yè)、應(yīng)用領(lǐng)域和專業(yè)背景的學(xué)生競爭就業(yè)時,面臨的壓力越來越大,而在已就業(yè)的學(xué)生中又少有人從事編譯系統(tǒng)的研究和開發(fā)工作。所以,“編譯原理”作為計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的“經(jīng)典”核心課程的存在價值受到質(zhì)疑。其實(shí),本科教育解決的是培養(yǎng)學(xué)生基本專業(yè)能力、可持續(xù)發(fā)展能力這些本質(zhì)性的問題,因此,我們要從如何結(jié)合專業(yè)課程完成學(xué)生專業(yè)能力的培養(yǎng)與素質(zhì)的提高這樣的角度來看問題。
在大學(xué)里,學(xué)習(xí)一門課程,不能簡單、膚淺地看成是對這門課程所含內(nèi)容的研究、設(shè)計(jì)和開發(fā),而是關(guān)注是否在有限的時間內(nèi)最有利于學(xué)生專業(yè)能力的培養(yǎng)。計(jì)算機(jī)是一門技術(shù)性、工程性和應(yīng)用性很強(qiáng)的學(xué)科,有其自身的基礎(chǔ)理論支撐體系。“編譯原理”課程本身以計(jì)算機(jī)專業(yè)基礎(chǔ)知識為載體,含有問題求解的典型思想、技術(shù)和方法,整個課程的內(nèi)容對培養(yǎng)學(xué)生的計(jì)算思維、程序設(shè)計(jì)與實(shí)現(xiàn)、算法設(shè)計(jì)與分析、計(jì)算機(jī)系統(tǒng)的認(rèn)識、開發(fā)和利用等學(xué)科基本能力都非常重要。并且,編譯技術(shù)在計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)、提高軟件開發(fā)效率與質(zhì)量的工具開發(fā)等方面有著重要的應(yīng)用。因此,“編譯原理”課程不但有存在的價值,而且對于計(jì)算機(jī)專業(yè)學(xué)生的能力培養(yǎng)和素質(zhì)提高有著極其重要的作用和意義。作為計(jì)算機(jī)專業(yè)的教育工作者,我們應(yīng)該結(jié)合當(dāng)前計(jì)算機(jī)的發(fā)展?fàn)顩r,重新認(rèn)識“編譯原理”課程的重要性,并根據(jù)當(dāng)前的教育和就業(yè)形勢,積極研究、改進(jìn)“編譯原理”課程的教學(xué)和實(shí)驗(yàn)方法,提高教學(xué)效果合質(zhì)量。
從課程體系總體設(shè)計(jì)看,“編譯原理”課程的主要教學(xué)目標(biāo)之一是使學(xué)生在系統(tǒng)的級別上重新認(rèn)識算法和程序,提升學(xué)生的系統(tǒng)能力,是計(jì)算機(jī)專業(yè)課程中最難學(xué)的課程,既涉及形式語言和自動機(jī)等抽象理論,又是數(shù)據(jù)結(jié)構(gòu)、程序設(shè)計(jì)語言、算法和軟件設(shè)計(jì)等知識的綜合體現(xiàn),有效培養(yǎng)了計(jì)算機(jī)專業(yè)學(xué)生應(yīng)具有的計(jì)算思維;算法設(shè)計(jì)與分析;程序設(shè)計(jì)與實(shí)現(xiàn)(硬件和軟件實(shí)現(xiàn));系統(tǒng)的認(rèn)知、分析、開發(fā)與應(yīng)用等四大基本能力。
計(jì)算學(xué)科問題求解的基本思路是“問題→形式化描述→計(jì)算機(jī)化”,以抽象、理論、設(shè)計(jì)為其學(xué)科形態(tài)?!熬幾g原理”課程中要求學(xué)生掌握的包括程序變換基本概念、問題描述和處理方法(自頂向下、自底向上、逐步求精、遞歸求解,目標(biāo)驅(qū)動,問題分析、問題的抽象與形式化描述,算法設(shè)計(jì)與實(shí)現(xiàn),系統(tǒng)構(gòu)建、模塊化)等知識、思想和方法,有利于學(xué)生養(yǎng)成“問題、形式化描述、計(jì)算機(jī)化”問題求解的習(xí)慣,實(shí)現(xiàn)從“實(shí)例計(jì)算”到“類計(jì)算”和“模型計(jì)算”的跨越。這其中既有明確的、便于抽象的問題,又有較成熟的理論,而且在限定規(guī)模下又容易實(shí)現(xiàn)(設(shè)計(jì)),涉及的是一個比較適當(dāng)?shù)某橄髮用嫔系臄?shù)據(jù)變換,所以該課程是計(jì)算機(jī)專業(yè)本科生的重要專業(yè)技術(shù)基礎(chǔ)課程。
目前,在“編譯原理”課程教學(xué)中,“教”與“學(xué)”兩方面的問題都很突出:一些抽象的重要理論使學(xué)生學(xué)習(xí)的畏難情緒嚴(yán)重,加上有些人認(rèn)為畢業(yè)后很少有機(jī)會參與設(shè)計(jì)與實(shí)現(xiàn)編譯系統(tǒng),使得該課程的“教”與“學(xué)”的熱情偏低,而適用于新型體系結(jié)構(gòu)及新一代計(jì)算機(jī)系統(tǒng)的編譯器的需求和大量應(yīng)用,也給“編譯原理”課程內(nèi)容的充實(shí)與更新提出更高要求。
作為教師,要讓學(xué)生深刻認(rèn)識到:(1) “編譯原理”是許多課程知識的集成與實(shí)踐,能進(jìn)一步加深對許多專業(yè)基礎(chǔ)課程知識的理解;(2)編譯程序所使用的原理、方法和技術(shù)有利于領(lǐng)悟計(jì)算機(jī)理論的精髓,在非編譯系統(tǒng)的實(shí)際應(yīng)用中也發(fā)揮著很大作用。(3)學(xué)習(xí)編譯對今后從事應(yīng)用軟件,語言開發(fā)平臺、編譯系統(tǒng)甚至操作系統(tǒng)的開發(fā)等工作非常有益。
實(shí)踐證明,如果首先讓學(xué)生認(rèn)識到課程內(nèi)容的重要性,再輔之以合適的教學(xué)方法和教學(xué)手段,是不難取得好的教學(xué)效果的。根據(jù)筆者的“編譯原理”課程教學(xué)經(jīng)驗(yàn),認(rèn)為對于該課程的設(shè)置和教學(xué)可以從以下幾個角度來開展:
1. 科學(xué)設(shè)置課程
對于“編譯原理”課程的設(shè)置問題,可以根據(jù)本科院校自身辦學(xué)宗旨,從普通高校本科、重點(diǎn)高校本科和研究生階段教育三個層次來考慮教學(xué)目標(biāo)和培養(yǎng)要求等因素,在總學(xué)時的限制下,實(shí)現(xiàn)總目標(biāo)的最佳課程。因此,可以考慮以下2種模式:
(1)課程分解模式:分為“編譯技術(shù)”(必修),介紹為滿足基本應(yīng)用而需要學(xué)生掌握的基礎(chǔ)知識、方法和技術(shù),以達(dá)到語言轉(zhuǎn)換和實(shí)現(xiàn)理論基礎(chǔ)介紹的目的。另一門為“編譯理論”(選修),主要偏重于形式化等原理性的深層次內(nèi)容,方便有進(jìn)一步深造需要的學(xué)生學(xué)習(xí)。
(2)內(nèi)容分解模式:不單獨(dú)設(shè)置一門“編譯原理”課程,根據(jù)深淺和涉及到的具體問題,將與其他課程相關(guān)的內(nèi)容分解到不同的課程中去,使學(xué)生在相關(guān)課程的學(xué)習(xí)中逐步掌握相關(guān)知識。(這和前者比有一定難度:一是課程難分解,課程內(nèi)容分解后與其他課程內(nèi)容的重新整合在短時期內(nèi)難做到科學(xué)分解與組織;二是增加了其他課程授課教師的工作量與難度)
2. 優(yōu)化教學(xué)內(nèi)容
教師還要堅(jiān)持教學(xué)與科研相結(jié)合,將最新的教改和科研成果引入教學(xué),將經(jīng)典編譯理論與現(xiàn)代編譯技術(shù)有機(jī)地結(jié)合起來。例如,可以將嵌入式編譯器、分布并行編譯器、多核編譯器、可信編譯技術(shù)以及適應(yīng)新體系結(jié)構(gòu)及新一代計(jì)算機(jī)系統(tǒng)編譯器的研究及其研究結(jié)果迅速充實(shí)到“編譯原理”課程中。此外,還可以向?qū)W生介紹編譯技術(shù)在人工智能、并行計(jì)算、自然語言處理等領(lǐng)域里的具體應(yīng)用,為后續(xù)課程做好鋪墊。
3. 用實(shí)例演示來形象化抽象理論
學(xué)生學(xué)習(xí)“編譯原理”課程的最大困難是其抽象性,要獲得好的教學(xué)效果,就要形象化抽象理論。改革教學(xué)方法,提倡互動式、研討式 和案例式等教學(xué)方法。一方面,可以通過實(shí)例類比。例如,用自然語言的翻譯過程來類比編譯程序執(zhí)行高級程序設(shè)計(jì)語言的翻譯過程。另一方面,教師可以借助多媒體手段,把抽象的原理用動畫、圖像等形象化的方式展示,便于學(xué)生的理解。同時,還可以向?qū)W生推薦網(wǎng)上優(yōu)秀的“編譯原理”課程教學(xué)網(wǎng)站、電子書等資源,拓寬學(xué)生視野,培養(yǎng)和激發(fā)學(xué)生學(xué)習(xí)興趣。
4. 把握聯(lián)系,啟發(fā)學(xué)生積極思維
在教學(xué)過程中,充分考慮“編譯原理”課程與數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)組成原理、操作系統(tǒng)、算法分析與設(shè)計(jì)等先修課程之間的內(nèi)在聯(lián)系,并不斷深入和強(qiáng)化,以加強(qiáng)課程的系統(tǒng)性,培養(yǎng)學(xué)生的全局觀。同時還要把握編譯過程各個功能階段的內(nèi)在聯(lián)系與規(guī)律,有目的地設(shè)計(jì)問題,有意義地提出問題,通過問題把編譯原理中的理論難點(diǎn)、抽象概念引導(dǎo)出來。
設(shè)計(jì)和組織良好的實(shí)踐教學(xué)環(huán)節(jié)可以使“編譯原理”課程獲得良好的教學(xué)效果。現(xiàn)在很多高校都增加了實(shí)驗(yàn)學(xué)時,并獨(dú)立計(jì)算實(shí)驗(yàn)成績。我們在借鑒兄弟院校和國外經(jīng)驗(yàn)的基礎(chǔ)上,摸索出驗(yàn)證性實(shí)驗(yàn)加綜合設(shè)計(jì)性實(shí)驗(yàn)的2階段實(shí)驗(yàn)教學(xué)模式,各高校可根據(jù)自己的教學(xué)目標(biāo)和培養(yǎng)要求來選擇實(shí)施。
1. 驗(yàn)證性實(shí)驗(yàn)
這類實(shí)驗(yàn)主要是為配合配合課堂授課內(nèi)容,由教師按編譯原理授課順序,提供同步的若干驗(yàn)證性實(shí)驗(yàn)題目,讓學(xué)生逐個完成相關(guān)子模塊,逐步擴(kuò)大完善整個編譯程序。這樣循序漸漸地完成實(shí)驗(yàn),不僅增加了學(xué)生的成就感和自信心,而且使他們養(yǎng)成扎實(shí)的作風(fēng),使學(xué)練互動,激發(fā)學(xué)生學(xué)習(xí)興趣和積極性。而作為教師,則要做好組織、監(jiān)督和解惑工作,幫助學(xué)生解決編譯系統(tǒng)主要技術(shù)、算法的理解和設(shè)計(jì),引導(dǎo)學(xué)生從整體上把握編譯系統(tǒng)的結(jié)構(gòu)和各子系統(tǒng)之間的協(xié)調(diào)工作。
2. 綜合設(shè)計(jì)性實(shí)驗(yàn)
一定規(guī)模的綜合設(shè)計(jì)性實(shí)驗(yàn)訓(xùn)練是保證實(shí)踐教學(xué)效果必不可少的環(huán)節(jié)。我們可以讓學(xué)生以小組(由4~5名成員)為單位結(jié)合軟件工程課程實(shí)驗(yàn)的環(huán)節(jié)完成一個規(guī)模適度的編譯程序開發(fā)。在實(shí)際操做時,可根據(jù)驗(yàn)證性實(shí)驗(yàn)階段的情況,把學(xué)生分成不同層次的小組,由他們選擇適合自己水平的不同的實(shí)驗(yàn)題目。每組遵循完整的編譯器開發(fā)方式,融入軟件工程的思想,由大家推舉的組長分工、協(xié)調(diào)完成任務(wù)。這樣,不僅能讓每個學(xué)生體驗(yàn)從分析設(shè)計(jì)、編碼測試到交付維護(hù)的軟件開發(fā)全過程,還提高了他們的工程和團(tuán)隊(duì)意識以及開發(fā)大型軟件的協(xié)調(diào)結(jié)構(gòu)設(shè)計(jì)能力。實(shí)驗(yàn)結(jié)束時,教師要求學(xué)生以演示系統(tǒng)、答辯的方式公布實(shí)驗(yàn)成果,以便公正評分。
總之,“編譯原理”課程很好的體現(xiàn)了計(jì)算機(jī)專業(yè)課程的系統(tǒng)性、完整性、科學(xué)性和原理性,對培養(yǎng)學(xué)生的專業(yè)能力和提高他們的專業(yè)素質(zhì)起到關(guān)鍵的作用。在新環(huán)境和新形勢下,作為專業(yè)課教師,首先,我們要認(rèn)清“編譯原理”課程存在的必要性和重要性;其次,我們必須改革理論教學(xué)和實(shí)驗(yàn)教學(xué)的方法,激發(fā)學(xué)生學(xué)習(xí)興趣和積極性;最后,我們必須展開新編譯方法和新編譯技術(shù)的研究,并將研究結(jié)果迅速充實(shí)到“編譯原理”課程中。在計(jì)算機(jī)專業(yè)課程的教學(xué)道路上,我們?nèi)沃囟肋h(yuǎn)。
[1] 教育部高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)教學(xué)指導(dǎo)委員會. 高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)人才專業(yè)能力構(gòu)成與培養(yǎng). 北京:機(jī)械工業(yè)出版社,2010
[2] 霍歡,彭敦陸,張艷. “編譯原理”課程的教學(xué)研究[J]. 計(jì)算機(jī)教育2009(23):26-28
[3] 張昱,陳意云. 編譯原理課程實(shí)踐改革探索[J]. 計(jì)算機(jī)教育,2008(8):24-26
[4] 蔣宗禮. 談高水平計(jì)算機(jī)人才的培養(yǎng)[J]. 中國大學(xué)教學(xué),2005(9):24-27
[5] 楊海燕,史曉華,張莉.“編譯技術(shù)”實(shí)踐環(huán)節(jié)的質(zhì)量管理體系及實(shí)踐[J]. 計(jì)算機(jī)教育,2009(17):61-63
The New Teaching Thought of Compiler Principle’s Course
Zhang Yan
(School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology, Shanghai, 200093)
Compiler Principle is very necessary and important for the university students of Computer Science and Technology, especially for training their abilities and increasing their inner quality. This article introduces some new teaching methods and modes for the theoretic and experiment education of Compiler Principle. At last, this article draws the conclusion that the course of Compiler Principle is necessary and has a long wag to go.
Compiler Principle;ability training;course teaching
shlg201003