嵩天 黃天羽 禮欣



摘要:面向計算思維的教學(xué)改革需要理解計算思維的時代性,即計算思維是基于計算機(jī)技術(shù)的科學(xué)思維,教學(xué)改革要符合并適應(yīng)計算機(jī)技術(shù)的發(fā)展階段。Python語言是目前最接近自然語言的通用編程語言,近年來在美國大學(xué)廣受歡迎,并取得了良好的教學(xué)效果。面向非計算機(jī)專業(yè)本科生開展Python語言教學(xué)是程序設(shè)計課程發(fā)展的重要?dú)v史契機(jī),有助于進(jìn)一步釋放師生活力和創(chuàng)新熱情,全面提升教學(xué)質(zhì)量,使學(xué)生有機(jī)會掌握一門終身受用的程序設(shè)計語言。
關(guān)鍵詞:高等教育:教學(xué)改革;Python語言:計算思維:程序設(shè)計;非計算機(jī)專業(yè)
一、計算思維培養(yǎng)視角下的程序設(shè)計課程
1.程序設(shè)計課程教學(xué)內(nèi)容分析
我們選取非計算機(jī)專業(yè)本科生程序設(shè)計課程最主要的教學(xué)內(nèi)容:C,Java,VB三種編程語言,以及本文建議開設(shè)的Python語言,逐一分析這些編程語言所闡述的計算思維外延。
(1)C語言。我國大學(xué)針對非計算機(jī)專業(yè)普遍開設(shè)C語言程序設(shè)計課程,其實(shí)際教學(xué)內(nèi)容圍繞數(shù)據(jù)類型、指針、內(nèi)存、字符操作等開展。這些內(nèi)容主要詮釋“計算機(jī)系統(tǒng)結(jié)構(gòu)時代”的計算思維外延,即計算機(jī)體系結(jié)構(gòu)(計算機(jī)工作原理)的抽象和自動化。通過這種計算思維的培養(yǎng),能夠讓學(xué)生掌握程序的高效運(yùn)行模式。
然而,由于非計算機(jī)專業(yè)同學(xué)缺少計算機(jī)體系結(jié)構(gòu)相關(guān)知識,也沒有專業(yè)需求,即使通過C語言考試,也很難在后續(xù)計算機(jī)應(yīng)用中使用該語言解決面對的計算問題。C語言更適合的教學(xué)對象是需要對程序運(yùn)行效率依賴性高的群體,主要是計算機(jī)及部分信息類專業(yè)學(xué)生。
(2)Java語言。由于該語言是面向?qū)ο笳Z言,其實(shí)際教學(xué)內(nèi)容圍繞類、對象、封裝、繼承、多態(tài)、接口等面向?qū)ο蠓椒ㄩ_展。這些內(nèi)容主要詮釋了“計算機(jī)網(wǎng)絡(luò)時代”的計算思維,體現(xiàn)在計算機(jī)網(wǎng)絡(luò)對異構(gòu)性的支持(跨平臺)和對魯棒性(運(yùn)行時)的需求。從計算思維本質(zhì)角度,Java語言抽象了問題中的主體邊界和主客體關(guān)系,通過面向?qū)ο蟾拍睿_展高效的代碼復(fù)用。
同樣,非計算機(jī)專業(yè)同學(xué)的培養(yǎng)目標(biāo)并非專業(yè)程序員,并不需要關(guān)注代碼復(fù)用性和可移植性,且Java語言開發(fā)功能很少直接應(yīng)用在個人應(yīng)用中,學(xué)生學(xué)習(xí)后缺少應(yīng)用場景,很難持續(xù)使用。Java語言適合的教學(xué)對象是需要編寫高復(fù)用性或高可靠性代碼的群體,主要是計算機(jī)專業(yè)學(xué)生。
(3)VB語言。該語言發(fā)展自早期的Basic語言,主要由微軟公司支持和維護(hù),用于開發(fā)Windows系統(tǒng)中的視窗應(yīng)用。VB語言實(shí)際教學(xué)內(nèi)容圍繞窗體對象、按鈕、文本框、圖形界面、事件響應(yīng)等開展,這些內(nèi)容詮釋了“計算機(jī)視窗”時代(與“計算機(jī)網(wǎng)絡(luò)”時代在時間上重疊)的計算思維,體現(xiàn)在根植于視窗的語法設(shè)計體系。VB語言抽象了交互邏輯和響應(yīng)關(guān)系,以及自動化邏輯間交互方式。
由于VB語言所開發(fā)的程序所見即所得,且繼承VB語法的VBA(Visual Basic for Applica.tions)語言能夠支持Word及Excel等辦公軟件的編程擴(kuò)展,對非計算機(jī)專業(yè)同學(xué)有一定實(shí)際作用,因此,該語言的教學(xué)效果相對較好。VB語言最適合的教學(xué)對象是需要編寫視窗應(yīng)用的群體,主要是計算機(jī)及信息類專業(yè)學(xué)生。然而,必須看到,VB語言及后續(xù)的VB.NET所開發(fā)程序僅限于Windows系統(tǒng),屬于微軟公司專屬商業(yè)開發(fā)工具,語言使用具有較大局限性,應(yīng)用面狹窄。
(4)Python語言。這是一門發(fā)展了近30年的編程語言,是目前美國大學(xué)最受歡迎的程序設(shè)計語言。Python語言實(shí)際教學(xué)內(nèi)容是分支、循環(huán)、函數(shù)等基本的程序邏輯關(guān)系及功能強(qiáng)大的函數(shù)庫應(yīng)用,它是目前最接近自然語言的通用編程語言。該語言只關(guān)心計算問題的求解,其輕量級的語法和高層次的語言表示表達(dá)了應(yīng)用計算機(jī)解決問題的計算思維理念。
Python語言抽象了問題及解決方案,自動化問題求解,是“復(fù)雜信息系統(tǒng)時代”利用計算機(jī)解決問題最直觀的表達(dá)工具。從北京理工大學(xué)和美國多所高校的實(shí)際教學(xué)效果看,Python語言適合的教學(xué)對象是需要利用計算機(jī)解決各類計算問題的群體,這恰是大學(xué)程序設(shè)計課程的教學(xué)目的,涉及的本科生包括計算機(jī)專業(yè)和非計算機(jī)專業(yè)學(xué)生。
2.面向本科生開設(shè)Python語言的建議
表1匯總了4種程序設(shè)計語言的計算思維外延,從計算思維“抽象”和“自動化”兩方面考慮,給出了各程序設(shè)計語言的理解。其中,“自動化”的狹義含義指程序邏輯的自動運(yùn)行,而這里所指的“自動化”除了表達(dá)程序基本邏輯運(yùn)行外,主要指通過“抽象”后,程序獲得運(yùn)行邏輯以外的收益。
與計算機(jī)專業(yè)理解并應(yīng)用計算機(jī)系統(tǒng)結(jié)構(gòu)、計算機(jī)網(wǎng)絡(luò)等專業(yè)知識教學(xué)不同,面向非計算機(jī)專業(yè)計算機(jī)基礎(chǔ)類程序設(shè)計課程的定位應(yīng)該是:通過某一編程語言的教學(xué)傳授利用計算思維解決一般計算問題的基本方法,并能夠通過程序設(shè)計更好地利用計算機(jī)強(qiáng)大的計算性能。即:程序設(shè)計語言應(yīng)該成為學(xué)生以計算思維將計算問題轉(zhuǎn)變?yōu)橛嬎銠C(jī)程序的有效手段。
計算機(jī)技術(shù)已經(jīng)發(fā)展到“復(fù)雜信息系統(tǒng)時代”,普通計算機(jī)性能強(qiáng)大,對于一般計算問題,計算機(jī)的計算性能不再是求解問題瓶頸。因此,針對更廣泛學(xué)生培養(yǎng)計算思維的實(shí)踐,應(yīng)該與計算機(jī)技術(shù)發(fā)展相適應(yīng),在這個技術(shù)“時代”更應(yīng)關(guān)注問題的求解,超越對程序執(zhí)行性能、代碼高復(fù)用性或某一個特殊系統(tǒng)中視窗設(shè)計的關(guān)注,讓學(xué)生真正掌握利用計算機(jī)解決計算問題的通用方法。
綜上分析,結(jié)合計算思維時代性特點(diǎn),我們提出面向非計算機(jī)專業(yè)本科生開設(shè)Python語言的建議,尤其是將Python語言作為首選語言開設(shè)。即使針對計算機(jī)專業(yè)本科生(“985工程”高?;颉?11工程”高校),我們也建議將Python語言作為第二門程序設(shè)計語言開設(shè)。對于以應(yīng)用為主的計算機(jī)專業(yè)本科高校,更建議將Python語言作為首門程序設(shè)計語言開設(shè)。
3.開設(shè)Python語言的必要性和重要意義
從程序設(shè)計語言發(fā)展角度來看,高級編程語言的設(shè)計一直追求接近人類的自然語言。這樣的高級語言需要兩個基本要求:不存在自然語言中廣泛存在的歧義性以及隱藏計算機(jī)系統(tǒng)的設(shè)計細(xì)節(jié)。C,Java,VB從各自角度抽象了程序設(shè)計,Python語言又進(jìn)一步,提供十分接近人類理解的語法形式。應(yīng)該說,Python語言發(fā)展了高級語言的表達(dá)形式,簡化程序設(shè)計過程,提升了程序設(shè)計效率。
從計算思維培養(yǎng)角度,表1說明了已有教學(xué)語言的局限性和技術(shù)時代的關(guān)聯(lián)性,即傳統(tǒng)C,Java和VB語言過分強(qiáng)調(diào)語法并不適合非計算機(jī)專業(yè)學(xué)生。從傳統(tǒng)應(yīng)用技能教育向計算思維培養(yǎng)轉(zhuǎn)變過程中,教學(xué)內(nèi)容變革是重中之重。對于程序設(shè)計課程,選擇適合技術(shù)時代發(fā)展的編程語言是顯著提高培養(yǎng)效果的前提和基礎(chǔ)。
從解決計算問題角度,傳統(tǒng)c,Java和VB語言過分強(qiáng)調(diào)語法并不適合非計算機(jī)專業(yè)學(xué)生解決一般計算問題,Python語言作為適應(yīng)新技術(shù)時代的輕語法程序設(shè)計語言,應(yīng)該得到大學(xué)計算機(jī)教育領(lǐng)域的重視。
從上述三方面看,Python語言相比其他語言具有更高的教學(xué)價值。這一技術(shù)趨勢也得到了國外眾多大學(xué)的直接響應(yīng)。以美國斯坦福大學(xué)為例,該校從2009年開設(shè)Python語言程序設(shè)計類課程開始,每年新增約5門課程,截止到2015年,該校年度開設(shè)22門與Python語言相關(guān)課程,并替換了之前的Java語言和部分專業(yè)的C語言課程。
隨著大數(shù)據(jù)、云計算、網(wǎng)絡(luò)空間安全等概念的興起,當(dāng)代信息社會要求大學(xué)生在具備操作計算機(jī)的基礎(chǔ)技能外,還要具備一定的編程能力,用于解決工作和學(xué)習(xí)中遇到的各類非通用計算問題,理解并實(shí)踐計算思維。這種信息時代深入發(fā)展的趨勢為程序設(shè)計課程的內(nèi)容改革提供了依據(jù)。
程序設(shè)計課程教學(xué)內(nèi)容的變化是一個正常的技術(shù)更迭過程。從20世紀(jì)90年代開始,程序設(shè)計課程的教學(xué)內(nèi)容經(jīng)過幾次較大變化,曾經(jīng)廣泛教學(xué)的Pascal語言、Fortran語言被C語言、Java語言、VB語言等取代。然而,從21世紀(jì)開始,程序設(shè)計語言教學(xué)內(nèi)容基本沒有改變,針對非計算機(jī)專業(yè)學(xué)生主要開設(shè)C語言、Java語言和VB語言。教學(xué)內(nèi)容近15年的穩(wěn)定并非因?yàn)樯鲜鼋虒W(xué)內(nèi)容達(dá)到了教學(xué)預(yù)期,而是受制于特定技術(shù)時代的歷史局限性。我們認(rèn)為,用Python語言替代傳統(tǒng)教學(xué)內(nèi)容是程序設(shè)計課程發(fā)展中的一個重要?dú)v史契機(jī),這種教學(xué)內(nèi)容的變化將在十年甚至更長的時間尺度上影響本科生計算思維和基礎(chǔ)計算機(jī)應(yīng)用能力的培養(yǎng),值得高校領(lǐng)導(dǎo)和教師在認(rèn)識上給予足夠重視。
由于計算機(jī)技術(shù)在科學(xué)技術(shù)體系中的廣泛性和基礎(chǔ)性,將Python語言全面納入大學(xué)計算機(jī)教學(xué)計劃具有重要意義和深遠(yuǎn)影響。
Python語言解釋器是開源的且開源協(xié)議限制很少,任何基于該語言編寫的代碼都符合我國“自主可控”的信息安全要求。
Python語言的易學(xué)易用和豐富的開源庫將會給學(xué)生帶來一個全新的程序設(shè)計認(rèn)識,改變主觀渴望學(xué)好編程語言但客觀上學(xué)不會學(xué)不精的狀況,有助于幫助學(xué)生學(xué)會一種終身受用的編程語言,進(jìn)而幫助他們更好地利用計算機(jī)解決所面臨的各類計算問題。
Python語言的高編寫效率會進(jìn)一步加快程序?qū)崿F(xiàn)和修改節(jié)奏,降低程序錯誤率,縮短計算服務(wù)和產(chǎn)品的上市時間,提高國民綜合生產(chǎn)效率。
在我國全面提高高等教育質(zhì)量、廣泛開展本科教學(xué)工程背景下,Python語言教學(xué)改革將會開啟一個全新的程序設(shè)計語言教學(xué)時代,進(jìn)一步釋放師生活力和創(chuàng)新熱情,全面提升教學(xué)質(zhì)量。以Python語言教學(xué)為手段,將更容易開展計算思維教育教學(xué)活動,使學(xué)生在思維和技能兩方面終身受益。
北京理工大學(xué)自2013年面向非計算機(jī)專業(yè)開設(shè)了全校公選課“Python語言程序設(shè)計”,取得了學(xué)生的高度認(rèn)同,不及格率明顯下降,學(xué)生反饋教學(xué)效果顯著提高。鑒于對高級語言發(fā)展的理解和實(shí)際教學(xué)效果,我們建議國內(nèi)高校普遍針對非計算機(jī)專業(yè)開展教學(xué)改革,開設(shè)Python語言程序設(shè)計課程。
二、Python語言和高校教學(xué)改革
1.Python語言特點(diǎn)
Python語言是Guido van Rossum在1990年開發(fā)的編程語言,至今已經(jīng)有26年歷史,目前最新版本是3.5.1。Python語言的全部實(shí)現(xiàn)都是開源的,遵循類似GPL但比其更寬松的開源協(xié)議,該協(xié)議可以允許不公開基于Python的修改版本,并將Python與其他軟件共同在GPL下發(fā)布。Python語言的版權(quán)由PSF(PythonSoftware Foundation,Python軟件基金會)持有,該基金會是一個非營利組織,通過接受捐款來推進(jìn)Python語言的推廣和開源事業(yè)。
Python語言是一個輕語法、弱類型的腳本語言。與C語言相比,Python語言沒有指針、地址等計算機(jī)系統(tǒng)結(jié)構(gòu)元素;對于變量無須定義直接使用,由解釋器自動匹配;語言內(nèi)部采用UTF-8編碼實(shí)現(xiàn),具有獨(dú)立的字符串類型,簡化了多語言文本的操作,對中文有良好的支持;通過使用變長列表而不是定長數(shù)組,兼容多種數(shù)據(jù)類型并靈活表達(dá)集合長度。
除了基本語法外,Python語言是一個腳本語言,即通過直接運(yùn)行源代碼來執(zhí)行,這使得程序運(yùn)行與源代碼不可分離。對于非專業(yè)學(xué)生來說,源代碼執(zhí)行這種模式有助于代碼維護(hù)、跨多個操作系統(tǒng)和交流代碼設(shè)計與實(shí)現(xiàn)。
Python語言代碼十分簡潔,可以支持面向過程和面向?qū)ο髢煞N程序設(shè)計方法,并不要求程序通過函數(shù)封裝,代碼行數(shù)可以縮減為c語言同樣功能的1/5到1/10。以最簡單的“HelloWorld”為例,Python語言的可運(yùn)行源代碼程序是:
Print(”Hello World!”)
C語言編寫的程序需要引入mainfl函數(shù),其可運(yùn)行源代碼程序如下:
#include
int main()
{
printf(”Hello World?。躰”);
return 0;
}
此外,Python語言還可以編寫圖形界面程序,并且十分簡潔。例如,下面所示程序可以繪制一條曲線,形成一棵樹的形狀:
from turtle import*
def tree(plist,l,a,f):
if>5:
ist=[1
for p in plist:
p.forward(1)
q=p.clone()
p.1eft(a)
q.right(a)
ist.append(p)
ist.append(q)
tree(1st,l*f,a,f)
p=Turtle()
p.color(”green”)
p.pensize(3)
p.speed(10)
p.1eft(90)
t=tree(【p】,110,65,O.6375)
輸出結(jié)果如下圖:
從上面兩個簡單實(shí)例可以看到,Python語言與C語言相比能夠更好支持圖形輸出、具有更少的程序代碼、更接近自然語言邏輯的語法等。同時,Python語言兼容面向?qū)ο蠛兔嫦蜻^程兩種設(shè)計方式,不在語法和程序編寫方法上過分限制。
2.Python語言的時代先進(jìn)性
歷史上出現(xiàn)的程序設(shè)計語言超過200種,然而,至今常用的語言不超過20種。Python作為當(dāng)代常用的通用編程語言之一,具有很強(qiáng)的生命力,這種生命力主要來源于該語言的時代先進(jìn)性,體現(xiàn)在以下三個方面:
第一,Python語言的設(shè)計本質(zhì)。Python語言是目前最接近自然語言的高級語言,抽象程度高,代碼編寫高效,符合計算思維的時代性,適應(yīng)當(dāng)代計算機(jī)技術(shù)發(fā)展水平。Python語言更側(cè)重問題求解,在計算機(jī)性能高度發(fā)展的今天,該語言更適合解決運(yùn)算性能非關(guān)鍵的一般計算問題。
第二,Python語言的開源開放體系。目前,圍繞Python語言形成了世界上最大的針對單一編程語言的開放社區(qū),截至2015年11月,這一開放社區(qū)共提供超過68956個函數(shù)庫,覆蓋信息技術(shù)的眾多技術(shù)領(lǐng)域。其中大量函數(shù)庫編寫質(zhì)量很高,且同樣開源,為使用Python語言編寫程序提供了極大的便利和良好的學(xué)習(xí)平臺。這種開源開放理念是推動計算機(jī)發(fā)展的原動力。
第三,Python語言的良好就業(yè)前景。云計算、大數(shù)據(jù)、移動互聯(lián)網(wǎng)、創(chuàng)意游戲等給Python語言提供了良好的就業(yè)前景。表2列出了美國前兩位在線招聘網(wǎng)站在美國加州,以及中國前兩位招聘網(wǎng)站在北京、上海、廣州、深圳等四個一線城市對Python語言、C語言、VB語言和Java語言程序員的需求對比。盡管這些就業(yè)需求數(shù)據(jù)并不能作為開設(shè)課程的依據(jù),但可以作為對教學(xué)內(nèi)容的一個評判維度。從職位需求的數(shù)量級別可以看出,在美國,Python語言和Java語言已經(jīng)是程序員就業(yè)市場上很重要的兩個分支,其中Python語言的市場需求約是Java語言的一半。然而,在國內(nèi),受限于大學(xué)教學(xué)的局限性和產(chǎn)業(yè)界對編程語言的信息洼地,Python語言程序員需求剛剛超過C語言和VB語言。這里需要說明的是,Java語言的就業(yè)需求幾乎都是針對Android系統(tǒng)的APP開發(fā),面向?qū)I(yè)計算機(jī)程序員,比較單一。而Python語言就業(yè)需求更為廣泛,包括數(shù)據(jù)分析師、運(yùn)維工程師、產(chǎn)品測試等多個類別。
3.針對Python語言的教學(xué)開展
中國和美國在Python語言高校教學(xué)方面存在較大差距。其實(shí),程序設(shè)計語言課程的教學(xué)內(nèi)容很難達(dá)到教學(xué)目標(biāo)的問題同樣困擾美國大學(xué)教學(xué),然而,近5年,美國大學(xué)通過引入Python語言在該課程的教學(xué)改革方面取得了顯著進(jìn)展。
以美國斯坦福大學(xué)為例,該校從2009年開設(shè)Python語言程序設(shè)計類課程開始,每年新增約5門課程,截至2015年,該校年度開設(shè)22門與Python語言有關(guān)的課程,尤其是針對非計算機(jī)專業(yè)學(xué)生,替換了之前的Java語言和部分C語言。美國綜合排名前100的大學(xué)有超過70所在近3年開設(shè)了Python語言類課程。另外,有一批美國地方大學(xué)針對學(xué)生實(shí)際情況,開設(shè)了Python語言,從教學(xué)效果和質(zhì)量來看,相關(guān)教改取得了較好效果。
在我國,截至2015年,開設(shè)Python語言教學(xué)的高校不超過10所,大多數(shù)以小班嘗試為主。大部分課程面向計算機(jī)專業(yè)學(xué)生作為第二門語言學(xué)習(xí),針對非計算機(jī)專業(yè)學(xué)生開設(shè)Python語言課程的教學(xué)實(shí)踐還相當(dāng)有限。
與教學(xué)開展類似,國內(nèi)Python語言相關(guān)教材和參考書建設(shè)也十分有限。以美國和中國亞馬遜網(wǎng)站數(shù)據(jù)為例,截至2015年11月,美國亞馬遜有關(guān)Python語言的英文參考書為5 782本,相比,中文Python語言參考書僅為1 360本,而且其中絕大多數(shù)為國外參考書的翻譯版,因此適合高校使用的教材亟待建設(shè)。
從教學(xué)開展和教學(xué)資源建設(shè)方面看,國內(nèi)高校對開展Python語言教學(xué)的重要價值和意義認(rèn)識不足,且缺少師資和參考教學(xué)體系。
北京理工大學(xué)從2013年開始開設(shè)了全校公選課,編寫面向非計算機(jī)專業(yè)的Python語言教材,由高等教育出版社出版,同時,建立了整套教學(xué)體系和豐富的教學(xué)資源。2015年,主講教師結(jié)合教學(xué)改革進(jìn)展在“中國大學(xué)MOOC”上開設(shè)了“Python語言程序設(shè)計”課程,首次選課人數(shù)超過2萬人,顯示了Python語言較強(qiáng)的學(xué)習(xí)需求,MOOC課程為我們積累了更多教學(xué)經(jīng)驗(yàn)。希望這些教學(xué)資源能夠?yàn)閲鴥?nèi)同行開設(shè)Pvthon語言課程提供參考。
面向計算思維的教學(xué)改革需要理解計算思維的時代性,即計算思維是基于計算機(jī)技術(shù)的科學(xué)思維,教學(xué)改革要符合并適應(yīng)計算機(jī)技術(shù)的發(fā)展階段。本文從計算思維培養(yǎng)角度對傳統(tǒng)程序設(shè)計課程的教學(xué)內(nèi)容進(jìn)行分析,提出了面向非計算機(jī)專業(yè)本科生開設(shè)Python語言的建議,闡述了該教學(xué)建議的時代選擇性、緊迫性和重要意義。結(jié)合Python語言自身特點(diǎn)、就業(yè)需求數(shù)據(jù)、國內(nèi)外開展教學(xué)現(xiàn)狀和資源建設(shè)情況,分析得出;Python語言教學(xué)內(nèi)容改革是程序設(shè)計課程發(fā)展的重要?dú)v史契機(jī),將在十年甚至更長的時間尺度上影響本科生計算思維和基礎(chǔ)計算機(jī)應(yīng)用能力的培養(yǎng)。開展Pvthon語言教學(xué)有助于進(jìn)一步釋放師生活力和創(chuàng)新熱情,全面提升教學(xué)質(zhì)量,使學(xué)生有機(jī)會掌握一門終身受用的程序設(shè)計語言。
[責(zé)任編輯:余大品]