999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

編譯原理工程化教學方法研究

2015-05-30 00:26:33聞炳海劉鵬王利娥張超英
大學教育 2015年2期
關鍵詞:教學方法

聞炳海 劉鵬 王利娥 張超英

[摘 要]《編譯原理》是計算機專業本科教學的一個難點。從教學理念出發,深入分析了教材、教學對象、教學目標、教學過程、鞏固與延伸等主題,提出編譯原理的工程化的教學方法。實際結合“語法分析”一章具體部署實施過程。該方法在實際教學過程中取得了比較好的效果。

[關鍵詞]編譯原理 教學方法 工程化教學

[中圖分類號] G642 [文獻標識碼] A [文章編號] 2095-3437(2015)02-0126-03

一、引言

編譯所要完成的主要任務是將高級語言編寫的程序翻譯成計算機能夠理解的機器語言。現代編譯程序所要面對的經常是幾十萬、幾百萬行的大程序,在編譯原理的研究過程中形成了大量的概念、理論和算法,這直接造成了編譯原理這門課很難學。現在,編譯原理課程是計算機專業的學生公認的本科階段最難的課程之一,許多學生覺得編譯原理難以掌握。本文將工程化的方法引入編譯原理的教學過程中,通過一系列措施將編譯原理的學習過程簡單化、規范化,達到讓學生學好編譯原理的目標。

二、教學理念

所謂工程化教學是指在教學過程中引入工程的概念,使教學過程有明確的時間安排,有遞進的階段目標,有可以量化的指標,像管理工程項目一樣對教學作全程控制。我們要打造工程化的教學過程,通過選擇合適的教材、詳細考察學生情況、精心組織教學內容、合理安排課后作業、設定逐步提高的開發目標,將學生引入一個可以量化的學習過程中。計算機科學有很強的理論背景,編譯原理更以邏輯嚴密、算法枯燥著稱。要求我們在教學過程中做到精簡講解、深入淺出,抓住理論的本質講清楚。同時,計算機學科強調實踐性教學,編譯原理課程更是圍繞著實際應用而展開的。要求我們在教學過程中激勵學生動手,重視實驗和課后鍛煉,讓學生掌握實際運用能力。我們提出了 “精簡理論、加強實踐”為中心思想的教學理念,掌握理論、動手實踐是學好編譯原理的不二法門。

三、教材和內容

我們選擇的主講教材是清華大學的張素琴教授主編的《編譯原理》,這是目前國內應用最廣泛的教材,發行量達到20余萬冊。我們選擇的輔助教材是貝爾實驗室的Alfred等編寫的《編譯原理技術與工具》,這是一本世界著名的編譯原理教材,在編譯原理領域有很高的聲譽。因為封面畫了一條龍,所以被大家親切地稱為“龍書”。主講教材以理論分析為主,內容清晰,邏輯嚴謹;輔助教材有很好的實踐內容,引導學生實際動手設計編譯程序。兩本教材風格互補,在章節編排上有很好的對應關系,便于在教學中結合使用。下面就以“語法分析”一章為例,介紹一下我們設計的工程化教學過程。教材上“語法分析”一章主要內容包括:LL(1)文法定義、文法判別算法、確定自頂向下分析、遞歸子程序法等。我們給出了一些補充內容,包括分析典型的源代碼、自己開發的Yacc范例、自己開發的表達式語法分析程序等部分。通過這些案例的分析,讓學生在理論學習的基礎上學習如何將理論應用到實際開發,并熟悉流行的編譯輔助工具軟件的使用。

四、學生情況分析

