丁凱孟 吳杰 陳文君
摘要:新工科要求非計算機專業(yè)的學(xué)生具有較高創(chuàng)新能力,能夠?qū)?fù)雜問題進行預(yù)測、模擬和求解,因此程序設(shè)計課程的重要性更為凸顯。但是,非計算機專業(yè)學(xué)生面臨著程序設(shè)計基礎(chǔ)相對薄弱等問題。本文結(jié)合新工科理念與Lua語言的優(yōu)勢,針對非計算機專業(yè)的程序設(shè)計課程中面臨的問題,從教學(xué)目標(biāo)、教學(xué)內(nèi)容和教學(xué)方法三個方面探討了“新工科”工程教育模式下非計算機專業(yè)開設(shè)Lua語言程序設(shè)計課程的問題。
關(guān)鍵詞:Lua語言;新工科;非計算機專業(yè);程序設(shè)計
中圖分類號:TP311 文獻標(biāo)志碼:A 文章編號:1674-9324(2018)49-0252-03
一、引言
隨著新技術(shù)、新產(chǎn)業(yè)等新經(jīng)濟的迅猛發(fā)展,為深化工程教育改革,推進新工科的建設(shè)與發(fā)展,教育部在2017年上半年發(fā)布了《關(guān)于開展“新工科”研究與實踐的通知》。新工科旨在培養(yǎng)多元化、創(chuàng)新型的卓越工程人才,以應(yīng)對新一輪科技革命與產(chǎn)業(yè)革命。新工科是有別于傳統(tǒng)工科的學(xué)科交叉產(chǎn)物,與傳統(tǒng)教學(xué)模式最大的區(qū)別在于其更加注重對學(xué)生實踐能力的培養(yǎng),要求學(xué)生具有對復(fù)雜問題進行預(yù)測、模擬和求解的能力。
新工科強調(diào)以信息化帶動工業(yè)化,要求學(xué)生掌握更高的創(chuàng)新能力、跨界整合能力,尤其注重信息技術(shù)、電子技術(shù)等新技術(shù)與傳統(tǒng)工業(yè)技術(shù)的緊密結(jié)合。在此背景下,計算機程序設(shè)計能力的培養(yǎng)對于非計算機專業(yè)學(xué)生愈發(fā)重要:一方面,程序設(shè)計能力的培養(yǎng)能夠鍛煉學(xué)生的邏輯思維能力、實際問題的分析能力;另一方面,新工科強調(diào)學(xué)科的實用性、交叉性與綜合性,程序設(shè)計能力的培養(yǎng)能夠提高非計算機專業(yè)學(xué)生的信息處理水平與計算機應(yīng)用能力,方便學(xué)生進行跨領(lǐng)域的研究實踐。
但是,很多非計算機專業(yè)的學(xué)生并沒有掌握較為全面的計算機基礎(chǔ)知識,對計算機程序設(shè)計的相關(guān)概念也較為模糊,再加上受學(xué)時限制,因此,系統(tǒng)學(xué)好一門編程語言對于非計算機專業(yè)的學(xué)生難度相對較大。此外,不同學(xué)校、不同專業(yè)對程序設(shè)計的要求也不盡相同。所以,程序設(shè)計課程的教學(xué)改革關(guān)鍵就在于選擇一種既簡單易學(xué),又能夠方便地結(jié)合不同專業(yè)領(lǐng)域的程序設(shè)計語言。Lua語言具有簡單易學(xué)、方便擴展功能等優(yōu)點,能夠很好地滿足上述要求。
本文針對非計算機專業(yè)程序設(shè)計課程中面臨的問題,結(jié)合新工科理念與Lua語言的優(yōu)勢,探討新工科工程教育模式下非計算機專業(yè)開設(shè)Lua語言程序設(shè)計的若干問題。
二、非計算機專業(yè)程序設(shè)計課程面臨的問題
由于新工科強調(diào)學(xué)科的實用性和交叉性,注重在傳統(tǒng)工業(yè)技術(shù)上應(yīng)用軟件設(shè)計、信息通信等新技術(shù),使得程序設(shè)計在非計算機專業(yè)的教學(xué)體系中占有重要地位。實際上,在計算機飛速發(fā)展的大背景下,我國高校普遍針對非計算機專業(yè)開設(shè)程序設(shè)計課程,所采用的程序設(shè)計語言以C語言、VB以及Java為主,但是,新工科背景下,上述編程語言存在一定局限性。
第一,C語言更接近計算機底層,開發(fā)出的程序更為高效。但是,C語言作為一種面向過程的語言,其語法晦澀嚴苛,程序編寫過程中容易出錯,一般需要較多時間用于調(diào)試代碼。而且,C語言的數(shù)據(jù)類型相對不夠完善,例如,缺乏布爾類型、時間類型等數(shù)據(jù)結(jié)構(gòu)。此外,C語言開發(fā)需要程序員自行設(shè)計許多基本功能,工作量較大,難度也相對較高。
第二,VB也被國內(nèi)很多院校作為程序設(shè)計課程的主語言,其優(yōu)勢在于難度較低、面向?qū)ο?、可視化的集成開發(fā)環(huán)境等。但是,VB僅適用于Windows系統(tǒng),不具有跨平臺性,具有較大局限性。而且,VB編寫的程序代碼運行效率低,速度相對較慢。更為關(guān)鍵的是,VB已經(jīng)長期沒有更新,難以適應(yīng)時代發(fā)展。因此,VB不適合學(xué)生的長遠發(fā)展。
第三,Java是面向?qū)ο蟮某绦蛘Z言,具有很好的跨平臺性、可靠性和安全性,主要用于網(wǎng)絡(luò)應(yīng)用程序開發(fā)。但是,Java本身重點關(guān)注代碼復(fù)用性和可移植性,對于非計算機專業(yè)學(xué)生而言,工作后應(yīng)用Java的場景較少,且學(xué)習(xí)成本也相對較高。此外,在動態(tài)性、開發(fā)效率等方面,Java不如Python、Lua等腳本語言。
總之,非計算機學(xué)生的專業(yè)各不相同,學(xué)習(xí)程序設(shè)計語言的目標(biāo)有所差別,思維方式也相差較大。在新工科強調(diào)培養(yǎng)適應(yīng)新時代、新技術(shù)創(chuàng)新人才的背景下,C語言、VB以及Java等傳統(tǒng)教學(xué)語言過分強調(diào)語法,已經(jīng)不能滿足需要。
三、Lua語言概述
Lua語言是一種高效、輕型的腳本語言,幾乎兼容所有的操作系統(tǒng)。和Python、Perl等腳本語言一樣,Lua語言是一種解釋類語言,不需要編譯和鏈接,而且支持動態(tài)類型語言。Lua語言可以與其他語言相互調(diào)用,尤其是與C/C++整合,能夠滿足不同應(yīng)用領(lǐng)域的需求。目前,Lua語言已經(jīng)在游戲開發(fā)、圖像信息處理、分布式控制與應(yīng)用、生物信息學(xué)等領(lǐng)域中得到了較為廣泛的應(yīng)用。
(一)Lua語言的特點
與C/C++、Java等相比,Lua語言沒有復(fù)雜的語法,與自然語言較為接近,學(xué)習(xí)成本較低。對于沒有編程經(jīng)驗的學(xué)生來說,Lua語言較易上手,學(xué)生無需糾結(jié)零碎的語法細節(jié)和程序編寫方式,能夠更快地抽象問題并提出解決方案。而且,Lua有數(shù)量眾多的擴展包,通過加載擴展包來實現(xiàn)不同的功能。此外,Lua還具有卓越的可擴展性:由宿主語言(C/C++、Java等)提供額外的復(fù)雜功能,再由Lua調(diào)用相應(yīng)的接口。Lua語言還具有很好的跨平臺性,幾乎可以在所有操作系統(tǒng)和平臺上編譯、運行。
與Python、Perl等腳本語言相比,Lua語言同樣具備很多優(yōu)點。
1.更為小巧。Lua本身較為小巧,Lua5.3的所有C源碼只有2.4萬行,編譯后的二進制包只有200KB;而Python的C源碼則高達54萬行,即使不含Module也有約17萬行C源碼。
2.更為高效。與Ruby、Python、JS等其他腳本語言相比,Lua運行時速度更快,而且占用內(nèi)存較少。
3.更加簡單易學(xué)。Lua語法基礎(chǔ)比較簡單,比較容易上手。與Python相比,Lua不需要強制用空白符作為語句縮進。
總之,與Python、Perl等其他腳本語言相比,除了第三方模塊沒有Python那么豐富外,Lua幾乎具有它們的全部優(yōu)點,而且更為高效。
(二)Lua語言的基本數(shù)據(jù)類型
在Lua語言中,變量在使用前不需要提前聲明,直接為變量賦值即可,其類型決定于用戶賦值的類型,而且變量的類型可變。
Lua的基本數(shù)據(jù)類型有6種:nil、boolean、number、string、function和table。
1.nil類型:表示沒有任何有效值,給一個變量賦值為nil,相當(dāng)于釋放該變量。
2.boolean類型:該類型與C++和Java中的bool類型相似,只有兩個值true或false。
3.number類型:默認情況下,表示雙精度類型的實浮點數(shù)。
4.string類型:即字符串類型,可以由一對雙引號表示,也可以由一對單引號來表示。
5.function類型:函數(shù)類型,可以由C語言或者Lua編寫。
6.table類型:關(guān)系表類型,可以當(dāng)作數(shù)組使用,數(shù)組的索引可以是數(shù)字或者是字符串。
四、Lua語言應(yīng)用于非計算機專業(yè)教學(xué)中的探討
新工科背景下的教學(xué)改革,首要目標(biāo)是促進學(xué)生全面發(fā)展,在此基礎(chǔ)上,還要滿足學(xué)生未來發(fā)展的需要。Lua語言能夠很好地滿足新工科背景下非計算機專業(yè)的程序設(shè)計課程的教學(xué)改革要求。
Lua語言優(yōu)點雖多,但其本身卻不是一種為大眾熟知的編程語言,而且使用Lua語言的程序設(shè)計教學(xué)經(jīng)驗相對匱乏。本文結(jié)合Lua語言的優(yōu)勢,從以下幾個方面進行相關(guān)探索。
(一)明確教學(xué)目標(biāo)
對于非計算機專業(yè)的學(xué)生而言,編程能力的培養(yǎng)不僅是為了提高學(xué)生的計算機應(yīng)用能力,還要培養(yǎng)學(xué)生的編程思想以及分析問題、解決問題的能力。選擇Lua語言作為非計算機專業(yè)的程序設(shè)計教學(xué)語言,優(yōu)勢在于Lua的學(xué)習(xí)成本較低、運行效率較高,Lua的功能更容易擴展,以解決具體行業(yè)面對的實際問題。
但是,不同工科專業(yè)對程序設(shè)計要求掌握的深度不同,因此,教學(xué)目標(biāo)需要明確。Lua語言程序設(shè)計的教學(xué)目標(biāo)包括以下幾個方面。
1.使學(xué)生掌握Lua語言的基本概念與基本語法,包括數(shù)據(jù)類型、數(shù)值運算、語句塊、函數(shù)等。
2.使學(xué)生掌握基于Lua語言的常用算法,以排序問題為例,學(xué)生應(yīng)掌握至少一種或幾種基本的排序算法,如冒泡排序、選擇排序等。
3.訓(xùn)練學(xué)生對一般問題的建模能力,并能夠使用Lua語言解決問題。
4.結(jié)合專業(yè)特點進行教學(xué),使學(xué)生掌握第三方類庫的使用,如通信工程專業(yè)重點介紹科學(xué)計算模塊庫,建筑學(xué)專業(yè)重點介紹計算機輔助設(shè)計類模塊。
5.使學(xué)生掌握通過C/C++等宿主語言擴展Lua功能的能力。需要說明的是,不同的工科專業(yè),可以視專業(yè)情況而決定是否需要達到這一教學(xué)目標(biāo)。
(二)結(jié)合具體專業(yè)來規(guī)劃教學(xué)內(nèi)容
Lua程序設(shè)計的基本教學(xué)內(nèi)容包括以下方面。
1.基本數(shù)據(jù)類型,包括nil、boolean、number、string等。
2.程序流程控制,包括順序、選擇、循環(huán)等控制結(jié)構(gòu)。Lua語言中的選擇結(jié)構(gòu)包括if語句、if...else語句、if嵌套語句等,循環(huán)結(jié)構(gòu)包括while循環(huán)、for循環(huán)、repeat...until循環(huán)以及嵌套循環(huán)等。
3.table,包括table的構(gòu)造、table操作、table連接、table插入和移除等。
4.函數(shù),包括函數(shù)定義、函數(shù)的參數(shù)傳遞與返回值、變量作用域等。
5.Lua模塊與包,包括加載模塊、加載機制等。
6.Lua文件I/O,包括簡單模式與完全模式。
關(guān)于Lua語言程序設(shè)計的教學(xué)學(xué)時,不同學(xué)校、專業(yè)的要求不同,學(xué)時也可以不同(如32學(xué)時或者48學(xué)時)。但僅僅利用上課時間并不能達到最佳的學(xué)習(xí)效果,所以教師應(yīng)當(dāng)結(jié)合專業(yè)實際需求安排一定的編程習(xí)題或者相關(guān)案例,供學(xué)生在課下進行編程練習(xí)。
(三)教學(xué)方法
Lua語言與傳統(tǒng)的C語言、Java不同,語法相對簡單、更容易入門,所以教學(xué)過程中無需過分強調(diào)語法,可以適當(dāng)增加與專業(yè)有關(guān)的編程實踐,使學(xué)生能夠較快掌握解決專業(yè)問題的能力。在實踐過程中,教師應(yīng)當(dāng)對涉及的基礎(chǔ)概念、方法進行及時總結(jié),以夯實理論知識。
在教學(xué)過程中,教師應(yīng)當(dāng)著重培養(yǎng)學(xué)生的編程思維,鼓勵學(xué)生尋求更簡單、更高效的方法來解決問題。此外,教師可以充分分析專業(yè)需求與特點,以學(xué)生在專業(yè)學(xué)習(xí)中遇到的問題為切入點,引導(dǎo)學(xué)生積極思考并解決問題,從而激發(fā)學(xué)生學(xué)習(xí)Lua語言的興趣。
由于很少有高校開設(shè)Lua程序設(shè)計語言的相關(guān)課程,所以可供直接借鑒的教學(xué)經(jīng)驗相對較少。但是,作為一種腳本語言,Lua語言與Python較為相似,語法都比較簡單、干脆,都具有眾多擴展模塊,且都能夠通過C/C++等高級語言擴展功能,因此,Lua語言程序設(shè)計課程也可以借鑒Python程序設(shè)計的相關(guān)教學(xué)經(jīng)驗。
五、小結(jié)
新工科的目標(biāo)是培養(yǎng)適應(yīng)新時代、新技術(shù)的現(xiàn)代化工程創(chuàng)新人才,在此背景下,培養(yǎng)非計算機專業(yè)學(xué)生的編程思想以及分析問題、解決問題的能力具有重要意義。本文在討論了Lua語言的特點和優(yōu)勢后,對Lua語言在程序設(shè)計教學(xué)中的實踐進行了探討,希望能夠促進Lua語言在非計算機專業(yè)的程序設(shè)計教學(xué)中的推廣和應(yīng)用。
參考文獻:
[1]鐘登華.新工科建設(shè)的內(nèi)涵與行動[J].高等工程教育研究,2017,(3):1-6.
[2]宋余慶,陳權(quán),劉哲,朱軼,潘天紅,劉會霞.新工科背景下工程創(chuàng)新人才國際培養(yǎng)的探索與實踐——基于“雙跨”團隊體驗混合式學(xué)習(xí)模式的建構(gòu)[J].高校教育管理,2018,12(3):102-108.
[3]仲曉芳,龐勝楠,尹百慧.面向非計算機類專業(yè)Python編程教學(xué)設(shè)計研究[J].無線互聯(lián)科技,2017,(18):82-83.
[4]趙廣輝.面向新工科的Python程序設(shè)計交叉融合案例教學(xué)[J].計算機教育,2017,(8):23-27.
[5]楊杰.Lua——以總統(tǒng)為名的移動開發(fā)語言新貴[J].電腦與電信,2014,(4):46-48.