闖躍龍
(臺(tái)州學(xué)院 數(shù)學(xué)與信息工程學(xué)院,浙江 臺(tái)州 318000)
當(dāng)前,我國(guó)高校非計(jì)算機(jī)專業(yè)的入門編程課程依然以C語(yǔ)言和VB為主[1]。根據(jù)統(tǒng)計(jì),絕大部分工學(xué)類專業(yè)都選擇了C語(yǔ)言和VB作為編程類通識(shí)課程必修課,還有部分專業(yè)如電子信息工程、信息管理等選擇C語(yǔ)言作為專業(yè)必修課程。由此可見,對(duì)于非計(jì)算機(jī)專業(yè)學(xué)生來說,編程入門課程的第一選擇無(wú)疑是C語(yǔ)言或VB。
然而,在信息技術(shù)快速發(fā)展的大環(huán)境下,以C語(yǔ)言和VB為主的面向非計(jì)算機(jī)專業(yè)的編程入門課程多年來缺乏變化,無(wú)法應(yīng)對(duì)日新月異的技術(shù)變革和社會(huì)需求。近年來,隨著云計(jì)算和大數(shù)據(jù)技術(shù)的快速發(fā)展,Python以其易學(xué)、易用和易擴(kuò)展等優(yōu)點(diǎn)火爆起來。近年來,國(guó)內(nèi)外許多高校(尤其是國(guó)外高校)相繼開設(shè)了Python相關(guān)課程,并取得了不錯(cuò)的教學(xué)效果[2-3]。
高校非計(jì)算機(jī)專業(yè)的自身特點(diǎn)可以從專業(yè)和學(xué)生兩個(gè)方面進(jìn)行分析。
當(dāng)今科技正處在飛速發(fā)展的階段,計(jì)算機(jī)技術(shù)已經(jīng)滲透到各行各業(yè),其應(yīng)用范圍已遠(yuǎn)超科學(xué)計(jì)算的范疇。因此,程序設(shè)計(jì)不僅僅是計(jì)算機(jī)專業(yè)學(xué)生需要學(xué)習(xí)并掌握的一門課程,對(duì)于許多非計(jì)算機(jī)專業(yè)來說也是非常重要的一門課程。當(dāng)然,不同專業(yè)對(duì)程序設(shè)計(jì)的需求也各不相同。除了個(gè)別專業(yè)以外,絕大多數(shù)非計(jì)算機(jī)專業(yè)對(duì)計(jì)算機(jī)編程的要求并不高,一般來說只需了解基本知識(shí),掌握基本代碼和編寫步驟即可。在實(shí)際應(yīng)用中可以快速利用工具實(shí)現(xiàn)簡(jiǎn)單開發(fā)。在這種背景下,VB語(yǔ)言脫穎而出,成為絕大多數(shù)非計(jì)算機(jī)專業(yè)的首選。此外,處于自身的需求,部分專業(yè)也把C語(yǔ)言作為程序設(shè)計(jì)課程的首選。
除了專業(yè)自身的需要,還要考慮非計(jì)算機(jī)專業(yè)學(xué)生自身的特點(diǎn)[4-5]。大多數(shù)非計(jì)算機(jī)專業(yè)學(xué)生計(jì)算機(jī)基礎(chǔ)較弱,學(xué)時(shí)有限,學(xué)習(xí)內(nèi)容繁雜,抽象的程序設(shè)計(jì)課程對(duì)學(xué)生造成了極大的學(xué)習(xí)壓力?,F(xiàn)實(shí)的問題是,對(duì)于大多數(shù)學(xué)生來說,大學(xué)期間學(xué)習(xí)的編程知識(shí)并沒有在以后的工作中得以應(yīng)用。非計(jì)算機(jī)專業(yè)程序設(shè)計(jì)課程教學(xué)與實(shí)際使用的矛盾是當(dāng)前亟待解決的問題。所幸,近年來名為Python的編程語(yǔ)言火爆起來,并在各個(gè)行業(yè)都得到了廣泛的應(yīng)用。
如果把人和計(jì)算機(jī)作為懸崖的兩端,則編程語(yǔ)言就是跨越這個(gè)鴻溝的工具。編程語(yǔ)言種類多多,不同類型的語(yǔ)言最大的區(qū)別就是更貼近計(jì)算機(jī)還是人。C語(yǔ)言與VB和Python相比更加貼近計(jì)算機(jī)一端。這與C語(yǔ)言誕生的目的有關(guān)。C標(biāo)準(zhǔn)委員會(huì)撰寫的C語(yǔ)言基本原理中有一句話:“Make it fast, even if it is not guaranteed to be portable.”這句話奠定了整個(gè)C語(yǔ)言的設(shè)計(jì)與發(fā)展道路:一切以機(jī)器為核心。因此C語(yǔ)言代碼有著簡(jiǎn)潔緊湊和執(zhí)行效率高的特點(diǎn),并廣泛應(yīng)用于系統(tǒng)軟件、嵌入式軟件等開發(fā)。然而,隨著計(jì)算機(jī)軟硬件的快速發(fā)展,計(jì)算機(jī)向不同領(lǐng)域進(jìn)行滲透,眾多學(xué)科都可以利用計(jì)算機(jī)進(jìn)行數(shù)據(jù)處理,并冠以計(jì)算之名。
這樣的前提下,C語(yǔ)言的劣勢(shì)就凸顯了出來,主要表現(xiàn)如下:
(1)語(yǔ)法過于復(fù)雜、靈活。C語(yǔ)言的語(yǔ)法靈活,優(yōu)點(diǎn)是利用C語(yǔ)言幾乎可以高效地完成任何計(jì)算任務(wù),缺陷則是語(yǔ)法需要掌握的細(xì)節(jié)過多。這就導(dǎo)致了C語(yǔ)言學(xué)習(xí)難度大,代碼的開發(fā)難度較高,開發(fā)周期較長(zhǎng)。對(duì)于非計(jì)算機(jī)專業(yè)的學(xué)生來說,這些問題極大限制了對(duì)語(yǔ)法的掌握與應(yīng)用,不利于編程學(xué)習(xí)興趣的培養(yǎng)。從筆者的教學(xué)經(jīng)歷來看,對(duì)于絕大多數(shù)非計(jì)算機(jī)專業(yè)的學(xué)生來說,C語(yǔ)言程序設(shè)計(jì)始終是一門晦澀難懂的課程。
(2)表現(xiàn)形式不唯一。對(duì)于C語(yǔ)言來說,同樣功能的一個(gè)模塊(不論是簡(jiǎn)單或復(fù)雜),不同的人會(huì)寫出幾乎完全不同的代碼。這一方面是由于語(yǔ)法本身過于靈活造成的,但另一方面,也是C語(yǔ)言表現(xiàn)形式多樣的原因。代碼表現(xiàn)形式不唯一,直接導(dǎo)致的問題就是代碼的可讀性較差。可讀性的降低使得代碼的調(diào)試、分享難度加大,而表現(xiàn)形式唯一正是Python的最大特點(diǎn)之一。
VB源自早期的Basic,主要由Microsoft公司支持和維護(hù),用于開發(fā)Windows系統(tǒng)中的視窗應(yīng)用。VB的教學(xué)內(nèi)容主要包括窗體對(duì)象、按鈕、文本框、圖形界面、事件響應(yīng)等。由于VB語(yǔ)言有著“所見即所得”的開發(fā)特點(diǎn),繼承自VB的VBA(Visual Basic for Applications)支持面向Microsoft的Off i ce編程,如Word、Excel等,對(duì)于許多非計(jì)算機(jī)的專業(yè)來說有著一定的實(shí)際意義。
然而,VB最大的問題就是平臺(tái)依賴性。如前所示,VB由Microsoft公司提供支持與維護(hù),只能在Windows平臺(tái)下工作。此外,由于Microsoft公司的不開源的政策,VB的開源項(xiàng)目少之又少,第三方的代碼庫(kù)也不多。以上這些因素都嚴(yán)重限制了VB廣闊的應(yīng)用前景。
相較于以上兩種語(yǔ)言,Python可以說是集兩家之長(zhǎng),同時(shí)又規(guī)避了兩者的缺陷。首先,相比于C語(yǔ)言,Python更貼近人這一端,語(yǔ)法更加人性化。這就使得該語(yǔ)言易學(xué)易用。Python從一誕生,它的核心思想就是一切以用戶為中心,以用戶的工作效率為中心。Bruce Eckel在2001年做的著名的“Why I love Python”講座中提到Python一個(gè)核心的特點(diǎn)就是“It doesn’t value performance over my productivity”??梢姡琍ython的重點(diǎn)就是提高用戶的體驗(yàn)。此外,Python語(yǔ)言的表現(xiàn)形式具有一致性的特點(diǎn),強(qiáng)制采用縮進(jìn)的形式表現(xiàn)代碼的層次結(jié)構(gòu)。這樣就保證了代碼的可讀性,方便代碼的閱讀、調(diào)試和分享。其次,相比于VB,Python具有跨平臺(tái)、開源的優(yōu)勢(shì)。Python社區(qū)非常活躍,截止到2017年7月,根據(jù)Python官方的統(tǒng)計(jì),共有超過11萬(wàn)的第三方擴(kuò)展庫(kù)。海量的擴(kuò)展庫(kù)保證了Python廣泛的應(yīng)用范圍。
為了進(jìn)一步比較3種不同編程語(yǔ)言的特點(diǎn),筆者采用表格的形式,分別從編程環(huán)境、語(yǔ)法和現(xiàn)有教學(xué)資源等3個(gè)方面入手進(jìn)行比較,見表1—表3。通過表格可以發(fā)現(xiàn),Python無(wú)論在各個(gè)方面都有著其他語(yǔ)言所不具備的優(yōu)勢(shì)。
不同于計(jì)算機(jī)專業(yè)的學(xué)生,非計(jì)算機(jī)專業(yè)學(xué)生的計(jì)算機(jī)或數(shù)學(xué)水平參差不齊,不同專業(yè)學(xué)生對(duì)于編程語(yǔ)言的學(xué)習(xí)能力各不相同。直接采用C語(yǔ)言作為編程入門課程,從實(shí)際的教學(xué)效果來看并不是十分理想。面對(duì)龐雜的C語(yǔ)言特性,學(xué)生很容易失去學(xué)習(xí)編程語(yǔ)言的興趣。相比C語(yǔ)言,VB的情況要好一些。受益于它的所見即所得的編程方式,學(xué)生對(duì)于這門語(yǔ)言的掌握程度要遠(yuǎn)好于C語(yǔ)言,但VB的應(yīng)用范圍相較于C語(yǔ)言要小得多,其平臺(tái)依賴性等進(jìn)一步限制其應(yīng)用性。那為什么選擇Python作為編程課程呢?因?yàn)樗讓W(xué)易用、開源、免費(fèi)、跨平臺(tái)和面向?qū)ο蟆ython的易學(xué)易用可以保證學(xué)生把注意力從復(fù)雜的語(yǔ)法學(xué)習(xí),轉(zhuǎn)移到對(duì)實(shí)際問題的分析和思考上,而Python海量的擴(kuò)展庫(kù)保證幾乎任何專業(yè)的學(xué)生能找到適用本專業(yè)的庫(kù)資源,可以極大提高分析問題和解決問題的效率。
表1 開發(fā)環(huán)境對(duì)比
表2 語(yǔ)法對(duì)比
表3 現(xiàn)有教學(xué)資源
不同專業(yè)學(xué)生的背景不同,對(duì)編程語(yǔ)言的需求也千差萬(wàn)別。因此,面對(duì)非計(jì)算機(jī)專業(yè)學(xué)生的編程語(yǔ)言教學(xué)重點(diǎn)放在Python編程語(yǔ)言的基礎(chǔ)語(yǔ)法上,需要花大量的時(shí)間來學(xué)習(xí)基礎(chǔ)的編程知識(shí)。此外,長(zhǎng)時(shí)間的靜態(tài)教學(xué)會(huì)嚴(yán)重影響學(xué)生的學(xué)習(xí)興趣。為了避免這個(gè)問題,在整個(gè)教學(xué)過程中盡可能使得學(xué)生處在分析和思考問題的狀態(tài),提高學(xué)生獨(dú)立解決問題的能力。為了達(dá)到該目的,整個(gè)教學(xué)過程要以問題為中心,依靠提出問題—分析問題—解決問題來進(jìn)行Python語(yǔ)言基礎(chǔ)知識(shí)的教學(xué)。其次,不同專業(yè)的學(xué)生對(duì)編程語(yǔ)言的應(yīng)用需求也各不相同。為了能切實(shí)地提高學(xué)生的編程能力,方便學(xué)生的實(shí)際應(yīng)用,教學(xué)內(nèi)容應(yīng)該針對(duì)不同的專業(yè)有所調(diào)整,結(jié)合本專業(yè)的實(shí)際情況設(shè)計(jì)教學(xué)內(nèi)容[6]。以臺(tái)州學(xué)院信息管理與信息系統(tǒng)專業(yè)為例,該專業(yè)的培養(yǎng)目標(biāo)為:掌握信息管理基本理論,掌握管理信息系統(tǒng)的分析方法、設(shè)計(jì)方法和實(shí)現(xiàn)技術(shù),具有信息組織、分析研究、傳播與開發(fā)利用的基本能力。因此,針對(duì)該專業(yè)的Python授課,除了基礎(chǔ)知識(shí)外,重點(diǎn)應(yīng)放在基于Python 的數(shù)據(jù)挖掘上,其知識(shí)點(diǎn)主要應(yīng)包括:數(shù)據(jù)的可視化、利用機(jī)器學(xué)習(xí)算法實(shí)現(xiàn)基本的數(shù)據(jù)處理(分類、聚類、回歸等)和網(wǎng)絡(luò)數(shù)據(jù)的爬取等。
綜上所述,Python語(yǔ)言的教學(xué)內(nèi)容分為兩個(gè)層次:基礎(chǔ)知識(shí)和綜合訓(xùn)練?;A(chǔ)知識(shí)主要講述了Python語(yǔ)言的基本知識(shí)點(diǎn),通過以問題為中心的方式進(jìn)行授課。綜合訓(xùn)練部分要針對(duì)不同的專業(yè)進(jìn)行調(diào)整,能真實(shí)、準(zhǔn)確地反應(yīng)不同專業(yè)的需求。
綜上所述,相比于C語(yǔ)言和VB,Python有著易學(xué)易用,跨平臺(tái)和易擴(kuò)展等優(yōu)點(diǎn)。同時(shí),Python有著豐富的擴(kuò)展庫(kù),這就使得Python有著廣闊的應(yīng)用范圍。因此,采用Python語(yǔ)言作為非計(jì)算機(jī)專業(yè)的編程入門課程,既幫助學(xué)生了解編程的基礎(chǔ)知識(shí),又具有著一定的實(shí)用意義。