孫守卿
摘要:《編譯原理》是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的與計(jì)算機(jī)專業(yè)的主干課程,具有理論性強(qiáng)、內(nèi)容抽象等特點(diǎn)。根據(jù)梅瑞爾首要教學(xué)原理 , 結(jié)合編譯原理的課程內(nèi)容以“解決問題”為核心,通過喚醒舊知、展示新知、應(yīng)用新知、歸納總結(jié)、融會貫通五個階段完成編譯原理課程中語法分析的教學(xué)過程,取得了良好的教學(xué)效果。
關(guān)鍵詞:梅瑞爾首要教學(xué)原理;編譯程序;語法分析;語法分析樹;上下文無關(guān)文法
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)32-0177-02
Abstract: The Principles of Compilers Course is the a major course of computer science and technology ,and this course is characterized by strong theory and abstract content. According to the First Principles of Instruction, the course content takes "problem solving" as the core, and completes the teaching process of grammar analysis in the course of compiling principle by awakening the old knowledge, displaying the new knowledge, applying the new knowledge, summarizing, and integrating through five stages ,it is showed that the First Principles of Instruction is effective in guiding teaching design.
Key words:Merrill's First teaching principle; computer compiler; syntax analysis ; syntax tree; context- free grammar
1 引言
《編譯原理》作為計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的專業(yè)基礎(chǔ)課具有抽象性強(qiáng)、邏輯性高、偏理論性等特點(diǎn),因此學(xué)生理解起來相對困難。同時該課程又具有很強(qiáng)的綜合性,要求學(xué)生具備計(jì)算機(jī)組成原理、高級語言程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)等課程的知識。
本文以首要教學(xué)原理為依據(jù),對《編譯原理》課程的核心知識點(diǎn)語法分析進(jìn)行了研究性教學(xué)實(shí)踐。
2 五項(xiàng)首要教學(xué)原理
五項(xiàng)首要教學(xué)原理是戴維·梅里爾(M. David Merrill)教授總結(jié)了行為主義、認(rèn)知主 義、構(gòu)建主義等諸多學(xué)習(xí)理論,在2002 年提出來的重要教學(xué)原理。該原理以最終促進(jìn)學(xué)習(xí)者學(xué)習(xí)為目的,提出:(1) 當(dāng)學(xué)習(xí)者介入到解決現(xiàn)實(shí)生活 中的問 題時 , 才能促進(jìn)學(xué)學(xué)習(xí) 。(2) 當(dāng)激活已有的 知識且作 為新學(xué) 習(xí) 的基礎(chǔ)時 , 才能促進(jìn)學(xué) 習(xí) 。(3) 當(dāng)向?qū)W 習(xí)者展示新知識時 , 才能促進(jìn)學(xué)習(xí) 。(4) 當(dāng)學(xué)習(xí) 者具體應(yīng)用新知識 時 , 才能促進(jìn)學(xué) 習(xí) 。(5) 當(dāng)新 知識 整合 到學(xué) 習(xí)者實(shí)際 生 活 中時 , 才 能 促 進(jìn)學(xué) 習(xí)。[1]
3 五項(xiàng)首要教學(xué)原理在教學(xué)實(shí)踐中的應(yīng)用
根據(jù)五項(xiàng)“首要教學(xué)原理”的內(nèi)容, 主要從導(dǎo)入知識、激活舊知、展示新知、嘗試應(yīng)用和融會 貫通等以下幾個具體方面將其運(yùn)用到教學(xué)實(shí)踐中。
“自頂向下的語法分析”在課程導(dǎo)入部分,通過布置導(dǎo)學(xué)任務(wù),讓學(xué)生了解要學(xué)習(xí)的課程內(nèi)容必需的預(yù)備知識,通過之前學(xué)習(xí)過程中遇到的問題激發(fā)學(xué)生的學(xué)習(xí)興趣;在激活舊知識階段,結(jié)合課程內(nèi)容,將與此相關(guān)的《程序設(shè)計(jì)基礎(chǔ)》《離散數(shù)學(xué)》等課程的知識點(diǎn)與新內(nèi)容進(jìn)行知識的拓展和遷移;在展示新知識階段,以LL(1)文法為例,以語法分析樹為工具,講解First集、Follow集、Select集等概念;在嘗試應(yīng)用階段,以小組為單位,結(jié)合遞歸下降分析法和確定的預(yù)測分析法實(shí)現(xiàn)C語言的語法分析程序,進(jìn)行知識的融會貫通。
3.1 知識引入階段
根據(jù)梅里爾的理論,當(dāng)學(xué)習(xí)者介入到解決生活實(shí)際問題 時,學(xué)習(xí)才能夠得到促進(jìn)。因此,在課程講授過程中,教學(xué)內(nèi) 容是否能夠在聯(lián)系現(xiàn)實(shí)問題的情境中加以呈現(xiàn)是關(guān)鍵 所在。
因此,為了激發(fā)學(xué)生的學(xué)習(xí)興趣,在引入課程內(nèi)容前,發(fā)放導(dǎo)學(xué)任務(wù)單讓學(xué)生完成如下任務(wù):
1) 列舉C 語言 的語法要求
2) 列舉C語言編譯過程中常見的語法錯誤信息
通過完成課前的資料整理和閱讀,大多數(shù)的學(xué)生能夠?qū)σM(jìn)行講解的知識點(diǎn)有了一個初步的認(rèn)識。學(xué)習(xí)者就會了解編譯程序的語法分析,就是根據(jù)程序語言的語法規(guī)則,對源程序進(jìn)行語法分析,如果源程序不符合語言的語法規(guī)則,就通過調(diào)用出錯處理程序,給出相應(yīng)的出錯信息。
只有學(xué)生對具體的源程序的語法規(guī)則有了一定的了解,才會理解課程中抽象的語法規(guī)則。學(xué)生通過平時編譯C程序遇到的出錯信息,才會對編譯過程中的語法分析的任務(wù)有了一個具體的認(rèn)識。學(xué)生就會對編譯程序如何完成語法分析產(chǎn)生了興趣。
3.2 激活舊知識,遷移理解新知識
當(dāng)以往相關(guān)的知識和經(jīng)驗(yàn)被激活時, 學(xué)習(xí)才能夠得到促進(jìn)。
在講授語法分析之前,結(jié)合形式語言的文法知識,詳細(xì)介紹描述程序語言的語法規(guī)則的文法—上下文無關(guān)文法。對于大多數(shù)學(xué)生而言,形式語言文法是很抽象的內(nèi)容,可以在該階段,引導(dǎo)學(xué)生回憶《離散數(shù)學(xué)》課程中“集合”的概念,讓學(xué)生從形式語言的角度認(rèn)識到符號和符號串的關(guān)系,理解符號串的連接運(yùn)算,理解空串ε,引導(dǎo)學(xué)生可以從代數(shù)系統(tǒng)的角度,空串ε相當(dāng)于單位元素。程序設(shè)計(jì)語言就是符合某些規(guī)則的符號串的集合。
在上下文無關(guān)文法的引入前,以學(xué)生熟悉的英語語法入手,以自然語言的句子分析為例,開始語法分析的講解。從而消除學(xué)生對新知識的陌生感。而且也建立了新舊知識之間的聯(lián)系,使舊知識成為學(xué)習(xí)新知識的基礎(chǔ)。
3.3 知識展示新知
只有教學(xué)展示論證了所學(xué)的新知識而不 是僅僅告知相關(guān)的信息時,學(xué)習(xí)才能夠得到促進(jìn)。
因此,在講授自頂向下語法分析的時候,要避免從概念到概念的注入式教學(xué)方式,在該部分的講授過程中,借助語法分析樹為主要工具,將自頂向下語法分析中的主要問題,如:回溯問題,左遞歸問題,以非常形象的方式呈現(xiàn)給學(xué)生。通過啟發(fā)式教學(xué),對候選產(chǎn)生式的選擇進(jìn)行提問,對候選式的結(jié)構(gòu)特點(diǎn)進(jìn)行提問,引導(dǎo)學(xué)生自己發(fā)現(xiàn)問題,自己嘗試解決問題的辦法。
在講解的過程中,通過LL(1)文法和非LL(1)文法進(jìn)行對比分析,充分利用多媒體手段,將語法分析樹的分析過程動態(tài)化,將每一步的分析過程一點(diǎn)點(diǎn)呈現(xiàn)在學(xué)生面前,學(xué)生也會不自覺地將自己畫的語法樹和課件中展示的語法樹進(jìn)行對比,主動參與到教學(xué)活動中來,在這個互動的過程中,加強(qiáng)了學(xué)生對LL(1)文法的理解。
在此基礎(chǔ)上,由回溯問題,可以引入First集的定義,繼而Follow集和Select集的定義,引導(dǎo)學(xué)生逐步掌握知識要點(diǎn)。
3.4 知識引入課堂練習(xí)
在課程講授過程中,學(xué)習(xí)者是否 有機(jī)會練習(xí)和應(yīng)用他們剛剛理解的知識可以有效促進(jìn)學(xué)生學(xué)習(xí)。當(dāng)學(xué)生掌握 了語法分析的要點(diǎn)后,開展鞏固練習(xí)。練習(xí)題的難度先易后難,采取遞進(jìn)式的方式給學(xué)生,以滿足不同層次的學(xué)生需要。鼓勵學(xué)生根據(jù)所學(xué)到的文法,嘗試解決其他形式的文法。在練習(xí)的過程中,及時發(fā)現(xiàn)學(xué)生解題中的問題,及時糾正。與此同時,接受能力稍慢的學(xué)生也可以及時進(jìn)行提問,教師也可以有機(jī)會進(jìn)行單獨(dú)輔導(dǎo)。通過反饋和指導(dǎo),增強(qiáng)學(xué)生的思維 能力,強(qiáng)調(diào)學(xué)生對解 決問題的方法與技能的自我理解,自我掌握,強(qiáng)調(diào)學(xué)生的 個人感受和獨(dú)特見解。
3.5 知識融會遷移
遷移是已學(xué)過的東西在新 情境中的應(yīng)用。學(xué)生能將所學(xué)到的語法分析學(xué)習(xí)知識運(yùn)用到解決新問題 的情境中,就會產(chǎn)生觸類旁通、舉 一反三的學(xué)習(xí)效能。
對于語法分析中抽象的概念和復(fù)雜的算法,如果學(xué)生只停留在對知識的記憶和理解方面是不夠的,需要學(xué)生在實(shí)踐中深入理解并掌握語法知識和相關(guān)算法。
因此,在語法分析的實(shí)驗(yàn)過程中,將學(xué)生分組,以小組合作的單位,采取任務(wù)驅(qū)動的形式,布置小組完成一個小的編譯程序的語法分析過程。
項(xiàng)目內(nèi)容:從文件中讀入文法,從鍵盤上輸入待分析的符號串,采用 LL(1)分析算法判斷該符號串是否為該文法的句子
文法要求:文法為LL(1)文法
實(shí)現(xiàn)方式:預(yù)測分析程序
通過語法分析程序的設(shè)計(jì)及實(shí)現(xiàn),促使學(xué)生“在做中學(xué)”“在做中發(fā)現(xiàn)問題”,學(xué)會把理論知識應(yīng)用到實(shí)際的語言分析中,增強(qiáng)對知識實(shí)用性的認(rèn)識。并且在分組完成任務(wù)的過程中,學(xué)生也可以將軟件工程、程序設(shè)計(jì)基礎(chǔ)等課程的專業(yè)知識進(jìn)行擴(kuò)展應(yīng)用。
4 結(jié)束語
以五項(xiàng)首要教學(xué)原理指導(dǎo)的“編譯原理”課程教學(xué)實(shí)踐過程中,充分體現(xiàn)出學(xué)生 是學(xué)習(xí)的主體,而教師則扮演著學(xué)習(xí)的組織者、引導(dǎo)者的角色。在教與學(xué)的過程中,充分激發(fā)學(xué)生學(xué)習(xí)本門課程的學(xué)習(xí)興趣,提高學(xué)生學(xué)習(xí)的主動性和積極性,努力培養(yǎng)學(xué)生的信息收 集與加工能力、抽象思維能力、綜合概括能力、從根本上改變學(xué)生被動學(xué)習(xí)的狀況,提高了教學(xué)效果,使學(xué)生達(dá)到重視 研究性學(xué)習(xí)、協(xié)作學(xué)習(xí)、自主學(xué)習(xí)、獨(dú)立思 考的目的。
參考文獻(xiàn):
[1] 梁雪松.基于五項(xiàng)首要教學(xué)原理指導(dǎo)的教學(xué)方法再探究 [J]. 現(xiàn)代教育科學(xué),2011(4):17-21.
[2] 陸一琳.基于五項(xiàng)首要教學(xué)原理的微課教學(xué)設(shè)計(jì)淺探[J]..教育理論與實(shí)踐,2017(36):43-45.
[3] Merrill M D. First Principles of Instruction [J].Educational Technology Research and Development, 2002(3):43-59.
[4] M.戴維.梅里爾.首要教學(xué)原理[M].盛群力,譯.福州:福建教育出版社,2016:18-46.
[5] 孫素環(huán),趙長偉,孔功勝.首要教學(xué)原理在計(jì)算思維能力培養(yǎng)中的應(yīng)用[J].閩西職業(yè)技術(shù)學(xué)院學(xué)報,2012(14):82-85
【通聯(lián)編輯:王力】