編譯原理這門課是為計算機專業本科三、四年級的學生開設的。學生在學習編譯原理之前已經學過多種編程語言,如VB、VC、Java、Delphi、Html。但是一個普遍的情況是“多數學生沒有認真思考過,編譯程序的原理和開發方法”。學生不知道這些編譯軟件是如何設計出來的,更不知道不同編譯程序背后的理論依據。學生會感覺到編譯原理很神秘。而且編譯原理“難”聲在外,一些學生對編譯原理有畏懼心理。這是學生學習《編譯原理》的心理難點。我們要解決的問題是:如何為學生樹立學好編譯原理的信心?《編譯原理》這門課程比較獨立,理論自成體系,其他先修課程很少涉及編譯方面的內容。教材內容定義多,概念抽象,形式化的描述難以理解;算法多,步驟復雜,計算量大,學生很容易陷入細節問題不能自拔,產生困難和厭學心理。這些情況造成學生不容易接受編譯原理內容,上課時容易產生惰性心理。這是學生學習《編譯原理》的理論難點。我們要解決的問題是:如何讓學生把理論學明白、會運用?《編譯原理》的理論學習尚且不易,設計編譯程序更是一項非常復雜的工程,涉及多方面內容,學生的編程經驗不足以開發一個簡單的編譯程序,經常會感覺不知從何入手。這是學生學習《編譯原理》的技術難點。我們要解決的問題是:如何引導學生動手實踐,給同學們找到一個很好的切入點?同時,我們觀察到,學生主觀上又想學好編譯原理。因為著名的編譯高手設計了學生每天使用的編譯程序,比如設計了C語言的Ritchie &Thompson、設計了C++語言的Bjarne Stroustrup、設計了Java語言的James Gosling、設計了C#語言的Anders Hejlsberg等等,這些傳奇式的編譯高手受到學生們的廣泛推崇。學生耳聞目染知道編譯原理的重要性,對編譯程序的開發感到好奇。這些都是我們引導學生學習的有利因素。在教學過程的設計當中,我們針對這些教學難點安排教學內容和教學方法,注意幫助學生克服困難,培養學生的學習興趣。

五、教學目標和重點

結合這一章的內容,我們制定了四個遞進的教學目標和三個教學重點。教學目標包括對教材內容的掌握和學習補充延伸的內容。第一,掌握教材上的基本原理。包括文法的FIRST集、FOLLOW集和SELECT集的定義和計算方法、LL(1)文法的定義和判別算法、確定自頂向下分析、遞歸子程序法等內容。這些基本理論學生必須要掌握。第二,學習使用語法分析自動生成工具。為學生介紹現在被廣泛使用的工具軟件Yacc。通過我們自己編寫的Yacc程序范例,讓學生掌握Yacc的結構和用法。第三,掌握經典的語法分析的源代碼。通過分析PL / 0語言的語法分析源代碼,讓學生了解語法分析的經典實現。第四,引導學生動手實現語法分析器。引導學生對Yacc代碼和PL / 0語法分析代碼作個性化的修改和功能添加。通過這四個逐步深入的教學目標,引導學生不斷深化學習。教學重點包括了這一章的三個重要的定義和理論。第一,LL(1)文法的定義。這個定義包括First集、Follow集和Select集三個前導定義,每個定義都是一段形式化的描述,要求講課時要講清楚形式化定義的本質。第二,LL(1)文法的判別算法。算法包括五個步驟:1.求出能推出ε的非終結符;2.計算First集;3.計算Follow集;4.計算Select集;5.判定是否是LL(1)文法。其中每個步驟又是一個獨立的算法。整個算法比較冗長,教材上用了六頁描述該算法。我們要用特別的方法讓學生學習和掌握。第三,語法分析的遞歸子程序法。遞歸子程序法的思想是對LL(1)文法中每個非終結符編寫一個遞歸過程,識別由該非終結符推出的符號串。PL / 0語法分析模塊就是采用遞歸子程序算法實現的。在分析PL / 0語法分析模塊的基礎上,我們還引導學生動手開發自己的語法分析程序。

六、教學過程

