何炎祥 伍春香
摘要:本文主要討論了編譯原理課程在計算機專業(yè)課程教學中的作用,并結(jié)合新形勢下編譯技術(shù)的應(yīng)用前景,對我國計算機專業(yè)編譯原理課程設(shè)置改革提出了一些建議。
關(guān)鍵詞:編譯程序;編譯技術(shù);編譯原理;課程改革
中圖分類號:G642文獻標識碼:B文章編號:1672-5913(2009)04-0061-02
隨著信息技術(shù)的迅猛發(fā)展及其應(yīng)用領(lǐng)域的不斷深化,幾乎所有專業(yè)的研究與應(yīng)用都離不開信息技術(shù)。信息化浪潮對高等教育也帶來非常直接的變化,各專業(yè)課程設(shè)置無不將計算機知識教育作為其課程設(shè)置的組成部分。幾乎所有專業(yè)的大學畢業(yè)生,都要求掌握基本的計算機操作技能,非計算機專業(yè)學生需要通過計算機等級考試,而一些和信息技術(shù)密切相關(guān)的專業(yè),如電子信息、信息管理、電子商務(wù)等,課程設(shè)置上與計算機專業(yè)更是大量重疊,計算機知識教育在各專業(yè)中的滲透程度日漸加劇。
1計算機專業(yè)面臨的新挑戰(zhàn)
在計算機知識正在成為各專業(yè)基本教育內(nèi)容的背景下,計算機專業(yè)學生的專業(yè)優(yōu)勢受到很大的挑戰(zhàn),以往在軟硬件知識和應(yīng)用能力上的獨特優(yōu)勢似乎在逐漸弱化,與具有特定專業(yè)背景的學生相比就業(yè)壓力越來越大,由此也引發(fā)計算機專業(yè)到底學什么、專什么的現(xiàn)實思考,我們必須面臨的問題是:計算機專業(yè)的學生專業(yè)優(yōu)勢體現(xiàn)在哪里?
計算機學科是一門技術(shù)性、工程性和應(yīng)用性很強的學科,并有其基礎(chǔ)理論支撐的科學體系。計算機也是一種使用工具,但那種把工具使用等同于計算機專業(yè)的狹隘認識,其思維實際上和十多年前認為“會用計算機打字就是會用計算機”如出一轍。計算機專業(yè)學生的優(yōu)勢應(yīng)該在于:通過系統(tǒng)的專業(yè)原理性知識的學習與訓練,熟練掌握基本的應(yīng)用技能,并能夠“知其然,且知其所以然”,為此專業(yè)基礎(chǔ)課程的熏陶必不可少。而編譯原理就是一門介紹這種原理性知識的綜合性專業(yè)基礎(chǔ)課程。
2編譯原理是計算機專業(yè)必不可少的基礎(chǔ)知識
計算機專業(yè)的理論基礎(chǔ)對培養(yǎng)學生的計算機專業(yè)素養(yǎng)具有非常重要的作用。
在眾多的原理性學習課程中,編譯原理主要承擔了語言實現(xiàn)原理、方法和技術(shù)的介紹。人們借助計算機減輕自己的勞動強度,提高生產(chǎn)率,完成一些人類無法進行的危險、高難度工作。然而所有這些工作都必須借助程序設(shè)計語言書寫的程序來指揮計算機。非機器語言程序功能的實現(xiàn)必須由翻譯程序來完成。正是有了編譯程序、解釋程序、匯編程序等翻譯程序,人們才可以使用自己習慣的語言將需要計算機做的事情描述成程序,并通過這些翻譯程序的工作讓計算機理解并執(zhí)行??梢哉f,沒有翻譯程序,計算機不可能象今天這樣得到如此廣泛的普及,網(wǎng)絡(luò)也不會有今天這樣大的吸引力,我們的生活、學習和工作將會是另一個樣子。
包括編譯程序在內(nèi)的翻譯程序承擔了實現(xiàn)語言的功能,它所涉及的知識包括形式語言、自動機理論等語言定義、翻譯與實現(xiàn)的基礎(chǔ)知識,這些知識可以讓學生領(lǐng)悟到計算機理論的精髓,可以讓學生從實現(xiàn)的角度重新審視軟件的開發(fā),有助于學生對軟件的真正認識,對于今后從事應(yīng)用軟件、語言開發(fā)平臺、編譯系統(tǒng)甚至操作系統(tǒng)開發(fā)等都是非常有好處的。同時,編譯原理是許多課程的一個綜合性的實踐,它進一步加深了學生對程序設(shè)計語言課程中語言基本單位的定義和作用的理解。例如,編譯程序使用的一些數(shù)據(jù)結(jié)構(gòu)和算法是“離散數(shù)學”、“數(shù)據(jù)結(jié)構(gòu)”以及“算法設(shè)計與分析”等課程相關(guān)知識的典型應(yīng)用;編譯程序?qū)δ繕舜a的存儲組織與分配功能的實現(xiàn)原理又與“操作系統(tǒng)”的相關(guān)內(nèi)容相互滲透;編譯程序?qū)χ虚g代碼的優(yōu)化功能的實現(xiàn)則是數(shù)學、邏輯學、結(jié)構(gòu)程序設(shè)計和優(yōu)化理論的綜合應(yīng)用和專門化。因此,編譯的原理性研究、學習和實踐,可以多角度提高學生的邏輯思維能力、實踐動手能力、編程調(diào)試及綜合應(yīng)用能力,有助于切實有效地提高學生的專業(yè)素質(zhì)。另外,編譯課程中介紹的知識也是后續(xù)許多課程的基礎(chǔ)。所以,編譯原理是計算機專業(yè)學生必須掌握的基本原理,編譯原理課程是計算機專業(yè)非常重要的專業(yè)課程。
盡管經(jīng)過計算機專業(yè)人員的大量努力,大量的工具軟件為我們提供了極大的便利,以至于人們只需要通過若干次點擊鼠標左鍵就可以方便地完成很多工作,但這并不是說所有問題都已經(jīng)解決,還有很多深層次的工作需要計算機專業(yè)人員去完成。如果我們的計算機專業(yè)畢業(yè)生也只會“點擊左鍵”,很難想象他們會開發(fā)出更好的工具,或?qū)τ嬎銠C技術(shù)的發(fā)展作出應(yīng)有的貢獻。
專業(yè)理論基礎(chǔ)的學習,可以培養(yǎng)學生的思維方式和洞察力。計算機技術(shù)的更新是非常快的,系統(tǒng)的理論基礎(chǔ)可以讓學生在將來更好地適應(yīng)新技術(shù),可以讓他們在理論框架的指導下尋找解決問題的方法,朝不同的方向發(fā)展!因此,“編譯原理”課程應(yīng)該是計算機專業(yè)必須的重要基礎(chǔ)課。
3編譯技術(shù)的應(yīng)用及需求
編譯原理課程的重要性,不僅僅是因為它所介紹的知識是計算機專業(yè)理論知識的重要組成,也在于編譯程序所使用的一些原理、方法和技術(shù)在非編譯系統(tǒng)的實際應(yīng)用中也發(fā)揮了很大作用。
例如我們常用的文本編輯工具的實現(xiàn),涉及到的字詞、語法正確性等內(nèi)容就是編譯里介紹的詞法分析、語法分析技術(shù)的具體應(yīng)用;又如現(xiàn)在大家上網(wǎng)必不可少的搜索引擎,在處理用戶輸入的查詢要求、對文檔資源的特征分析、提取與描述等工作中都用到編譯的相關(guān)知識:一些特定的應(yīng)用也可以用到編譯中的方法來解決問題,比如用正規(guī)表達式描述網(wǎng)絡(luò)上某種信息的特征等。
隨著消費類電子產(chǎn)品的大量開發(fā),嵌入式系統(tǒng)的應(yīng)用需求也不斷增加。在這種情況下,搭建適合的交叉編譯環(huán)境的工作日益重要,急需掌握編譯器構(gòu)造相關(guān)原理、方法和技術(shù)的從業(yè)人員。這不僅說明了編譯知識的生命力,同時也給高等學校計算機專業(yè)的編譯課程設(shè)置帶來了新的要求。
現(xiàn)實告訴我們,目前的問題不是計算機專業(yè)要不要開設(shè)編譯原理課程,而是該如何改進編譯原理的內(nèi)容與教學方式,以更好地適應(yīng)社會的需求。
4國內(nèi)外編譯相關(guān)課程的設(shè)置情況
我們查閱了國外一些著名的大學計算機專業(yè)的課程設(shè)置情況,研究了其中與編譯相關(guān)的課程安排,發(fā)現(xiàn)他們對與編譯相關(guān)知識的介紹是非常重視的。
美國麻省理工學院的計算機專業(yè)課程設(shè)置中,與編譯相關(guān)的課程就有Structure and Interpretation of ComputerPrograms,Computer Language Engineering(包括基本概念、編譯器的功能和結(jié)構(gòu)、基本程序優(yōu)化技術(shù)、理論和實踐的交互作用以及使用工具編制軟件),Mulfithreaded Parallelism:Languages and Compilers加州大學伯克利分校工學院的計算機課程設(shè)置中,涉及編譯的課程有Implarnentation ofProgramming Languages,Programming Languages and Compilers,
Structure and Interpretation of Computer Programs等:英國劍橋大學的計算機科學課程與編譯相關(guān)的有Compilerconstruction和Advanced compiler design等。
可以看到,這些學校的計算機專業(yè)課程有的設(shè)置了專門的編譯課程,有的雖然沒有設(shè)置專門的課程,但在不同的課程中都安排了專門的內(nèi)容和相關(guān)的知識,不管課程設(shè)置的方式如何,編譯在其中都占有很重要的分量。這足以說明國外在培養(yǎng)計算機專業(yè)的人材時,是非??粗衅鋵幾g相關(guān)知識的掌握的。
在國內(nèi),多年來編譯原理一直是各校特別是教育部所屬高校計算機專業(yè)的必修課,曾經(jīng)也是計算機專業(yè)碩士入學考試的必考科目,現(xiàn)在某些學校的計算機專業(yè)碩士生入學面試和博士入學考試還必考編譯原理。編譯原理課程在我國計算機專業(yè)人材培養(yǎng)中起了很重要的作用,新形勢下開發(fā)具有自主知識產(chǎn)權(quán)的計算機系統(tǒng)軟、硬件,更需要編譯原理課程繼續(xù)發(fā)揮作用。
5關(guān)于我國計算機專業(yè)編譯原理課程設(shè)置的建議
一般認為,編譯原理課程是計算機專業(yè)最難的課程之一,它是數(shù)據(jù)結(jié)構(gòu)、語言、算法和軟件設(shè)計等知識的綜合體現(xiàn),學生對這門課程的理解確實會有一定難度,但這正是教師工作需要解決的問題。實踐證明,如果讓學生認識到了課程內(nèi)容的重要性,并輔之以合適的教學方法和教學手段,取得良好的教學效果是不難的。
為此,我們思考了新形勢下編譯原理課程所涉及內(nèi)容的教學及課程設(shè)置的改革問題,如果必須改變現(xiàn)有的課程設(shè)置模式,我們建議在編譯原理課程的設(shè)置上,可以考慮采取以下兩種模式:
(1)課程分解式將編譯原理課程根據(jù)內(nèi)容分成兩門課:一門為必修,可命名為“編譯技術(shù)”,主要介紹一些為滿足基本應(yīng)用而需要學生掌握的基礎(chǔ)知識、方法、技術(shù),以達到語言實現(xiàn)理論基礎(chǔ)介紹的目的;另一門為選修,可命名為“編譯理論”,主要介紹偏重原理性的、更深層次的內(nèi)容,方便有進一步深造需要的學生學習。
(2)內(nèi)容分解式
可以不單獨設(shè)置一門編譯課程,可將課程的內(nèi)容根據(jù)其深淺,涉及到的具體問題,及與其他課程內(nèi)容的相關(guān)性等分解到不同的課程中去,使學生在不同課程的學習中逐步掌握相關(guān)知識。
比較兩種模式,后者在目前階段來說還存在一定的難度:一是編譯課程內(nèi)容的分解不是孤立的,需要與其他課程的內(nèi)容進行重新整臺,因而涉及面太大,短時期內(nèi)難以做到科學分解與組織;二是增加了其他課程授課教師的工作量與難度,因為他們需要重新考慮、設(shè)計新增加的編譯部分內(nèi)容的教學方法、教學形式等問題,有可能需要在教學實踐中磨合一段時間才能取得好的教學效果。
因此,在現(xiàn)有形勢下,比較可行的還是第一種模式。當然,在經(jīng)過學科知識點合理的分解與組織之后,可以逐步過渡到第二種模式。