張永梅 杜治蓉 馬禮 束劼 楊建
關鍵詞:編譯原理;系統(tǒng)能力;實踐創(chuàng)新能力;課程改革;擴展實驗
0 引言
2021年國務院發(fā)布的《中華人民共和國國民經濟和社會發(fā)展第十四個五年規(guī)劃和2035年遠景目標綱要》指出要建設高質量教育體系,激發(fā)人才創(chuàng)新活力。2019年啟動國家中長期科學與技術發(fā)展規(guī)劃(2021-2035年),將培養(yǎng)和提高學生的系統(tǒng)能力作為提高計算機專業(yè)本科教學質量和水平的一個重要措施[1]。
編譯原理課程是計算機科學與技術專業(yè)的必修專業(yè)基礎課程,課程難度較大。編譯原理課程內容主要是講授原理性質,具有理論內容多,方法比較抽象,課程內容環(huán)環(huán)相扣的特點。編譯原理已經被廣泛應用于人工智能、自然語言理解及處理、搜索引擎等領域[2]。
編譯原理是一門理論性、技術性、實踐性很強的課程,理論和實踐相結合是課程的重要特色。北方工業(yè)大學開設的編譯原理相關課程包括編譯原理、編譯原理實踐課程。編譯原理課程主要介紹編譯系統(tǒng)的結構、工作流程及編譯程序各個組成部分的設計原理和實現(xiàn)技術,使學生掌握編譯過程中的相關原理和編譯技術。編譯原理實踐課程是使學生通過實踐,熟悉和掌握基本的編譯技術和方法,深化理解和靈活掌握教學內容,培養(yǎng)學生設計算法的能力和編程解決實際問題的動手能力。
編譯原理和編譯原理實踐兩門課程強化了學生的計算機系統(tǒng)能力[3]以及解決復雜工程問題的能力,有利于提高學生的實踐創(chuàng)新能力。目前,編譯原理、編譯原理實踐課程在培養(yǎng)學生的系統(tǒng)能力和實踐創(chuàng)新能力方面仍然存在不足,需要對編譯原理、編譯原理實踐課程進行改革,進一步提高學生的系統(tǒng)能力和實踐創(chuàng)新能力。
1 以系統(tǒng)能力和實踐創(chuàng)新能力培養(yǎng)為教學目標
教育部高校計算機科學與技術專業(yè)教指委強調,計算機學科的學生應該具備多項專業(yè)能力,即計算思維能力、程序分析與設計能力、算法分析與設計能力、計算機系統(tǒng)能力及創(chuàng)新能力[4]。文獻[5]指出編譯原理定位為以培養(yǎng)貫通軟硬件、具備系統(tǒng)能力和實踐創(chuàng)新能力的人才為課程教學目標,通過對標本科畢業(yè)能力指標點,逐步從知識型課程轉化為能力型課程。
北方工業(yè)大學編譯原理課程主要圍繞計算機系統(tǒng)中重要的系統(tǒng)軟件即計算機編譯程序的設計與實現(xiàn)而展開,使學生的專業(yè)基本技能和綜合運用能力得到提升,重點培養(yǎng)學生的計算機系統(tǒng)能力和實踐創(chuàng)新能力。編譯原理課程能夠幫助學生理解程序的運行機制。在編譯器的設計與實現(xiàn)過程中,學生需要掌握程序設計語言的詞法分析、語法分析、語義分析等基本原理,使學生能夠深入了解源程序在計算機內部如何執(zhí)行。通過編譯原理課程的學習,使學生可以深刻理解程序運行機制,這對于提高系統(tǒng)能力具有重要意義。
編譯原理課程能夠培養(yǎng)學生的問題解決能力。在編譯器的設計與實現(xiàn)中,學生需要面對各類挑戰(zhàn),例如處理復雜的語法結構、優(yōu)化程序等。這些挑戰(zhàn)要求學生具備良好的問題求解能力和創(chuàng)新思維,能夠找出問題的根源,并提出有效的解決方案。通過編譯原理的教學改革,有效提高學生的實踐創(chuàng)新能力。
2 編譯原理課程具體改革方法
編譯原理課程所含內容既有抽象的問題,又有較為成熟的理論[6]。除了編譯器涉及的相關理論、知識、技術之外,還包括基本問題求解的典型思路和方法,以及典型算法,是繼程序設計(C語言、C++等程序設計語言)、數(shù)據(jù)結構、操作系統(tǒng)等課程之后,從系統(tǒng)的角度再認識程序和算法的一門課程。該課程具有理論性強、綜合性強、連貫性強的特點。本文主要從改革教學內容、優(yōu)化教學方法、增加擴展實驗三個方面對編譯原理課程進行改革。
2.1 改革教學內容
將課程思政引入編譯原理課程教學中。目前國內編譯器核心技術缺乏,創(chuàng)新能力不足。在課堂教學中,強調編譯原理課程的重要性,引導學生樹立正確的學習方向,激發(fā)學生的愛國主義熱情,為實現(xiàn)系統(tǒng)軟件、系統(tǒng)結構和芯片的“中國造”而努力奮斗。
在編譯原理課程中,學生需要了解編譯程序的各個階段,包括詞法分析、語法分析、語義分析、優(yōu)化和代碼生成等。同時,學生還需要熟悉計算機體系結構的相關知識,了解指令集、寄存器、內存等硬件組成部分。只有具備這些知識,學生才能夠理解編譯程序的運行過程,并對其進行合理優(yōu)化。
北方工業(yè)大學編譯原理課程采用陳火旺院士等編寫的《程序設計語言編譯原理(第3版)》教材。在教學過程中引入國外編譯原理經典教材的內容。國外編譯原理經典教材分別為Alfred V. Aho等人編寫的《Compilers: principles, techniques, and tools》、AndrewW. Appel 編寫的《Modern Compiler Implementation inC》、Steven S. Muchnick編寫的《Advanced Compiler De?sign and Implementation》,這三本書在編譯原理領域分別被稱為“龍書”“虎書”“鯨書”。
在講授“引論”時,補充介紹“鯨書”中編譯器后端優(yōu)化的處理,加深學生對整個編譯系統(tǒng)的理解。在講授“屬性文法和語法制導翻譯”時,引入“龍書”中面向對象編譯、類型檢查等技術,提高學生高效編寫程序的能力。在講授“優(yōu)化”時,補充介紹“虎書”中數(shù)據(jù)流分析、循環(huán)優(yōu)化等內容,提升學生的系統(tǒng)能力。
在“引論”中,重點介紹編譯過程及編譯程序總體結構,使學生掌握基本的概念和系統(tǒng)的總體結構。強調編譯前端、編譯后端的相關概念,以及將編譯程序劃分成前端和后端的優(yōu)點,使學生在系統(tǒng)級上認識算法、系統(tǒng)的設計,具有把握系統(tǒng)的能力。
編譯原理課程涉及一些經典的算法和數(shù)據(jù)結構,例如詞法分析中的正則表達式匹配、語法分析中的LL(1)分析和LR分析等,這些算法和數(shù)據(jù)結構是計算機科學與技術領域中的重要基礎知識。通過深入講解這些知識和應用,提高學生的算法設計和分析能力,培養(yǎng)學生的創(chuàng)新思維和解決實際問題的能力。
目前,系統(tǒng)化教學主要缺乏課程間的溝通銜接。重構課程體系、梳理課程間的銜接是系統(tǒng)能力培養(yǎng)的基礎。在教學內容上,教師注重課程間的銜接,注重軟硬結合,強化系統(tǒng)。目標代碼生成對于培養(yǎng)學生的系統(tǒng)能力和實踐創(chuàng)新能力極為關鍵。目前,我國具備算法設計能力的人才較多,而具備系統(tǒng)軟硬件開發(fā)能力的人才較少。
為了培養(yǎng)這方面的人才,在講授目標代碼生成時,強調目標代碼生成涉及計算機底層硬件和體系結構的理解,不同硬件平臺的指令集、寄存器分配、內存管理等知識的掌握,同時涉及目標代碼優(yōu)化和大量的編程和調試工作。例如,在X86架構的計算機上生成目標代碼,該架構使用X86指令集,具有多個通用寄存器(如EAX、EBX、ECX、EDX等),以及一些特殊用途的寄存器(如棧指針寄存器、基址寄存器等)。為了高效生成目標代碼,編譯器利用這些寄存器存儲臨時變量、計算結果等,以充分利用計算機的寄存器。通過指令選擇優(yōu)化,充分利用指令系統(tǒng)的并發(fā)能力和向量指令集等特性。目標代碼生成涉及的尋址方式、指令系統(tǒng)等用到了匯編語言程序設計、微機原理與接口技術、計算機組成原理課程的知識。通過目標代碼生成進一步梳理課程之間的銜接,提高學生的系統(tǒng)能力。
在課堂上,介紹一些最新的編譯原理技術,如即時編譯技術、動態(tài)代碼生成技術,鼓勵學生嘗試探索新的編譯優(yōu)化方法和算法。學生不僅有機會深入了解編譯原理相關技術的前沿進展,還可以進一步思考如何改進和創(chuàng)新現(xiàn)有的編譯系統(tǒng)。這種培養(yǎng)創(chuàng)新意識的方法,激發(fā)了學生的創(chuàng)造力和創(chuàng)新潛能,提高了實踐創(chuàng)新能力。
此外,將人工智能、并行處理、大數(shù)據(jù)處理等前沿技術融入課堂,開闊學生視野,促進學生接觸前沿新技術,有利于提高學生的學習興趣和創(chuàng)新能力。例如,在講授“高級語言及其語法描述”時,引入自然語言理解。自然語言的分析和理解過程是一個層次化的過程,主要包括語音分析、詞法分析、句法分析、語義分析四個層次。將自然語言理解的相關內容引入課堂,并將自然語言分析和理解的層次化過程與編譯原理課程的0型文法、1型文法、2型文法、3型文法進行比較與分析,提高學生學習、理解和應用最新技術解決實際問題的能力。
2.2 優(yōu)化教學方法
編譯原理課程涉及“自上而下”和“自下而上”的系統(tǒng)設計方法,包括思想和方法。編譯系統(tǒng)是一個相當規(guī)模的系統(tǒng)的設計。編譯原理、編譯原理實踐課程有利于提高學生在系統(tǒng)級的理論和實踐能力。根據(jù)編譯原理課程特點,建立了“線上線下混合式”的教學方法,提供更靈活和多樣的教學方式,促進學生自主學習和計算機系統(tǒng)能力的培養(yǎng),提高編譯原理課程的教學效果。
課堂講授以能力培養(yǎng)為導向,建立學生為中心、教師為主導的課堂互動模式,激發(fā)學生自主學習的熱情與興趣。改進課程教學方法,充分利用MOOC、翻轉課堂等新型教學方式,制作圖文并茂的動畫等教學資源,將抽象的知識以動畫+講解的方式展示出來。梳理出編譯原理課程中知識結構及相互之間的關聯(lián)關系,并強調實踐的重要性。
注重講解各種計算機編譯程序設計原理和算法的思想。為保證教學質量,課堂講授中重點突出、點面結合,既保證學生接受完整的編譯原理課程知識體系結構的教學目標,又針對關鍵問題、重點內容進行詳盡、多引入實例的透徹講解,使學生真正領會和掌握課程的知識要領及技術要點。通過深入講解一些典型的編譯原理案例和實際應用,幫助學生將理論知識與實際問題相結合,提高學生在編譯原理領域的系統(tǒng)能力,培養(yǎng)學生分析和解決復雜問題的能力。
加強系統(tǒng)設計的案例教學,有利于解決學生知道算法卻不能構建完整系統(tǒng)的問題。通過一個C語言程序的編譯器實例,深入分析編譯原理中的詞法分析、語法分析、語義分析以及代碼生成等環(huán)節(jié),從而提高學生對編譯原理的系統(tǒng)理解和應用能力。
增加網(wǎng)絡資源的利用和網(wǎng)上討論,將線上、線下答疑貫穿整個教學過程,通過多種形式提高課程的教學效果和教學質量。例如,學生可以利用MOOC和國家精品課程等進行查漏補缺,推薦學生學習國防科技大學王挺教授等主講的國家精品課程“編譯原理”,該課程可以在嗶哩嗶哩平臺進行免費學習。網(wǎng)上討論主要通過微信問答的方式進行,提升學生學習效果。將課程講授內容、習題課課件、單元測試及答案分析等以PPT或Word等形式上傳到北方工業(yè)大學多模式教學網(wǎng)。北方工業(yè)大學通過智慧課堂直播平臺錄制了講課視頻,學生都可以免費下載,供學生在任何時間、任何地點自主學習。
2.3 增加擴展實驗
系統(tǒng)能力培養(yǎng)的關鍵在于實驗教學,并且實驗也是培養(yǎng)學生實踐創(chuàng)新能力的關鍵。在編譯原理和編譯原理實踐課程中,學生不僅需要掌握課本知識,還需要進行實際的編程實踐。在編譯原理實踐課程中,結合理論和學生水平,有針對性地布置實驗內容,系統(tǒng)而有效地訓練學生的軟件開發(fā)能力,達到理論與實踐的融會貫通。北方工業(yè)大學編譯原理實驗內容主要以詞法分析器、語法分析器的構造為主。通過編寫詞法分析器、語法分析器等程序,可以將理論知識應用到實際中,有效鍛煉學生的編程能力和解決問題的能力。
高效的詞法分析器、語法分析器構造與計算機硬件(存儲空間、寄存器、硬件加速器)有關。詞法分析器和語法分析器的構造,不僅僅是對編譯原理知識的進一步掌握,也是對硬件設計和優(yōu)化思維的訓練,引導學生學習如何將算法和數(shù)據(jù)結構映射到硬件實現(xiàn),優(yōu)化硬件設計以提高計算機性能。例如可以通過不同的數(shù)據(jù)結構如鏈表、棧、隊列等,優(yōu)化詞法分析器。在指導實驗時,引導學生在實驗過程中遇到問題時,通過分析和解決問題的方式,培養(yǎng)學生的解決問題的能力。
除了構造詞法分析器、語法分析器之外,給出了擴展實驗,供編程能力較強的學生自愿進行。例如,計算機博弈是人工智能領域的一個重要分支。擴展實驗為球類描述語言的詞法分析、語法分析實驗。主要考慮比賽需主、客隊同臺(場)競技。如沙灘排球、乒乓球、籃球、足球和網(wǎng)球等。這種球類比賽具有進攻/防守形成博弈、博弈雙方的技術動作具有相似性的特點??梢詫⑦@種比賽的相關技戰(zhàn)術描述抽象成如下形式:隊員+技術動作+技術動作發(fā)生區(qū)域+技術動作結束區(qū)域
根據(jù)球類比賽技戰(zhàn)術分析的需求,設計的解釋器由詞法分析器、語法分析器和語義分析模塊三部分組成。詞法分析器負責詞法分析的預處理和輸入單詞的解釋;語法分析器負責輸入碼的語法結構檢查和解釋;在詞法分析器和語法分析器的基礎上,語義分析模塊負責比賽技戰(zhàn)術的分類與統(tǒng)計工作。
3 改革成效
北方工業(yè)大學從計算機專業(yè)本科生開設編譯原理課程以來,圍繞編譯系統(tǒng)結構、工作流程及編譯程序各個組成部分,通過對課程理論知識、經典算法、新的研究成果進行講授,對教學內容進行更新,不斷優(yōu)化教學方法,以及完善實驗內容,編譯原理教學改革取得了積極成效,學生的成績、系統(tǒng)能力和實踐創(chuàng)新能力顯著提升。
2023年編譯原理課程卷面考試平均成績明顯高于2022年和2021年卷面考試平均成績,卷面考試平均成績逐年提高。2023 年的復雜題目相較于2021 年、2022年明顯不同,其對知識的融合度更高,對學生在復雜工程問題的解決過程中,能夠靈活應用所學編譯原理知識分析、設計出合理的方案,解決其他領域的相關問題的能力要求更高。這表明編譯原理課程的改革有效。
2018年,北方工業(yè)大學被遴選為第三批教育部高等學校計算機類專業(yè)教學指導委員會“計算機類專業(yè)系統(tǒng)能力培養(yǎng)試點高?!薄?022年,北方工業(yè)大學“計算機系統(tǒng)能力培養(yǎng)本科育人團隊”被評為北京高校優(yōu)秀本科育人團隊,進一步提高了北方工業(yè)大學計算機類專業(yè)學生的系統(tǒng)能力、實踐創(chuàng)新能力,提升了計算機類人才的培養(yǎng)質量。
此外,以創(chuàng)新競賽或項目進一步提升學生的實踐創(chuàng)新能力,激發(fā)學生的想象力、創(chuàng)新力和工程實踐能力,以賽促學、以賽促教。通過組織學生參加編譯原理相關的創(chuàng)新競賽或項目,進一步激發(fā)學生的創(chuàng)新思維能力,培養(yǎng)團隊合作和實踐創(chuàng)新能力。北方工業(yè)大學學生在2023全國大學生計算機系統(tǒng)能力大賽中獲得二等獎的好成績,實現(xiàn)了系統(tǒng)能力大賽零的突破。
在本科畢業(yè)設計方面,學生的系統(tǒng)能力和實踐創(chuàng)新能力明顯提高,畢業(yè)設計內容和方法具有較強的創(chuàng)新性,學生在應對新問題時,具備較強的分析問題和解決問題的能力。在就業(yè)方面,學生的計算機軟件、硬件應用能力和算法設計能力都有明顯提升,提高了學生的就業(yè)率。
4 結論
本文分析了培養(yǎng)學生計算機系統(tǒng)能力和實踐創(chuàng)新能力的編譯原理教學目標,從改革教學內容、優(yōu)化教學方法、增加擴展實驗三個方面對編譯原理進行了教學改革。從理論和實踐上全面提升學生的系統(tǒng)能力和實踐創(chuàng)新能力,以滿足未來智能時代社會的迫切需求。