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