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