孫溢洋 陳樞茜
(南通理工學(xué)院計(jì)算機(jī)與信息工程學(xué)院,江蘇 南通 226004)
隨著云計(jì)算、大數(shù)據(jù)和人工智能的快速發(fā)展,Python語言因其語法簡(jiǎn)潔、跨平臺(tái)、開源等特點(diǎn)成為當(dāng)前最熱門的計(jì)算機(jī)編程語言之一。TIOBE 最新發(fā)布了2021年1月編程語言排行榜,揭曉了2020年度比較受歡迎的編程語言,如圖1所示,其中Python 以2.01 %的正增長榮獲2020年度TIOBE編程語言獎(jiǎng)。Python語言的發(fā)展?jié)摿爸匾圆谎远鳌R虼恕禤ython程序設(shè)計(jì)》課程在軟件工程專業(yè)中越來越受到重視,成為我校計(jì)算機(jī)學(xué)院軟件工程專業(yè)的一門重要的專業(yè)課程,其目的是讓學(xué)生利用Python語言更好地掌握程序設(shè)計(jì)的綜合應(yīng)用與創(chuàng)新能力。
圖1 TIOBE 2021年1月排行榜
《Python程序設(shè)計(jì)》是我校軟件工程專業(yè)的一門專業(yè)必修課,占3學(xué)分,共64學(xué)時(shí),其中理論32學(xué)時(shí),實(shí)驗(yàn)32學(xué)時(shí)。在開設(shè)本課程前需要完成C語言程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)等先修課程。主要講解Python語言的基本語法規(guī)則及基本應(yīng)用,如函數(shù)、面向?qū)ο蟆/O編程、數(shù)據(jù)庫編程等。
作為應(yīng)用型本科高校,在學(xué)生的培養(yǎng)過程中注重學(xué)生應(yīng)用能力的培養(yǎng),做到理論與實(shí)踐并進(jìn)。本課程主要培養(yǎng)學(xué)生的基本編程能力、計(jì)算思維能力及問題求解能力,理論學(xué)時(shí)與實(shí)踐學(xué)時(shí)各半。
近年來軟件行業(yè)飛速發(fā)展,新技術(shù)層出不窮,對(duì)軟件從業(yè)人員也提出了更高的要求。盡管軟件人才的數(shù)量日益增多,但優(yōu)秀的軟件技術(shù)人才匱乏,其原因主要是高校在培養(yǎng)軟件技術(shù)人才過程中教學(xué)內(nèi)容與企業(yè)實(shí)際應(yīng)用之間存在脫節(jié);缺少對(duì)學(xué)生工程實(shí)踐能力的培養(yǎng)與訓(xùn)練,同時(shí)也缺乏開展工程能力培養(yǎng)所需的教學(xué)環(huán)境,導(dǎo)致許多軟件專業(yè)畢業(yè)生的技術(shù)儲(chǔ)備無法滿足企業(yè)需求,在就業(yè)市場(chǎng)缺少競(jìng)爭(zhēng)力[1-2]。
(1)教學(xué)內(nèi)容與企業(yè)實(shí)際應(yīng)用之間存在脫節(jié)
目前,《Python程序設(shè)計(jì)》課程的教學(xué)內(nèi)容基本局限于教材,但教材內(nèi)容往往并不能與企業(yè)實(shí)際應(yīng)用銜接上,學(xué)生缺乏對(duì)所學(xué)內(nèi)容相關(guān)應(yīng)用背景的了解,并且教學(xué)內(nèi)容未結(jié)合企業(yè)實(shí)際開發(fā)場(chǎng)景進(jìn)行擴(kuò)展。
(2)缺少對(duì)學(xué)生工程實(shí)踐能力的訓(xùn)練
實(shí)驗(yàn)教學(xué)是本課程培養(yǎng)學(xué)生創(chuàng)新能力和工程實(shí)踐能力的重要環(huán)節(jié),通過項(xiàng)目式實(shí)驗(yàn)教學(xué),能夠幫助學(xué)生更好地理解理論知識(shí)與培養(yǎng)實(shí)踐動(dòng)手能力,讓學(xué)生系統(tǒng)地了解與掌握所學(xué)知識(shí)。目前本課程的實(shí)驗(yàn)教學(xué)中存在的問題是實(shí)驗(yàn)教學(xué)內(nèi)容與工程應(yīng)用之間存在較大差距,導(dǎo)致學(xué)生能夠應(yīng)用所學(xué)知識(shí),但與軟件開發(fā)崗位的基本需求存在一定的差距,如學(xué)生無法熟練使用程序調(diào)試工具、版本控制工具等。
應(yīng)用型本科人才培養(yǎng)應(yīng)從軟件企業(yè)對(duì)人才的實(shí)際需求出發(fā),了解企業(yè)對(duì)人才技能的基本需求,并在教學(xué)過程中對(duì)學(xué)生加以培養(yǎng)。通過調(diào)研軟件企業(yè)、了解企業(yè)對(duì)軟件工程人才的基本技能需求后,提出優(yōu)化實(shí)踐教學(xué)內(nèi)容的教學(xué)改革方法。結(jié)合本課程的特點(diǎn)及教學(xué)實(shí)踐經(jīng)驗(yàn),在課程學(xué)時(shí)不變的情況下,最大限度地優(yōu)化課程內(nèi)容,采取在實(shí)驗(yàn)課程中介紹相關(guān)工程應(yīng)用及開發(fā)工具的使用,促進(jìn)學(xué)生工程素養(yǎng)與能力的提升,具體內(nèi)容為以下四個(gè)方面。
程序調(diào)試能力培養(yǎng):程序調(diào)試指重現(xiàn)軟件故障、定位故障根源,最終解決軟件問題分過程,調(diào)試程序是軟件開發(fā)過程中必不可少的過程。對(duì)軟件工程專業(yè)的學(xué)生來說,掌握程序調(diào)試的知識(shí)與技能必不可少。但在教學(xué)過程中,程序調(diào)試技術(shù)往往沒有得到重視,學(xué)生通常能看懂控制臺(tái)中的錯(cuò)誤提示,但不會(huì)借助調(diào)試工具定位產(chǎn)生問題的代碼塊。是否能夠熟練地對(duì)程序進(jìn)行調(diào)試并快速定位和解決問題是體現(xiàn)程序員綜合能力的標(biāo)準(zhǔn)之一。因此有必要在課程中適當(dāng)介紹程序調(diào)試工具的使用,培養(yǎng)學(xué)生的程序調(diào)試能力。如在軟件集成開發(fā)環(huán)境(Intergrated Development Environment,IDE)中常用的“斷點(diǎn)調(diào)試”功能,其是調(diào)試器調(diào)試時(shí)最常用的技術(shù)之一,基本原理是在程序中某一位置設(shè)置一個(gè)中斷點(diǎn),當(dāng)CPU執(zhí)行到斷點(diǎn)位置時(shí),便停止被調(diào)試的程序,調(diào)試者可以實(shí)時(shí)查看變量的值并跟蹤其變化過程,對(duì)于理解程序內(nèi)部工作原理和發(fā)現(xiàn)程序中存在的問題非常有幫助[3]。Python 常用IDE PyCharm的斷點(diǎn)調(diào)試界面如圖 2所示。
圖2 PyCharm 斷點(diǎn)調(diào)試界面
圖3 程序日志示例
程序調(diào)試的教學(xué)可安排在基礎(chǔ)語法教學(xué)完成之后,在學(xué)生掌握已掌握基本的程序設(shè)計(jì)能力時(shí),通過幾個(gè)簡(jiǎn)單的示例,教會(huì)學(xué)生如何通過設(shè)置斷點(diǎn)來排查程序中發(fā)生的錯(cuò)誤、查看中間變量的值等功能,使學(xué)生掌握斷點(diǎn)調(diào)試技術(shù)。
程序日志的使用:程序日志是程序在運(yùn)行過程中對(duì)某些操作的記錄,可以用于跟蹤用戶行為、監(jiān)控系統(tǒng)資源、運(yùn)行異常記錄等,如圖 3所示,記錄了日志產(chǎn)生的時(shí)間、異常等級(jí)及提示信息。規(guī)范和充分的日志是良好代碼質(zhì)量的必要因素,也是軟件故障診斷的重要手段[4]。在軟件企業(yè)實(shí)際開發(fā)中,進(jìn)行程序日志的記錄是非常普遍的,良好的程序日志規(guī)則可以大大減輕軟件維護(hù)的壓力。而在軟件工程專業(yè)學(xué)生培養(yǎng)的過程中往往沒有課程涉及程序日志的應(yīng)用,主要原因是現(xiàn)有教師來自軟件企業(yè),不了解程序日志的作用;或任課教師認(rèn)為該內(nèi)容超過了課程的教學(xué)范圍,忽視了程序日志在軟件開發(fā)中的作用。
程序日志作為一種文件輸出應(yīng)用,可以嵌入到I/O編程部分介紹,讓學(xué)生了解日志的作用,教會(huì)學(xué)生如何在程序中設(shè)置日志規(guī)則、添加日志管理代碼,實(shí)現(xiàn)日志輸出功能;同時(shí)介紹如何讀取日志文件及檢索關(guān)鍵字來排查軟件運(yùn)行中出現(xiàn)的異常。
配置文件的使用:配置文件是一種文檔,專門用于存儲(chǔ)程序運(yùn)行中所需的配置或初始設(shè)置,常見的配置文件擴(kuò)展名有“.ini”“.conf”和“.xml”等。軟件開發(fā)過程中通常將相關(guān)配置參數(shù)寫入配置文件中,如將數(shù)據(jù)庫的地址、端口、用戶名、密碼等寫入一個(gè)配置文件中,而不是寫死在程序里。如圖 4所示為.ini格式配置文件示例,其內(nèi)容為連接MySQL數(shù)據(jù)庫的相關(guān)參數(shù),該配置文件內(nèi)容主要由兩部分組成,其中由方括號(hào)括起來的部分稱為節(jié)(section),其余部分稱為參數(shù),參數(shù)由鍵值對(duì)組成,等號(hào)前為鍵,等號(hào)后為值,配置文件中通常包含多個(gè)類似的配置信息。每當(dāng)需要連接數(shù)據(jù)庫時(shí),讀取配置文件即可,與寫死在程序中相比,這樣做的優(yōu)勢(shì)是當(dāng)需要修改數(shù)據(jù)庫的連接參數(shù)時(shí),只需修改配置文件,無須改動(dòng)代碼,方便維護(hù)。
圖4 ini格式配置文件示例
在平常教學(xué)過程中,往往缺乏此類實(shí)踐,在講解數(shù)據(jù)庫編程時(shí)教師通常直接將數(shù)據(jù)庫連接參數(shù)寫到代碼中,此種方式雖然演示起來方便,但容易在學(xué)生面前產(chǎn)生錯(cuò)誤示范,使學(xué)生誤以為在實(shí)際工程應(yīng)用中也采用此種方式連接數(shù)據(jù)庫。而配置文件的讀取并不復(fù)雜,可以在數(shù)據(jù)庫編程教學(xué)中引入配置的文件來使用,通過讀取配置文件獲取連接參數(shù)來連接數(shù)據(jù)庫,讓學(xué)生了解實(shí)際工程應(yīng)用方法,養(yǎng)成學(xué)生的安全編程意識(shí)。
版本控制工具的使用:版本控制工具是軟件開發(fā)中用于存儲(chǔ)、追蹤文件和文件修改歷史的軟件,是軟件開發(fā)過程中必不可少的工具軟件。常用的版本控制工具有Git和SVN,兩者之間的區(qū)別是Git是分布式版本控制系統(tǒng),SVN是集中式版本控制系統(tǒng),相比較而言,分布式版本控制系統(tǒng)在安全方面優(yōu)于集中式版本控制系統(tǒng),已成為版本控制的優(yōu)選方案[5],其中Git尤為受到開發(fā)團(tuán)隊(duì)的歡迎,結(jié)合Github(軟件開發(fā)項(xiàng)目的代碼托管平臺(tái))可以實(shí)現(xiàn)遠(yuǎn)程管理項(xiàng)目代碼,并實(shí)現(xiàn)團(tuán)隊(duì)協(xié)同開發(fā)。軟件企業(yè)在實(shí)際開發(fā)中也離不開版本控制工具,不僅用于軟件版本管理,更多的是用于團(tuán)隊(duì)協(xié)作開發(fā)。但高校在軟件工程專業(yè)學(xué)生的培養(yǎng)過程中,一般不會(huì)開設(shè)相關(guān)課程,導(dǎo)致許多學(xué)生不了解版本控制工具作用,更談不上如何使用,在走上工作崗位后不僅需要熟悉工作內(nèi)容,還要學(xué)習(xí)使用版本控制工具,給初入工作崗位的學(xué)生帶來些許壓力。
為幫助學(xué)生掌握版本工具的使用,豐富學(xué)生的專業(yè)背景知識(shí),提升軟件工程專業(yè)學(xué)生的專業(yè)素養(yǎng),可在本課程的最后利用2~4課時(shí)的實(shí)驗(yàn)學(xué)時(shí)來介紹版本控制工具Git及代碼托管平臺(tái)Github的使用,使學(xué)生掌握如何使用版本控制工具在本地創(chuàng)建代碼倉庫,進(jìn)行基本的版本管理操作,如提交、推送、回滾等,以及使用代碼托管平臺(tái)將本地代碼上傳到遠(yuǎn)程倉庫或?qū)⑦h(yuǎn)程倉庫拉取到本地。
應(yīng)用型本科教育是以本科教育為主,面向區(qū)域經(jīng)濟(jì)社會(huì),以學(xué)科為依托,以應(yīng)用型專業(yè)教育為基礎(chǔ),以社會(huì)人才需求為導(dǎo)向,培養(yǎng)高層次應(yīng)用型人才[6]。為培養(yǎng)學(xué)生的工程實(shí)踐能力與專業(yè)素養(yǎng),滿足社會(huì)發(fā)展的需要,應(yīng)用型本科高校在軟件工程專業(yè)學(xué)生的培養(yǎng)過程中應(yīng)注重學(xué)生的工程實(shí)踐能力與專業(yè)素養(yǎng)的結(jié)合。作為軟件工程專業(yè)的核心課程,《Python程序設(shè)計(jì)》課程教學(xué)內(nèi)容不能受限于教材,要結(jié)合企業(yè)實(shí)際需求,與時(shí)俱進(jìn)地更新、拓展教學(xué)內(nèi)容,增加工程實(shí)踐案例,提升軟件工程專業(yè)學(xué)生的工程實(shí)踐能力及專業(yè)素養(yǎng),以實(shí)現(xiàn)學(xué)生的技能儲(chǔ)備與社會(huì)對(duì)軟件人才技能需求的無縫對(duì)接,為社會(huì)輸出更多的高素質(zhì)軟件技術(shù)人才。