下面詳細介紹教學過程的安排,共分為六個步驟。第一步:提出問題,引發學生去思考。編譯的任務是將高級語言編寫的程序翻譯成計算機能夠直接理解的機器語言,這個翻譯過程不是一步完成的。編譯程序在進行真正的翻譯和生成目標代碼之前,首先要從結構上把握源程序。語法分析的任務就是從結構上分析程序,保證源程序語法結構正確并分析得到程序的各個語法成分。讓我們考慮一個簡單的例子,老師是如何判斷小學生所造的句子語法結構上是否正確?比如,“我是學生”,我們說這個句子是語法結構正確的。那是因為我們可以將這個句子分為三部分,“我____是____學生”,每一部分正確的對應了“主語____謂語____賓語”三種語法成分,所以我們說這個句子是語法正確的。那么,編譯程序是如何對源程序做語法分析的呢?比如,“if i<10 then n=0 else n=1”,這個簡單的程序語句。編譯程序首先從中分析出關鍵字“if、then、else”,然后分析出表達式“i<10、n=0、n=1”,表達式和關鍵字按正確的形式排列,所以這是一個語法結構正確的語句。實際應用的編譯程序是能夠處理幾百萬行代碼的大程序,它的語法分析方法當然更復雜,比如這一章所涉及的LL(1)文法、遞歸子程序法、預測分析法等,都很復雜。但是,他們都是建立在這樣一個簡單的基本概念之上的,語法分析就是從“結構上分析程序”。在這里我們運用“先行組織者”原理,提出問題,舉出范例,引導學生去思考語法分析方法。第二步:精簡講解,抓住理論的本質。例如教材上Follow集的定義為:設G=(VT,VN,S,P)是上下文無關文法,A∈VN,S是開始符號,#是輸入串的結束符(輸入串括號),FOLLOW(A)={a|S*→μAβ且a∈VT,a∈FIRST(β),μ∈VT*,β∈V+},若S *→μAβ且β→ε,則#∈FOLLOW(A)。學生很難從這樣形式化的描述中看懂Follow集的到底是用來干什么的。我們在上課的時候就要講清楚,Follow集就是用來考察“非終結符能夠以哪些字符為后繼”這樣一個簡單的本質。抓住本課程定義抽象,實際應用簡單的特點,讓學生認識到編譯原理其實很簡單。第三步:小題多練,采用搭積木的方式學習。教材上用了6頁來講解LL(1)文法的判別算法,如果直接將一道習題交給學生去完成,學生顯然難以接受。在講課的時候,我們先講算法結構,然將一個大題分為幾個階段的小題,穿插演練,最后組成一個完整的解題過程。讓學生體會到雖然整個算法十分冗長,但是每一步都很簡單。第四步:互動教學,讓學生積極參與。課堂教學過程中要鼓勵學生提出想法和思路,盡可能對學生的發言給予肯定的評價,要密切注意學生的反饋信息,有針對性地講解關鍵知識點。要讓學生積極參與教學過程,跟上我們的講解思路,盡量消除學生上課的惰性心理。第五步:分組作業,降低學生的困難感。將全班同學劃分為幾個小組,每組5至7名同學。對于同一個主題,不同小組可以選擇不同方向。比如設計C語言文法,可以化為幾個子集讓不同小組實現,也可以不同小組完成不同任務,然后互相討論學習。將理論基礎好、動手能力強的同學分配到各個小組,以先學帶動后學,降低學生的學習困難感,避免動手能力差的同學失去信心。第六步:實際運用,DIY自己的語法分析器。給學生布置一些遞進的實踐項目,比如“設計最簡單的四則運算的語法分析器”、“學習用YACC設計C語言語法分析器”、“學習用C語言實現一個簡單的語法分析器”等。由簡單到復雜,把課堂講授、實驗課和課后鍛煉有機地結合起來。以上就是我們教學方法的六個主題:提出問題、精簡講解、小題多練、互動教學、分組作業、實際運用。從理論學習到動手實踐,有針對性地解決學生學習時所遇到的一系列問題,為學生打造一個循序漸進、深入淺出的完整學習過程。

接下來我們以語法分析為例,介紹一下如何引導學生動手實踐語法分析理論。第一,一步一步教學生如何用Yacc創建語法分析項目,詳細介紹每個步驟的含義。第二,一步一步教學生配置VC環境用于語法分析項目的編譯,詳細每個環境參數的作用。學生在實踐的時候遇到的最主要的困難就是如何使用工具軟件,我們通過詳細的講解幫助學生邁出語法分析的第一步。第三,用簡單的例子講解Yacc的結構和用法,讓學生體會語法分析其實不神秘。第四,把我們自己寫的文法范例在課堂上和同學們一起編寫、調試、運行,實時展現不同文法分析的結果。第五,將我們自己用C語言開發的表達式語法分析程序作為補充練習,讓學生去修改、添加功能,體會語法分析的思路。整個過程充分考慮了學生的能力培養,難度逐步加大,階段目標明確,便于在教學過程中實施。

七、教學效果

在實際教學過程中,編譯原理的工程化教學方法取得了較好的教學效果,學生保持較高的學習積極性,學生評教一直保持較高的分數。在課堂上,學生能夠積極的參與教學過程,把握知識脈絡并掌握知識點;在課余時間里,學生能夠較好的完成作業并進行探索和學習。通過系統的學習編譯原理,學生對軟件開發有了深入認識,了解了程序優化和并行計算的方法和重要性,為編寫高效、高質量的代碼打下了基礎。此外,本文第一作者以“編譯原理的工程化教學”為主題參加廣西師范大學第三屆“青年教師說課比賽”,獲得了理科組第一名的好成績;并指導本科生以“基于泛型編程的編譯器研究”為題目申請并獲得廣西師范大學創新性實驗基金資助。

八、結語

