左新娥 呂志凌 黃卓冕
(湖南工業大學 計算機與通信學院,湖南 株洲 412007)
【摘 要】編譯原理作為計算機專業的傳統核心課程,具有理論性強、系統性強、實踐性強等特點,在編譯原理課程教學中,通過計算機專業知識的融會貫通來實施學生專業能力和素質的培養具有重要意義,文章從專業能力和專業素質培養的視角探討編譯原理課程的教學,以期不斷提高教學質量。
【關鍵詞】編譯原理;專業能力;專業素質
【中圖分類號】TP314-4 【文獻標識碼】A 【文章編號】1674-0688(2016)07-0168-03
0 引言
高等教育為國家的現代化建設培養人才,《中華人民共和國高等教育法》規定,本科教育應當使學生比較系統地掌握本學科、專業必需的基礎理論、基本知識,掌握本專業必要的基本技能、方法和相關知識,具有從事本專業實際工作和研究工作的初步能力[1]。這項規定要求本科學生學習一門課程,不僅僅是對該門課程所含內容的學習、研究和設計,更為重要的是培養學生的專業能力和專業素質。專業能力和專業素質在學生的可持續發展及創新精神與能力的形成中具有至關重要的作用。筆者認為,大學本科計算機專業的學生,作為接受專業教育的專業人才,除了應該具備最基本的獲取知識與信息的能力、良好的溝通與表達能力、自學能力、創新能力、團隊合作能力、綜合應用知識能力等之外,還應擁有計算思維、算法設計與分析能力、優秀的編碼能力、系統項目實施能力等專業能力和專業素質。
1 編譯原理在計算機學科中的重要地位及教學現狀
國內高校最早于20世紀70年代末開設編譯原理課程,該課程經過40余年的發展和改革,現已成為國內大部分高校計算機科學及相關專業的一門專業必修課,是計算機學科的核心課程。編譯原理旨在介紹編譯程序構造的一般原理、基本設計方法、主要實現技術和一些自動構造工具,具有理論性強、系統性強、實踐性強等特點[2]。編譯原理被公認為高年級計算機專業課程中最難學的課程之一,它所涉及的形式語言與自動機理論是計算機科學理論的重要基礎,可以讓學生領悟到計算機理論的精髓,培養學生的抽象思維能力和形式化描述能力,培養計算思維;編譯程序的構造原理和技術是計算機科學技術中理論和實踐相結合的一個最好典范,它要求學生能夠從系統的全局出發去看待、分析、解決問題,在軟件工程的指導思想下,通過計算機專業知識的融會貫通完成一個小型編譯器的開發,能夠多角度地提高學生的邏輯思維能力、綜合應用知識能力及學生編程調試、系統項目實施等實踐動手能力,切實有效地提高學生的專業能力和專業素質。
雖然編譯原理課程在計算機學科中占有如此重要的地位和作用,然而從湖南工業大學計算機與通信學院歷屆學生的教學反饋情況來看,很多學生并沒有獲得理想的學習效果,大部分學生認為編譯原理課程枯燥、抽象、復雜,課程各章節內容密切連貫,同時又涉及眾多專業課程的綜合應用,這些都與該校目前純理論的授課方式、壓縮的理論課時形成鮮明的反差。再者有的同學認為,現在有很多優秀的編譯器前端和后端可直接采用,只要自己以后不從事編譯系統的研究和開發或者計算機科學理論的研究,就無所謂學不學得好這門課程了,甚至一部分同學認為學校可以將該課程從人才培養計劃中刪除。因此,怎樣定位編譯原理課程的教學指導思想,提高學生的學習興趣,從教學內容、教學方法及教學手段等各方面協調保證該課程的教學目標和效果是一個亟待解決的問題。
2 基于培養專業能力和專業素質開展編譯原理課程教學
2.1 明確“能力導向”教學目標,開展興趣教學
根據“A”型人才結構“厚基礎、寬口徑、強能力、高素質”的高校跨世紀人才培養目標,結合計算機專業人才社會需求以及國際計算機科學課程的未來發展趨勢[3],我們把編譯原理課程建設目標定義為立足夯實基礎,掌握編譯原理中的基本概念、原理和方法;理清課程的聯系,建立課程的有機銜接,拓寬課程相關領域;結合編譯理論和技術中經典的案例培養計算思維;加強實踐訓練工程素質,培養學生對軟件的規劃、組織、設計與實現等綜合應用能力。心理學研究表明,興趣是人類最好的導師,是人們力求認識某種事物或愛好某種活動的心理傾向,它能夠引導和激發人們從思想和意志上去努力探索某種事物的底蘊。學習一門專業,一門課程,想要學生學得好、鉆得精,需要激發他們強烈的學習興趣,讓他們愿意去主動學習。那如何激發和培養學生對編譯原理課程的學習興趣呢?這應從入門開始,在講授編譯原理課程的第一次課時,我們首先要介紹編譯原理課程的教學目標,強調課程的重要地位和重要意義,讓學生明確學習目標,帶著重視而又獵新喜奇的心理開始學習。然后應做到讓興趣教學貫穿整個教學過程,這就要求老師能夠根據不同的教學內容采用不同的教學方法(如類比式、啟發式、實例式等)來提升學生學習興趣,增強教學效果。
2.2 理清課程的聯系,建立課程的有機銜接,拓寬課程相關領域
編譯原理課程涉及許多其他課程知識和技術領域,在該課程授課時,應該讓學生理清這些課程之間的聯系,建立課程的有機銜接,形成計算機專業人才特有的系統的專業知識結構,培養學生的綜合理解和運用知識的能力,從而提高其專業素質。例如,在課程教學中以討論的方式分析利用C語言或C++語言實現經典算法的思想和技術特征,讓學生感受過程式編程和對象式編程的區別,從而進一步準確掌握程序設計語言,學習新的編程范型,提高程序設計能力。讓學生在軟件工程的指導思想下分析、設計一個小型編譯器,應用數據結構的知識存儲、組織數據,應用算法設計與分析的知識設計算法,應用操作系統的知識對目標代碼進行存儲組織、分配并最終實現優化,啟發式地讓本課程和其他課程的知識點融合或者關聯,將專業能力和素質的提升融入教學之中。此外,由于編譯程序的算法和技術比較經典,不僅可以廣泛應用于一般軟件的設計實現中,還可滲透、拓展到其他學科技術中,所以我們還可進一步引導學生思考編譯理論對今后學習、工作的指導意義。
2.3 結合編譯理論和技術中經典的案例培養計算思維
計算思維是運用計算機科學的基礎概念進行問題求解、系統設計及人類行為理解等涵蓋計算機科學之廣度的一系列思維活動[4]。它包含問題分解、抽象、自動化、遞歸等一系列經典的計算機科學的思維方法。如何培養計算思維,是當前大學計算機教育教學研究的熱點課題之一。編譯原理課程知識體系結構完整,在它經典理論和先進技術的發展中,很多編譯成果正是應用計算思維的結晶。該課程中許多知識點都為計算思維提供了很好的詮釋和生動的案例。例如,課程中介紹的形式化語言與自動機理論,正是運用了計算思維中2個重要的手段——抽象和自動化,用這2個手段去探索詞法分析和語法分析等問題的本質,形成一系列將抽象思維的結果在計算機上實現的自動分析方法,將理論成果應用于技術實踐。課程中介紹的“自頂向下和自底向上”的分析方法就是2種典型的問題分解的計算思維方法,可以引導學生從宏觀到微觀分層次考慮問題,鼓勵學生關注和掌握系統邏輯,由簡到繁、逐漸深入、逐步求精。此外,課程中的屬性計算、語法制導翻譯就是運用遞歸求解方法把比較復雜的原始問題逐步化簡為一個簡易的類似問題,把該問題解決后再逐層向外擴展。實踐證明,結合編譯理論和技術中經典的案例在編譯課程的教學中培養學生的計算思維是值得探索的。
2.4 加強實踐,提升系統能力,訓練工程素質
編譯程序作為一個龐大而復雜的系統程序,包含很多抽象、理論性較強的算法和思想,構造一個編譯器是系統的、成規模的、有難度的。它包括多個不同的處理階段,由多個完成不同功能、執行在不同階段的子程序組成。它要求學生不僅要對各個子程序的功能和方法有清晰的認識,還應該遵循軟件工程的思想和規范,將各個子程序很好地銜接在一起,保證開發出的編譯程序具有較好的質量和可維護性。而在湖南工業大學,目前的編譯原理課程只有40節純理論授課課時,這肯定是不科學的,因此必須加強實踐,增加實驗和課程設計,讓學生在透徹地理解掌握編譯程序理論的基礎上,系統全面地掌握編譯技術,真正運用所學的知識去解決實際問題,通過讓學生參與較大型系統的設計與實現來培養學生對軟件的規劃、組織、設計與實現的綜合能力,增強學生的系統能力和合作能力,訓練工程素質。
3 結語
對于計算機專業教育來說,專業能力和專業素質的培養,它是一個系統的工程,不是哪一門課程的教學就可以解決的問題,它應貫穿于整個大學教育的每一門專業課程。為了更好地完成編譯原理課程的教學使命,讓學生系統、全面地掌握編譯技術,通過計算機專業知識的融會貫通切實有效地提高學生的專業能力和專業素質,高校教師應該不斷探索更為合理的教學模式,不斷提高教學質量,應該強調實踐,保證編譯過程的完整性,讓學生用最簡單的方式完成一個完整的翻譯過程。
參 考 文 獻
[1]蔣宗禮.編譯原理課程與專業能力培養[J].計算機教育,2009(21):4-6.
[2]陳意云.編譯原理[M].北京:高等教育出版社,2008.
[3]陳英,計衛星.編譯原理課程教學指導思想的思忖[J].計算機教育,2009(21):14-15.
[4]王挺,李夢君.對編譯原理課程教學中計算思維培養的探討[J].計算機教育,2009(21):11-12.
[責任編輯:高海明]
【基金項目】2014年湖南工業大學教育改革資助項目“基于專業能力培養的編譯原理課程教學體系的構建和探索”(2014B40)。
【作者簡介】左新娥,女,湖南工業大學計算機與通信學院講師,研究方向:計算機教育;呂志凌,男,湖南工業大學計算機與通信學院計算機1203班學生;黃卓冕,男,湖南工業大學計算機與通信學院講師,研究方向:電路與系統。