楊波 沈承舒
摘要:從嵌入式系統(tǒng)軟件開發(fā)的角度出發(fā),探討在嵌入式系統(tǒng)開發(fā)方向上C語言程序設(shè)計(jì)課程的改進(jìn)思路,首先闡述嵌入式軟件開發(fā)對(duì)C語言的知識(shí)和技能需求,指出現(xiàn)有C語言課程針對(duì)嵌入式系統(tǒng)開發(fā)存在的不足;在此基礎(chǔ)上,從課程設(shè)置、教學(xué)內(nèi)容劃分、實(shí)驗(yàn)設(shè)置及教學(xué)方法與手段等方面討論C語言程序設(shè)計(jì)課程的改革思路。
關(guān)鍵詞:嵌入式軟件開發(fā);C語言;課程改革
0.引言
C語言程序設(shè)計(jì)作為程序設(shè)計(jì)語言的入門基礎(chǔ)課程,是各高校理工科專業(yè)中計(jì)算機(jī)程序設(shè)計(jì)類課程的普遍選擇。作為一門理工科通識(shí)課程,其目的在于使學(xué)生通過對(duì)C語言中各種語言成分的學(xué)習(xí),初步認(rèn)識(shí)計(jì)算機(jī)程序設(shè)計(jì)及進(jìn)行程序設(shè)計(jì)的過程,掌握基本的程序設(shè)計(jì)思想與方法。作為通識(shí)類課程,目前各院校通常將該門課程的教學(xué)安排在一年級(jí),每周3-4學(xué)時(shí)(含實(shí)驗(yàn)),講授內(nèi)容主要包含C語言的數(shù)據(jù)類型與表達(dá)式、程序結(jié)構(gòu)、函數(shù)、指針、鏈表、文件等。在教學(xué)實(shí)踐中,我們發(fā)現(xiàn),由于學(xué)時(shí)限制或?qū)W生接受程度等原因,常常需要對(duì)部分教學(xué)內(nèi)容(如多級(jí)指針、文件操作、位操作等)進(jìn)行削減,無形中降低了課程內(nèi)容的深度與廣度。作為通識(shí)類課程,這樣的削減影響不太大。而對(duì)于信息類專業(yè)(計(jì)算機(jī)、電子、自動(dòng)化等)而言,僅掌握通識(shí)教育中所講授的部分是遠(yuǎn)遠(yuǎn)不夠的。
嵌入式系統(tǒng)開發(fā)是信息類專業(yè)的一個(gè)主要發(fā)展方向。進(jìn)入21世紀(jì)以來,融合先進(jìn)的計(jì)算機(jī)技術(shù)、半導(dǎo)體技術(shù)、電子技術(shù)及各行業(yè)領(lǐng)域具體應(yīng)用的嵌入式系統(tǒng),已在工業(yè)控制、交通管理、信息家電、智能家居、環(huán)境監(jiān)測(cè)、電子商務(wù)、機(jī)器人等領(lǐng)域得到了廣泛應(yīng)用。
一般說來,嵌入式系統(tǒng)是指以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可剪裁,適用于心用領(lǐng)域,對(duì)功能、可靠性、成本、體積、功耗等有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。由于在成本、功耗、體積等方面的限制,對(duì)嵌入式系統(tǒng)中的軟件開發(fā)提出了更高的要求。嵌入式軟件開發(fā)是在特定的硬件平臺(tái)上進(jìn)行,需要使用具有較強(qiáng)硬件操作能力的編程語言。由于C語言是具備了這一特質(zhì)的高級(jí)語言,成為嵌入式系統(tǒng)開發(fā)的最佳選擇。
調(diào)查顯示,在信息類專業(yè)中,電子類本科專業(yè)教學(xué)計(jì)劃與嵌入式系統(tǒng)教學(xué)要求相脫節(jié),電子類本科學(xué)生的軟件基礎(chǔ)也較弱。在這樣的背景下,對(duì)C語言程序設(shè)計(jì)課程進(jìn)行相應(yīng)改革,以適應(yīng)嵌入式系統(tǒng)開發(fā)人才培養(yǎng)的需要是十分必要的。
1.嵌入式軟件開發(fā)對(duì)C語言的需求
在適用于嵌入式系統(tǒng)開發(fā)的3類主要語言中,C語言占有超過70%的份額。開發(fā)嵌入式軟件,除掌握C語言的基礎(chǔ)知識(shí)和基本技能外,主要還存在以下幾方面的要求:
1)指針。
指針作為C語言的主要特點(diǎn),其使用十分靈活,因而也很難完全掌握。它可用于指向不同類型的普通變量、數(shù)組、字符串,甚至函數(shù)。在嵌入式軟件開發(fā)中對(duì)各類不同指針(數(shù)組指針、指針數(shù)組、指向結(jié)構(gòu)體的指針、多級(jí)指針)的使用十分普遍。因此,指針相關(guān)內(nèi)容的教學(xué)必須足夠深入。
2)位操作。
C語言有別于其他高級(jí)語言的一個(gè)特點(diǎn)是可直接對(duì)硬件進(jìn)行操作。指針和位操作是這一特點(diǎn)得以實(shí)現(xiàn)的工具。通過6種位操作符,可直接對(duì)內(nèi)存、寄存器或I/O端口的字節(jié)進(jìn)行測(cè)試、置換或移位處理。熟練掌握位操作符的使用,是進(jìn)行嵌入式軟件開發(fā)必不可少的重要基礎(chǔ)。在一些國內(nèi)高校普遍選用的經(jīng)典C語言教材(如文獻(xiàn)[4])中,由于定位于普適教育,并未包含位操作部分的內(nèi)容。
3)文件讀寫。
嵌入式系統(tǒng)中“一切皆文件”,系統(tǒng)的運(yùn)行以文件讀/寫方式進(jìn)行操作。理解文件系統(tǒng)的構(gòu)成、掌握基本的文件操作方法也是進(jìn)行嵌入式軟件開發(fā)必須掌握的技能。
4)宏定義。
在嵌入式軟件中使用宏定義,不僅可防止代碼出錯(cuò),提高可移植性、可讀性,而且是產(chǎn)生內(nèi)嵌代碼的唯一方法,可用于替代函數(shù)調(diào)用,從而達(dá)到嵌入式系統(tǒng)性能要求。
以上4個(gè)方面的內(nèi)容,在通識(shí)型的C語言課程中,由于課時(shí)和學(xué)生程度等原因,都不能進(jìn)行針對(duì)性的特別訓(xùn)練。學(xué)生在進(jìn)入嵌入式系統(tǒng)開發(fā)階段后,顯然會(huì)成為程序設(shè)計(jì)知識(shí)方面的短板。
2.課程改革思路
基于上一節(jié)的認(rèn)識(shí),我們對(duì)C語言程序設(shè)計(jì)課程的教學(xué)提出了下面的調(diào)整思路。
2.1課程設(shè)置
作為通識(shí)課程的C語言程序設(shè)計(jì)通常安排在一年級(jí)或二年級(jí)上學(xué)期完成。信息類專業(yè)的學(xué)生在大學(xué)三年級(jí)開始進(jìn)入嵌入式系統(tǒng)開發(fā)相關(guān)課程時(shí),不可避免地對(duì)已學(xué)過的C語言的知識(shí)會(huì)有一定程度的遺忘。
針對(duì)嵌入式系統(tǒng)開發(fā)的要求,考慮將C語言程序設(shè)計(jì)課程劃分為2個(gè)階段。第1階段為c語言程序設(shè)計(jì)基礎(chǔ),每周3學(xué)時(shí),可在大學(xué)一年級(jí)下學(xué)期或二年級(jí)上學(xué)期開設(shè);第2階段為嵌入式系統(tǒng)C語言程序設(shè)計(jì),每周2學(xué)時(shí),作為嵌入式系統(tǒng)開發(fā)方向的選修課,可在大學(xué)三年級(jí)上與其他嵌入式系統(tǒng)相關(guān)課程,如嵌入式系統(tǒng)、嵌入式操作系統(tǒng)一起開設(shè)。這樣設(shè)置一方面滿足了在低年級(jí)完成程序設(shè)計(jì)類通識(shí)課程的要求,使學(xué)生不必過早接觸C語言中較為深入、復(fù)雜的部分;另一方面,通過將與嵌入式軟件開發(fā)密切相關(guān)的知識(shí)適當(dāng)推后,確保了嵌入式系統(tǒng)開發(fā)各門課程問的知識(shí)聯(lián)系。
2.2教學(xué)內(nèi)容的劃分
由于將課程劃分為基礎(chǔ)部分和面向嵌入式系統(tǒng)開發(fā)的提高部分,則可將C語言的一般基礎(chǔ)(基本語句、控制結(jié)構(gòu)、數(shù)組、函數(shù)、指針、結(jié)構(gòu)體)劃人C語言程序設(shè)計(jì)基礎(chǔ)課程中,通過這部分的學(xué)習(xí)使學(xué)生掌握C語言的基本理論知識(shí)并具備基本的編程技能,達(dá)到程序設(shè)計(jì)類課程的通識(shí)教育水平。
對(duì)于與嵌入式開發(fā)密切相關(guān)的知識(shí),將在嵌入式系統(tǒng)C語言程序設(shè)計(jì)課程中講授,主要包括:宏定義、位操作、文件操作和復(fù)雜指針運(yùn)用。這部分內(nèi)容的教學(xué)可圍繞嵌入式軟件開發(fā)實(shí)例展開,深入講解各知識(shí)點(diǎn)的應(yīng)用。通過嵌入式系統(tǒng)C語言程序設(shè)計(jì)課程的學(xué)習(xí),學(xué)生應(yīng)更深入地理解和領(lǐng)會(huì)C語言的精華思想,同時(shí)具備基于嵌入式平臺(tái)進(jìn)行軟件開發(fā)的能力。
2.3實(shí)驗(yàn)內(nèi)容endprint
任何程序設(shè)計(jì)語言的學(xué)習(xí)都離不開大量的實(shí)踐,實(shí)驗(yàn)是學(xué)習(xí)C語言的重要組成部分。根據(jù)前面對(duì)課程的劃分,C語言程序設(shè)計(jì)基礎(chǔ)課程中可開設(shè)的實(shí)驗(yàn)項(xiàng)目如表1所示。
實(shí)驗(yàn)1在學(xué)習(xí)了C語言的數(shù)據(jù)類型、運(yùn)算符、表達(dá)式和輸入/輸出之后進(jìn)行,目的在于使學(xué)生熟悉C語言的編譯環(huán)境,逐步認(rèn)識(shí)C語言語句的基本構(gòu)成。實(shí)驗(yàn)2涵蓋了程序的3種基本結(jié)構(gòu),便于學(xué)生統(tǒng)一認(rèn)識(shí)關(guān)系、邏輯運(yùn)算和程序結(jié)構(gòu)。實(shí)驗(yàn)3-6分別對(duì)應(yīng)于數(shù)組、函數(shù)、指針和結(jié)構(gòu)體各章節(jié)的內(nèi)容,重點(diǎn)掌握這些語言成分的定義及使用方法。實(shí)驗(yàn)7將綜合運(yùn)用本課程中的知識(shí),完成一個(gè)較小的、具備一定功能的小型軟件的開發(fā)。
嵌入式系統(tǒng)C語言程序設(shè)計(jì)課程的實(shí)驗(yàn)內(nèi)容則圍繞一個(gè)嵌入式軟件開發(fā)實(shí)例展開,實(shí)例由任課教師選定。根據(jù)所選實(shí)例,實(shí)驗(yàn)內(nèi)容可包含以下項(xiàng)目(如表2所示)。
實(shí)驗(yàn)1的目的在于使學(xué)生熟悉嵌入式系統(tǒng)的軟件開發(fā)環(huán)境,主要介紹嵌入式Linux下的c語言編譯工具。實(shí)驗(yàn)2-5則根據(jù)所選實(shí)例,選取特定的模塊有針對(duì)性地進(jìn)行文件操作、宏定義、位運(yùn)算及復(fù)雜指針運(yùn)用方面的練習(xí)。
2.4教學(xué)方法與手段的調(diào)整
毋庸諱言,由于種種因素的影響,當(dāng)前各高校中普遍存在學(xué)風(fēng)怠惰現(xiàn)象,相當(dāng)一部分學(xué)生學(xué)習(xí)積極性較低下。如何提升學(xué)生對(duì)所學(xué)課程的興趣,是每一名教師都要面對(duì)的問題。在多年的C語言程序設(shè)計(jì)課程教學(xué)過程中,我們接到學(xué)生的反饋意見最多的是“上課聽得懂,下來不會(huì)自己編程”。究其原因,大概不外乎兩種:一是學(xué)生盡管在課堂上聽了課,課下并未及時(shí)回顧整理并主動(dòng)思考;二是在理論課堂上一講到底,學(xué)生要等到實(shí)驗(yàn)課時(shí)才真正動(dòng)手體會(huì)講過的知識(shí),往往不能及時(shí)動(dòng)手練習(xí),進(jìn)而影響消化吸收。針對(duì)第一種情況,我們采取了每一堂課以提問開始的方式,提問內(nèi)容主要是對(duì)之前所學(xué)內(nèi)容的回顧和脈絡(luò)梳理,同時(shí)還留出了一定的課堂練習(xí)時(shí)間,這樣能在一定程度上起到督促學(xué)生課下及時(shí)復(fù)習(xí)的作用,也便于教師及時(shí)了解學(xué)生的知識(shí)掌握情況。而對(duì)于第二種原因,可嘗試采取將理論課堂搬至機(jī)房的方式,在完成一個(gè)知識(shí)點(diǎn)的講授后布置即時(shí)練習(xí),讓學(xué)生能及時(shí)體驗(yàn)和理解。但當(dāng)機(jī)房容量有限而班級(jí)較大時(shí),并不適用,這樣的情形如何處理?需要我們進(jìn)一步思考。
3.結(jié)語
嵌入式產(chǎn)品已遍及我們?nèi)粘9ぷ骱蜕钪械母鱾€(gè)方面,巨大的市場(chǎng)空間將吸引更多的專業(yè)人才投身于嵌入式系統(tǒng)開發(fā)的行業(yè)中。根據(jù)《2012-2013嵌入式工程師調(diào)查報(bào)告》,嵌入式企業(yè)的發(fā)展速度與專業(yè)人才的成長速度仍有一定差距,行業(yè)內(nèi)專業(yè)研發(fā)工程師仍處于供不應(yīng)求的狀態(tài)。在畢業(yè)生就業(yè)壓力日益增大的今天,高校的計(jì)算機(jī)、電子、自動(dòng)化等相關(guān)專業(yè)的教師都在積極思考相應(yīng)的課程和人才培養(yǎng)模式改革嵌入式系統(tǒng)研發(fā)工作中,軟件開發(fā)占80%以上的工作量,需要大量的嵌入式軟件開發(fā)人才。高校相關(guān)專業(yè)更應(yīng)及時(shí)調(diào)整軟件設(shè)計(jì)類課程的設(shè)置,以適應(yīng)嵌入式開發(fā)行業(yè)的人才需求。endprint