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

表1 開發環境對比

表2 語法對比

表3 現有教學資源
不同專業學生的背景不同,對編程語言的需求也千差萬別。因此,面對非計算機專業學生的編程語言教學重點放在Python編程語言的基礎語法上,需要花大量的時間來學習基礎的編程知識。此外,長時間的靜態教學會嚴重影響學生的學習興趣。為了避免這個問題,在整個教學過程中盡可能使得學生處在分析和思考問題的狀態,提高學生獨立解決問題的能力。為了達到該目的,整個教學過程要以問題為中心,依靠提出問題—分析問題—解決問題來進行Python語言基礎知識的教學。其次,不同專業的學生對編程語言的應用需求也各不相同。為了能切實地提高學生的編程能力,方便學生的實際應用,教學內容應該針對不同的專業有所調整,結合本專業的實際情況設計教學內容[6]。以臺州學院信息管理與信息系統專業為例,該專業的培養目標為:掌握信息管理基本理論,掌握管理信息系統的分析方法、設計方法和實現技術,具有信息組織、分析研究、傳播與開發利用的基本能力。因此,針對該專業的Python授課,除了基礎知識外,重點應放在基于Python 的數據挖掘上,其知識點主要應包括:數據的可視化、利用機器學習算法實現基本的數據處理(分類、聚類、回歸等)和網絡數據的爬取等。
綜上所述,Python語言的教學內容分為兩個層次:基礎知識和綜合訓練。基礎知識主要講述了Python語言的基本知識點,通過以問題為中心的方式進行授課。綜合訓練部分要針對不同的專業進行調整,能真實、準確地反應不同專業的需求。
綜上所述,相比于C語言和VB,Python有著易學易用,跨平臺和易擴展等優點。同時,Python有著豐富的擴展庫,這就使得Python有著廣闊的應用范圍。因此,采用Python語言作為非計算機專業的編程入門課程,既幫助學生了解編程的基礎知識,又具有著一定的實用意義。