[摘 要] 傳統(tǒng)程序設(shè)計(jì)語言C、Java等對(duì)計(jì)算機(jī)理論知識(shí)要求高、入門難,對(duì)地理學(xué)專業(yè)學(xué)生而言,在學(xué)習(xí)過程中會(huì)出現(xiàn)大量的語法錯(cuò)誤,導(dǎo)致學(xué)生編程學(xué)習(xí)興趣不濃。Python作為一門易學(xué)、易用的編程語言,與地理學(xué)專業(yè)學(xué)習(xí)有機(jī)結(jié)合,具有明顯優(yōu)勢(shì)并深受學(xué)生歡迎。針對(duì)教學(xué)過程中出現(xiàn)的問題,可運(yùn)用科學(xué)合理的教學(xué)方法、注重基礎(chǔ)性與前沿性相結(jié)合、加強(qiáng)案例教學(xué)、鼓勵(lì)學(xué)生積極參加地理學(xué)相關(guān)知識(shí)競(jìng)賽、充分利用網(wǎng)絡(luò)教學(xué)以及強(qiáng)化學(xué)生上機(jī)實(shí)驗(yàn)?zāi)芰Φ呐囵B(yǎng)等,并在本科教學(xué)中起到良好的效果。
[關(guān)鍵詞] Python語言;地理學(xué)專業(yè);程序設(shè)計(jì);教學(xué)改革
[基金項(xiàng)目] 2020年度廣東省高等教育教學(xué)改革項(xiàng)目“在線教學(xué)效果評(píng)測(cè)與質(zhì)量保障”(粵教高函〔2020〕20號(hào));2018年01月—2020年12月國(guó)家重點(diǎn)研發(fā)計(jì)劃項(xiàng)目“深圳市洪澇實(shí)時(shí)調(diào)度決策支持平臺(tái)及示范”(2017YFC1502706);2019年01月—2021年12月中山大學(xué)本科教學(xué)質(zhì)量工程類項(xiàng)目“面向地學(xué)專業(yè)的程序設(shè)計(jì)核心通識(shí)課程建設(shè)”(37000-18832606)
[作者簡(jiǎn)介] 杜國(guó)明(1971—),男,山東安丘人,博士,中山大學(xué)地理科學(xué)與規(guī)劃學(xué)院副教授,主要從事地學(xué)專業(yè)教學(xué)研究。
[中圖分類號(hào)] G642.0? ? ?[文獻(xiàn)標(biāo)識(shí)碼] A? ?[文章編號(hào)] 1674-9324(2021)20-0049-04? ? [收稿日期] 2021-01-12
一、引言
地理學(xué)是研究地理要素和地理綜合體的空間分異規(guī)律、時(shí)間演變過程及區(qū)域特征的學(xué)科,具有綜合性、交叉性的特點(diǎn),其研究?jī)?nèi)容是地球表層人與環(huán)境相互作用的機(jī)理,研究過程需要耦合自然要素和人文要素,是一門“探索自然規(guī)律,昭示人文精華”的學(xué)科[1]。作為一種綜合性學(xué)科,地理學(xué)的應(yīng)用范圍非常廣泛,常常需要處理和分析復(fù)雜地物,程序設(shè)計(jì)往往能起到事半功倍的作用。正如蘋果公司的CEO庫(kù)克說過:學(xué)習(xí)編程要比學(xué)習(xí)英語更重要。因此,程序設(shè)計(jì)是地理學(xué)專業(yè)中的一門重要課程。常見的程序設(shè)計(jì)語言有Java、C、Python等。由于Python語言功能強(qiáng)大且語法簡(jiǎn)潔、易讀及可擴(kuò)展性,是目前美國(guó)大學(xué)最受歡迎的程序設(shè)計(jì)語言,如麻省理工學(xué)院的計(jì)算機(jī)科學(xué)及編程導(dǎo)論課程就使用Python語言授課[2]。又如,斯坦福大學(xué)從2009年開設(shè)Python語言程序設(shè)計(jì)類課程,替換了之前的Java和C語言課程[3]。因此,我們面向地理學(xué)專業(yè)選用Python語言作為本科生程序設(shè)計(jì)的教學(xué)語言。
二、面向地理學(xué)專業(yè)程序設(shè)計(jì)的教學(xué)改革與課程規(guī)劃
(一)傳統(tǒng)程序設(shè)計(jì)語言在地理學(xué)專業(yè)教學(xué)中存在的問題
目前,針對(duì)我國(guó)地理學(xué)專業(yè)開設(shè)的程序設(shè)計(jì)語言大多為C、C++、C#、JAVA等。這些編程語言語法復(fù)雜,對(duì)計(jì)算機(jī)理論知識(shí)要求高、入門難[5]。例如,C與C++語言要求變量在使用前先定義,嚴(yán)格區(qū)分大小寫,每行語句以分號(hào)結(jié)尾,數(shù)組在使用前要先定義大小(易造成數(shù)據(jù)冗余或不足),指針和鏈表難學(xué)難用……對(duì)于編程基礎(chǔ)薄弱的地理學(xué)專業(yè)學(xué)生來說,程序代碼晦澀難懂,出現(xiàn)錯(cuò)誤的時(shí)候又難以區(qū)分是運(yùn)行錯(cuò)誤還是邏輯錯(cuò)誤,很容易挫傷學(xué)生學(xué)習(xí)程序設(shè)計(jì)的積極性。C#對(duì)計(jì)算機(jī)的配置要求較高,造成應(yīng)用上的局限性。Java語言主要針對(duì)對(duì)象方法展開教學(xué),教學(xué)內(nèi)容主要是類、對(duì)象、封裝、繼承、多態(tài)、接口、多線程等,運(yùn)行效率不及C或C++語言,易學(xué)性不及Python,所以與Python相比,實(shí)際教學(xué)價(jià)值不大。
上述程序設(shè)計(jì)語言都存在復(fù)雜的語法結(jié)構(gòu),對(duì)地理學(xué)專業(yè)學(xué)生而言,由于缺少計(jì)算機(jī)體系結(jié)構(gòu)的相關(guān)知識(shí),在學(xué)習(xí)程序設(shè)計(jì)過程中會(huì)出現(xiàn)大量的語法錯(cuò)誤,因此無法與地理學(xué)專業(yè)學(xué)習(xí)有機(jī)結(jié)合起來,學(xué)生也難以得到系統(tǒng)的培養(yǎng)。學(xué)生雖然學(xué)習(xí)了編程語言,但并不能應(yīng)用于實(shí)際的編程工作中,導(dǎo)致地理學(xué)專業(yè)學(xué)生編程學(xué)習(xí)興趣不濃,僅為了考試而學(xué),“考完即忘”的現(xiàn)象普遍存在。
Python作為一種輕語法的程序設(shè)計(jì)語言,具有易學(xué)、易用的特點(diǎn),降低了學(xué)生學(xué)習(xí)的難度,可以彌補(bǔ)上述程序設(shè)計(jì)語言的不足,非常適合地理學(xué)專業(yè)程序設(shè)計(jì)課程。
(二)Python語言用于地理學(xué)教學(xué)的優(yōu)勢(shì)
Python是一門高級(jí)程序設(shè)計(jì)語言,由吉多·范羅蘇姆(Guido van Rossum)于1989年底發(fā)明,是開源、免費(fèi)的,簡(jiǎn)單、易學(xué)[4],比Matlab等商業(yè)軟件具有先天優(yōu)勢(shì),不會(huì)出現(xiàn)因授權(quán)而被“卡脖子”。Python的代碼書寫規(guī)則、語法簡(jiǎn)潔,不需要在使用變量前定義。同樣輸出一段文字,三種語言分別如下所示。
C語言需要4行代碼,如下所示:
#include
int main()
{
printf("學(xué)好程序設(shè)計(jì)!");
return 0;
}
Java語言要定義一個(gè)類Main,代碼如下:
public Class Main(){
public static void main(String[] args){
System.out.println("學(xué)好程序設(shè)計(jì)!");
}
}
python語言僅需要一行即可,如下:
print("學(xué)好程序設(shè)計(jì)!")
Python的優(yōu)勢(shì)顯而易見。另外,它還能夠與地理信息科學(xué)最常用的商業(yè)軟件ArcGIS有機(jī)結(jié)合在一起,為解決復(fù)雜的地理問題提供有力支持。這是因?yàn)椋珹rcGIS開發(fā)語言默認(rèn)安裝Python,為地理學(xué)專業(yè)學(xué)生學(xué)習(xí)程序二次開發(fā)提供了極大的便利,非常適合地理學(xué)專業(yè)程序設(shè)計(jì)課程。Python的科學(xué)計(jì)算功能強(qiáng)大,方便數(shù)字圖像處理,提供高效的數(shù)據(jù)組織與處理功能、多種數(shù)值計(jì)算、種類豐富的圖形繪制功能。