在整個教學過程中,我們首先幫助學生端正學習態度,破除《編譯原理》難學的迷信。然后采用精簡講解、小題多練等方式,讓學生體會理論并不深奧。在理論學習的基礎上,引導學生動手實踐,設計由易到難的實踐項目,在此過程中打造屬于同學們自己的編譯程序,培養學習成就感。最終達到懂得理論、學會設計、學好《編譯原理》這個總目標。作為教學的鞏固與延伸措施,我們會引導同學做更多的實踐。比如C語言的語法分析、SQL語言的語法分析、嘗試使用C++的Boost.Spirit開發包等等。同時,和學生一起參與開發過程,用電話、Emai等方式與同學保持密切聯系,及時解答同學們學習過程中遇到的問題。不但要讓學生學懂理論、學會運用,更要讓學生記得牢固。

我們將整個教學過程看作是一個工程項目,將工程中目標明確、量化管理的特點引入到編譯原理的教學過程中,收到了比較好的教學效果,也受到了學生的歡迎。

[ 參 考 文 獻 ]

[1] 張素琴,呂映芝,蔣維杜,戴桂蘭.編譯原理[M].北京:清華大學出版社,2007.

[2] Alfred等著,李建中等譯.編譯原理技術與工具[M].北京:機械工業出版社,2003.

[責任編輯:黃緊德]

猜你喜歡
教學方法
初中英語寫作教學方法初探
甘肅教育(2020年2期)2020-09-11 08:01:42
教學方法與知識類型的適宜
數學復習教學方法
高中體育教學方法初探
學周刊(2016年23期)2016-09-08 08:57:30
淺談高等數學中教學方法的創新
實用型中醫人才培養中慕課教學方法的探討
文言文教學方法實踐初探
中學語文(2015年21期)2015-03-01 03:52:15
高中文言文教學方法之我見
中學語文(2015年21期)2015-03-01 03:52:15
初中數學教師不可忽視的幾種教學方法
散文百家(2014年11期)2014-08-21 07:17:18
語文閱讀教學方法略談
主站蜘蛛池模板: 88av在线播放| 午夜无码一区二区三区| 99伊人精品| 88av在线| 91小视频版在线观看www| 亚洲欧美日韩中文字幕在线一区| 青青国产视频| 国产呦精品一区二区三区下载| 91国内视频在线观看| 最新国产在线| 成人亚洲视频| 免费一级成人毛片| 欧美a在线| 午夜激情福利视频| 欲色天天综合网| 日韩视频福利| 亚洲高清中文字幕| 国产乱人激情H在线观看| 国产欧美日本在线观看| 91丝袜乱伦| 91福利免费视频| 99re这里只有国产中文精品国产精品| 国产精品无码久久久久AV| 99精品福利视频| 少妇精品久久久一区二区三区| 精品三级在线| 精品视频一区在线观看| 亚洲一区二区三区麻豆| 欧美精品另类| 久久久亚洲国产美女国产盗摄| 婷婷六月综合网| 国产欧美在线观看精品一区污| 97超级碰碰碰碰精品| 国产日本一区二区三区| 国产精品污视频| 日本91在线| AV无码一区二区三区四区| 国产后式a一视频| 日韩精品一区二区三区中文无码| 亚洲香蕉久久| 国产免费怡红院视频| 好紧太爽了视频免费无码| 亚洲男人在线天堂| 日韩一区精品视频一区二区| 手机在线国产精品| 国产乱视频网站| 国产亚洲精品自在久久不卡 | 日韩毛片免费| 午夜限制老子影院888| 国产特级毛片| 色婷婷亚洲综合五月| 国产成人精品亚洲77美色| 亚洲视频色图| 久久久久亚洲Av片无码观看| 日韩A级毛片一区二区三区| 91成人免费观看| 97人人做人人爽香蕉精品| 波多野结衣在线se| 欧美精品综合视频一区二区| av一区二区三区在线观看| 中文成人无码国产亚洲| 欧美成人精品一级在线观看| 丰满少妇αⅴ无码区| 中文一区二区视频| 亚洲香蕉久久| 欧美国产中文| 黄色网在线| 中文字幕第4页| 97se亚洲| 亚洲国产成人久久精品软件| 亚洲黄色成人| 久久黄色一级视频| 国产欧美精品专区一区二区| 国产精品亚洲va在线观看| 国产精品免费电影| 麻豆国产精品| 日本三级精品| 天天综合网色| 一级毛片无毒不卡直接观看| 天天综合网色| 欧美成人一级| 夜夜拍夜夜爽|