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