
[摘 要]現(xiàn)階段各高校C語言程序設(shè)計的教學方案大多采用PC+VC的教學模式。隨著時代的進步,這種傳統(tǒng)教學模式無論在教學難度、教學時長、學生學習興趣、學生掌握程度等方面逐漸顯現(xiàn)出諸多不足。本文擬從技術(shù)發(fā)展的角度分析傳統(tǒng)教學模式不足形成的各種原因,提出改進的方案——基于NodeMCU項目驅(qū)動的C語言程序設(shè)計教學模式。
[關(guān)鍵詞]C語言程序設(shè)計;NodeMCU ;Esp;Python
doi:10.3969/j.issn.1673-0194.2023.09.056
[中圖分類號]G642 [文獻標識碼]A [文章編號]1673-0194(2023)09-0192-04
0" " "引 言
C語言程序設(shè)計課程是理工類大學的一門重要基礎(chǔ)課程。教育部推薦各高校開設(shè)本課程的目的,從狹義上講,主要是為了增進學生對于計算機編程技術(shù)的了解;按廣義上論,更多的是著眼于培養(yǎng)學生嚴謹科學的思維方式,把握當今信息處理技術(shù)。C語言因其靈活多變的特點、便于移植的開發(fā)方式,無論是在數(shù)十年前傳統(tǒng)X86的PC單機模式編程,十數(shù)年前網(wǎng)絡(luò)應(yīng)用的開發(fā),抑或是現(xiàn)在分布式大數(shù)據(jù)時代背景下物聯(lián)網(wǎng)技術(shù)、云計算、開疆辟土般人工智能的初萌,都有著不可或缺的重要作用。做好當前的教學工作,既是完成大學基礎(chǔ)課程設(shè)置的必須要求,更是為信息時代人才培養(yǎng)奠定堅實基礎(chǔ)的必經(jīng)路程。
1" " "現(xiàn)階段教學模式存在的不足及改革的必要性
C語言于20世紀六七十年代在美國貝爾實驗室產(chǎn)生,設(shè)計之初的主要目的是控制大型機。與此伴生的軟件平臺——Unix操作系統(tǒng)由于良好的兼容性和優(yōu)秀的執(zhí)行效率被廣泛應(yīng)用。20世紀90年代初,IBM PC獨霸個人微型機消費市場,MicroSoft公司W(wǎng)indows系列操作系統(tǒng)以其卓越的人機交互方式逐步壟斷了辦公桌面的各種軟件應(yīng)用場合。Windows本身大部分功能是基于C語言開發(fā)的,基于C語言開發(fā)的相較于其他語言開發(fā)的應(yīng)用軟件更具備穩(wěn)定性,執(zhí)行效率也更有保障。彼時,我國高校的程序設(shè)計課程是以X86處理器為核心的PC機作為硬件基礎(chǔ),以Windows上的Visual Studio 系列為C語言開發(fā)軟件進行配伍。另外,囿于當時技術(shù)的限制,自動化設(shè)備幾乎不能獨立于PC機運行。相關(guān)授課教師也很難接觸到PC之外的開發(fā)環(huán)境。現(xiàn)在看來,這種模式應(yīng)用于編程起步并不理想,無論是硬件的復雜程度,還是對軟件原理的理解,初學者都不可能在短時間內(nèi)輕易掌握。21世紀初,互聯(lián)網(wǎng)技術(shù)快速普及,我國加強對信息技術(shù)應(yīng)用的大力推廣,傳統(tǒng)的單機或小型網(wǎng)絡(luò)應(yīng)用逐漸被新型移動通信所取代。PC系統(tǒng)也從以前相對簡單的X86 構(gòu)架進化為更先進的IA64構(gòu)架。這種改變使PC更具搶占特定構(gòu)架計算機占有的服務(wù)器市場的實力。伴隨設(shè)備向小型化、移動化方向發(fā)展,傳感器技術(shù)從以前的高端應(yīng)用逐漸變?yōu)榇蟊娚钪械某R娊巧\浖幊填I(lǐng)域,由以前的C語言一家獨大變?yōu)镃語言、Python、Java各領(lǐng)風騷。在技術(shù)不斷進步的同時,科技人員用各種方法隱藏復雜的軟硬件,方便用戶遠離深奧的運行機制,讓更多計算機使用者樂心于生活與娛樂。然而,種種設(shè)計上的“便捷”卻給在基礎(chǔ)領(lǐng)域探索計算機編程知識的學生帶來了學習原理的困擾。所以,在教學環(huán)節(jié)我們常能聽到“平時根本用不到C語言,C語言已經(jīng)被淘汰了,為什么還學”等抱怨。采用傳統(tǒng)框架授課的教師也因日漸復雜的設(shè)計體系陷入教學內(nèi)容繁多、課時不足的窘境。
在教學進程中,程序設(shè)計課程的教材大多以20世紀清華大學譚浩強老師的教材為范本,課程按照同步教材的章節(jié)進行設(shè)置。這種教學進程的安排雖幾經(jīng)改版,但對于對計算機理論模型尚未有初步認識的學生來說,過于分散的陳述數(shù)據(jù)結(jié)構(gòu)及算法細節(jié)的安排形式與實驗環(huán)節(jié)脫離得太遠。C語言是一門實踐的科學,印證理論知識的關(guān)鍵途徑就是將學到的基礎(chǔ)理論付諸有效的實驗。現(xiàn)有的理論教學方式使學生很難與實驗環(huán)節(jié)緊密聯(lián)系在一起。很多學生往往因困惑于個別章節(jié)的特定語法現(xiàn)象而耽誤了后續(xù)的學習。如何能讓學生從興趣出發(fā)在實驗中獲得學習的滿足感,如何能讓課程的安排使學生將基礎(chǔ)原理映射于生產(chǎn)生活中的實踐,是我們教育工作者不懈探索的目標。
很多同行在原有PC課程框架基礎(chǔ)上,以優(yōu)化教學方法的形式進行了大量的積極的探索。與此同時,我們能否換一種思維方向:打破傳統(tǒng)PC框架的限制,選擇一種更適合教學、實踐的新模式來迎接時代進步的挑戰(zhàn)。
2" " "NodeMCU特點與進入教學環(huán)節(jié)的優(yōu)越性
在物聯(lián)網(wǎng)與人工智能飛速發(fā)展的今天,隨著處理器制造技術(shù)的不斷進步,微型化、高速化的競爭在處理器市場日益激烈,越來越多以單片機、單板機為核心的終端設(shè)備成為人們不可或缺的日常。隨著云技術(shù)逐步成熟,MCU帶領(lǐng)著一大批傳感器正逐步撼動著PC以往的霸主地位。在這些可以和PC一爭高下的競爭者中,不乏同時適用于工業(yè)生產(chǎn)與院校學習的優(yōu)秀系統(tǒng),選擇學習、熟悉它們成為學生進入信息時代的“敲門磚”。
Esp系列Soc正是微型系統(tǒng)應(yīng)用的佼佼者。Esp系列芯片是樂鑫公司開發(fā)的MCU,依照性能和價格主要分為Esp8266和Esp32兩個系列,相比較于國際著名ST公司和ATMEL公司的單片機,其最大的特點就是集成了Wi-Fi和藍牙,綜合性能也完全超越了上述產(chǎn)品。
Esp系列芯片以其性能優(yōu)越,對傳統(tǒng)網(wǎng)絡(luò)構(gòu)架良好的兼容性、社區(qū)資料完善等特點成為計算機領(lǐng)域廣大科技人員和愛好者學習與應(yīng)用的絕佳選擇。但若作為教學應(yīng)用,還需要將它承載于一套完整的軟硬件開發(fā)平臺。
NodeMCU開發(fā)模塊本身是一個開源的物聯(lián)網(wǎng)軟硬件結(jié)合的開發(fā)平臺。該硬件平臺設(shè)計之初以Esp芯片為核心,軟件則以Lua腳本語言作為編程工具。NodeMCU可快速實現(xiàn)設(shè)備M2M接入、數(shù)據(jù)統(tǒng)計分析、遠程控制、OTA升級、第三方接口等功能服務(wù)。NodeMCU固件支持Soc解決方案和二次開發(fā),大大降低了開發(fā)成本,縮短了開發(fā)周期。
NodeMCU模塊不超過8cm×8cm,外圍傳感器也可以根據(jù)需要動態(tài)增減。這種小體積組合便攜的設(shè)計使得學生在學習過程中不會為難以找到合適的練習開發(fā)平臺大費周章。
Arduino是一種用于快速制作原型的簡便工具,主要面向沒有電子和編程背景的學生。Arduino從進入更廣泛的社區(qū)便開始進行更改以適應(yīng)新的需求和挑戰(zhàn),將其產(chǎn)品從簡單的8位板擴展到IoT應(yīng)用、可穿戴、3D打印和嵌入式環(huán)境的產(chǎn)品。所有Arduino硬件和軟件都是完全開源的,使用戶能夠獨立構(gòu)建它們,并且通過全球用戶的貢獻而不斷發(fā)展。
近年來,Arduino一直是數(shù)千個項目的核心,從日常物品到復雜的科學儀器。一個由學生、業(yè)余愛好者、藝術(shù)家、程序員和專業(yè)人士組成的全球創(chuàng)客社區(qū)聚集在這個開源平臺周圍,他們的貢獻積累了大量可訪問的知識,對新手和專家都有很大幫助。
得益于無數(shù)開發(fā)人員的努力,Arduino平臺現(xiàn)在已被成功移植到由Esp系列芯片構(gòu)建的NodeMCU中。可以說NodeMCUamp;Arduino模式就是為學習編程而生,在這種框架的輔助下,學生既可以直觀接觸NodeMCU硬件平臺,同時在Arduino 強大社區(qū)的陪伴中使軟件學習日行千里。
3" " "NodeMCU項目驅(qū)動實踐
Arduino本身兼容于C語言,將NodeMCU+Arduino
帶入C語言教學與實踐環(huán)節(jié),取代傳統(tǒng)PC+VC構(gòu)架的繁冗模式,對編程課程的模式改革具有積極的意義。為了達到更好的教學效果,我們在教學方法上做了大量研究與準備工作,設(shè)計了8個漸進式教學項目。在課程設(shè)計的過程中,我們引入PBL,即基于問題學習的分組模式實現(xiàn)方式,同時配套了漸進式NodeMCU項目,使學生在學習過程中以項目為導向,以興趣為引領(lǐng),激發(fā)學生的學習熱情。具體如表1所示。
在這種模式下,我們在學生中開設(shè)了選修課程與開放性實驗進行積極的教學探索。10個分組的30課時學習過程中,所有學生都表現(xiàn)出極大的興趣,完成了理論學習與實踐案例。教學環(huán)節(jié)中,學生都會親自動手參與項目的實施,并將漸進項目中的理論部分不斷修改以求證自己尚未學習的未知領(lǐng)域,這在以往復雜的教學環(huán)節(jié)中是難以達到的。
我們也積極鼓勵學生在課外學習中將NodeMCU及其周邊設(shè)備帶到實踐領(lǐng)域。由于NodeMCU相對低廉的造價與便于攜帶的樣式,無論是對教學管理、教學成本、實驗室組織、管理、維護都相較于以往基于PC構(gòu)架高昂的費用有了巨大的進步。
在五級評價體系中,我們對70%左右同學的優(yōu)秀率感到欣喜。這在以往傳統(tǒng)框架下進行C語言的教學是不可能達成的目標。結(jié)課后,大多數(shù)學生也對繼續(xù)深入了解NodeMCU的高級主題表達了積極意愿,由此我們對課程設(shè)計的基本目標均已完成。
很多學生在通過基于NodeMCU項目驅(qū)動的程序設(shè)計模式之后,將學到的內(nèi)容融入各領(lǐng)域的創(chuàng)新中,在各種信息競賽中也取得了不錯的成績,這是我們在課程設(shè)計之初并未預料到的。
對于教師,除前期熟悉NodeMCU基礎(chǔ)框架外,理論知識與傳統(tǒng)PC構(gòu)架并無太多區(qū)別,所以也很容易從傳統(tǒng)教學模式轉(zhuǎn)換為新型教學方法。在授課中,教師與同學同步解決問題,教學相長也不再僅僅是一句口號。
對于課程的設(shè)計我們也剛剛起步,存在諸多問題和不足,我們應(yīng)在日后的課程中總結(jié)對比基于NodeMCU框架與傳統(tǒng)框架的聯(lián)系,幫助學生在有限的學習時間中事半功倍。基于更高階主題的教學也應(yīng)該是課程設(shè)計的考量:對于互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、大數(shù)據(jù)、云計算雖不是現(xiàn)階段教學大綱的要求,但對于新世紀復合型人才的培養(yǎng),擁有這些知識儲備將對學生日后的發(fā)展發(fā)揮不可預期的作用。
4" " "展望與探索
信息技術(shù)高速發(fā)展的今天,編程語言功不可沒。在可以預見的未來,對編程語言沒有認知的人必定被社會所淘汰。目前,工程技術(shù)領(lǐng)域中大約存在六百種語言,不斷有新興的編程語言因各種各樣的特色吸引著科技領(lǐng)跑者的目光,人們對編程方法的認知也在不斷地進步。根據(jù)世界權(quán)威TIOBE編程語言排行榜,C語言、Python語言和Java語言仍是三甲的有力爭奪者。值得一提的是其他兩種語言的中間載體皆為C語言所編制,我們在深深感謝C語言為世界科技進步做出如此巨大貢獻的同時,也為Python語言連續(xù)數(shù)月占據(jù)榜首拍手叫好。Python語言的語法習慣接近于C語言,雖執(zhí)行效率不及C語言,但由于其強大的可移植性以及對初學者學習的友好方式,不斷擴大著自己的影響范圍。更重要的是,在大數(shù)據(jù)信息處理和人工智能領(lǐng)域,Python語言由于其自身的特征成為編程語言中卓越的選擇。基于此,各高校近些年都在開設(shè)C語言課程的同時,不斷探索將Python或其他語言引入課堂教學的方式。
基于NodeMCU項目驅(qū)動的引入也完全順應(yīng)這種變化。由于其核心Esp系列Soc可根據(jù)性能的需求進行選擇,并且可以更新不同的固件支持不同的軟件平臺,這就決定了我們在課程設(shè)計的過程中不需要把具體的語言作為第一要素進行考量。只需選擇合適的核心型號,按照設(shè)計好的應(yīng)用框架更新相應(yīng)軟件模塊的固件,做簡單的調(diào)整,即可達到我們的設(shè)計要求。以我們設(shè)置課程為例,在程序設(shè)計語言課程教學活動中,我們采用以Esp8266為核心的NodeMCU模塊搭載Arduino集成開發(fā)環(huán)境,即可完成我們前述的案例進行C語言教學與實踐活動。我們計劃未來開設(shè)以Python語言為藍本的課程,在傳授語言語法的同時進行人工智能領(lǐng)域的探索,此時我們只需選擇性能更為強勁的Esp32為核心的NodeMCU,并更新使用MicroPython軟件模塊,即可實現(xiàn)我們的愿景。對實驗的案例也只需更換相應(yīng)的語言代碼。同時由于NodeMCU強大的社區(qū)群,在便捷設(shè)置好基礎(chǔ)軟硬件工作方式之后,學生遇到各種問題既可解決于課堂,也能在課外找到合適的處理方法。如此便捷快速的轉(zhuǎn)換方式,使我們不再過分糾結(jié)課程轉(zhuǎn)換遇到的各種低級重復問題,進而可以專注于基于Python語言特點的快速高級主題開發(fā)領(lǐng)域,比如圖像識別、物聯(lián)網(wǎng)應(yīng)用。
主要參考文獻
[1]郭雪峰. 項目驅(qū)動式教學的理論與實踐[J]. 和田師范專科學校學報,2010,29(5):59-60.
[2]吳鵬,李冶. 基于ESP8266的單片機網(wǎng)絡(luò)實驗系統(tǒng)[J]. 沈陽師范大學學報(自然科學版),2022(4):310-313.
[3]尚浩. 基于ESP智能控制系統(tǒng)設(shè)計與實現(xiàn)[J].九江學院學報(自然科學版),2020(3):61-64.
[4]譚浩強. C程序設(shè)計[M]. 4版. 北京:清華大學出版社,2012.
[5]游洋,周旭,劉陽杰,等. 物聯(lián)網(wǎng)技術(shù)應(yīng)用教程[M]. 成都:西南交通大學出版社,2020.
[收稿日期]2022-11-21
[基金項目]吉林大學本科教學改革項目(2021XZC112)。
[作者簡介]楊可揚(1979— ),男,講師,主要研究方向:物聯(lián)網(wǎng)、傳感器、圖像識別。