圖片來源:unsplash
點擊了PyCharm中的Run后,謝云騰帶著疲憊爬上床,留下電腦在黑暗中飛速運行。這已經(jīng)是他寫這次文科計算機基礎實驗班課程作業(yè)的第三個晚上。
這是一次網(wǎng)絡爬蟲作業(yè),要求爬取“新浪每日熱點新聞”版面連續(xù)31天的新聞內(nèi)容,并對字數(shù)、圖片等信息進行分析。由于數(shù)據(jù)量龐大,運行整個程序耗時長達45分鐘;再加上校園網(wǎng)不穩(wěn)定,經(jīng)常導致程序報錯,停止運行,沒有點好運氣,程序很難執(zhí)行成功。所幸第二天早上醒來,謝云騰終于看到了“Process finished with exit code 0”(程序執(zhí)行成功,正常退出)。
謝云騰的困擾在北大并非個例。自從程序設計被全面納入文科計算機教學,許多文科生都不得不面對這個陌生的領域。隨之而來的是種種不適應:老師講得太快,難以跟上;作業(yè)得不到細致講解,答案很難看懂;上課聽得明明白白,自己操作卻總是失敗……一時間,文科生學編程被推上了風口浪尖。
△未名BBS上對文科生學編程的抱怨 | 來源:未名BBS
編程歸來
實際上,編程并不是在2018年秋季學期第一次進入文科計算機課程。
早期的教學計劃要求文科生必選兩個學期的文科計算機課程,第一學期教授計算機基礎知識和辦公自動化,第二學期教授程序設計。2000年后,隨著Office的普及,第一學期的內(nèi)容變?yōu)橛嬎銠C基礎知識和Office,第二學期則提供多個專題供學生自主選擇學習,其中包括程序設計。2015年前后,隨著畢業(yè)學分調(diào)整,文科計算機課程被壓縮成一學期;同時,信息科學技術學院也開始了讓編程回歸文科計算機必修課程的探索。
2018年是試驗的第3年,也是最后一年。此后,不管是在實驗班還是基礎班,編程都成為了必修內(nèi)容。
但編程的回歸并未得到普遍歡迎,反而引發(fā)了不少爭論。
教學方式是爭論的焦點?!袄蠋煕]有操作代碼,直接把例子放在課件上展示,當我們還在看代碼是什么意思的時候,已經(jīng)放過去很多張幻燈片了?!眹H關系學院2018級本科生張宸赫說。他認為編程教學進度過快,效果不好,不如把課程分為兩個學期,第一學期詳細學習Office,第二學期慢慢學Python?!熬拖駥W語言一樣,從學音標來開始?!?/p>
“培養(yǎng)科學家和培養(yǎng)實際使用者,這兩個是有區(qū)別的。”負責文科計算機基礎實驗班教學的鄧習峰老師猜測,第一次講Python的老師可能采用了培養(yǎng)專業(yè)“碼農(nóng)”的方式,轉(zhuǎn)換成適合文科生的教學方式需要一個過程?!傲硪粋€問題在于時間太短,”鄧習峰分析,“現(xiàn)在的文科計算機課程由原來雙學期的課變成單學期,時間縮短導致內(nèi)容講不完,不夠精細,學生容易處于‘半生不熟’的狀態(tài)。這是課程建設過程中要繼續(xù)優(yōu)化的內(nèi)容。”
但他也表示,課程開設之初,學院就制定了針對文科生的教學計劃,編程語言的選擇就是特點之一。
“這次選擇經(jīng)過了復雜的決策,但后來我們都選了Python?!编嚵暦逭f。相比其他編程語言,Python具有跨平臺、入門簡單、數(shù)據(jù)處理能力強、功能庫豐富等優(yōu)勢。也正因此,近年它的流行程度上升很快,并成為2018年TIOBE編程語言排行榜年度語言。
△熱門編程語言的百度搜索指數(shù) | 來源:https://index.baidu.com
由于處在過渡期,2018年秋季學期的編程教學沒有設立統(tǒng)一大綱,不同班的教師自主選擇授課方式和內(nèi)容?!暗灰浅绦蛟O計,內(nèi)容基本是差不多的?!编嚵暦逭f,“可能每個老師對難度的把控是不一致的,但到了2019年秋季學期就會相對統(tǒng)一。”同樣,試卷也由各班教師自主命題,但均包括筆試與上機測試,按不同比例計入總成績。
文科與編程
在鄧習峰看來,“自用程序設計”是文科生學習編程的主要目的。相對于“公用程序設計”,后者目的在于給別人使用,而前者注重滿足自己的需求。
“比如處理研究數(shù)據(jù)時,如果Excel解決不了,就可以先用Python解決,再交給Excel做可視化。” 他以自己研究的北京交通大數(shù)據(jù)舉例:北京一天的交通數(shù)據(jù)約有1600萬條,Excel完全無法處理,其他軟件的效果也不好。但用Python處理只需要很短時間,就可以得出每個車站的客流量、乘客上下車時間、不同地區(qū)乘客的乘車偏好等信息。再將數(shù)據(jù)進行拓展,加入每個站的經(jīng)緯度,結合地圖后就可以分析哪些地方人最多、人群的流向是哪里。這就為國民經(jīng)濟的決策提供了保證。
而在人文學科中,中國歷代人物傳記數(shù)據(jù)庫(CBDB)也為歷史學研究提供了更多角度。CBDB依托程序設計與數(shù)據(jù)庫技術,收錄中國歷代40余萬人物的傳記和譜系。借此,研究者可以查詢某地在科舉和出仕方面的表現(xiàn),或?qū)⒛程囟〞r空下的個人創(chuàng)作連接起來進行分析。
△CBDB 中已知籍貫的 67,000 歷史人物的地理分布圖 | 來源:https://projects.iq.harvard.edu/chinesecbdb
“這樣的技術應用到了歷史學,很多概念的呈現(xiàn)會更加可視化、更加直觀?!编嚵暦逭J為,相比于定性研究,編程更多是在用數(shù)與算的概念去衡量我們所面對的世界。這在一定程度上彌補了中國傳統(tǒng)思維的欠缺。
對2015級元培學院光華方向本科生韋銘杰而言,編程屬于專業(yè)的一部分。在他學習的量化金融領域,編程的地位舉足輕重。他表示,國外有些面試地點就有計算機,要求面試者現(xiàn)場編程。一次量化金融行業(yè)的實習面試中,面試官當場提出一個問題讓應聘者寫程序,并現(xiàn)場對程序進行點評。
由于當時的文科計算機教學不包含程序設計,韋銘杰特意選擇了計算概論B。在他看來,學校學的和工作用的編程是有差異的,實際用的編程一定比學校學的復雜,但如果沒有課程內(nèi)容做基礎,是做不到實際運用的。
2012級經(jīng)濟學院本科生唐奕波在大四時嘗試過自學編程,因為感到投入產(chǎn)出比太低而放棄。他認為編程不能只依賴于效率較低的自學,更希望能有比較熟練的人引導,這樣有問題可以直接問他們。
編程無用?
但是,對于大部分選擇就業(yè)的學生,編程并不是必備技能,在應聘中也不一定錦上添花。
“(就業(yè)對編程是否有要求)主要看找哪方面的工作?!?2012級經(jīng)濟學院本科生沈士竣介紹,“做量化金融或搞學術的話,對編程的要求還是很高的。但如果做行業(yè)員、投行、基金、PE(私募股權投資)等,要求不高?!睆谋究频窖芯可?,他接觸的編程主要集中在MATLAB、Stata等數(shù)據(jù)分析軟件。但對于學習Python、C++等編程語言,他表示尚未考慮:“暫時接觸不到?!?/p>
同樣,雖然唐奕波從事的股票研究行業(yè)需要相關程序,但他所在公司有專門的IT部門負責研發(fā)模塊,自己基本用不上程序設計。他告訴記者,股票研究企業(yè)招聘時,除非是量化研究,否則就對編程沒有任何要求,也不會有“掌握編程優(yōu)先”的情況。
這也正是很多文科生心中的疑慮:如果未來用不到編程,現(xiàn)在花很大力氣去學,有什么意義?
信息科學技術學院的郭煒老師認為,“沒有用”很多時候是“不會用”導致的。“如果會編程的話,你可以主動發(fā)現(xiàn)這樣的機會,在工作中展示自己。這個才能對你的職業(yè)發(fā)展很有利?!彼M麑W生不要抱著“這個東西好像沒什么用,我就不學”的想法?!澳呛芸赡芤院笥杏脜s來不及再學,就錯失這個機會了?!?/p>
同樣受到重視的,還有編程學習對思維的影響。鄧習峰很看重編程對文科生數(shù)理邏輯和計算思維的養(yǎng)成?!氨热纾岩粋€大的任務分解成幾個小的任務,或定義若干函數(shù),每一個都要把自己一段的任務做好。實際上這是一種思維的訓練。”
2016級信息科學技術學院本科生吉如一也有相同的看法?!熬幊毯驼f話不一樣。說話可以有些模糊不清的地方,但是編程必須很嚴謹,邏輯性很強,不能出一點失誤。”
熱遍全國
當校園中探討著文科生是否需要學編程時,編程熱已經(jīng)遍布全國,乃至世界。
△熱詞“編程”的媒體指數(shù) | 來源:https://index.baidu.com
在百度指數(shù)中以“編程”為關鍵詞進行分析,早在2012年,“編程”的媒體指數(shù)就經(jīng)歷過一次高峰,之后多次登上新聞頭條。進入2018年,媒體指數(shù)又迎來高潮。正如郭煒所說:“現(xiàn)在所有人都要學編程。”
“原因很明顯?!惫鶡樥f,“計算機在各行各業(yè)都得到了很廣泛的應用。所以,不管什么行業(yè),你很快就會遇到需要編程的場合。以后編程可能不那么‘熱’了,我覺得是因為它就像數(shù)學一樣,每個人都要學了?!?/p>
鄧習峰認為,編程入門難度的變化也是原因之一。隨著軟件提供的編程環(huán)境讓程序設計的門檻降低,“熱”形成了初步條件?!熬拖裼嬎銠C的操作,原來是字符界面,進入圖形化的界面后,計算機在全國、全世界都更加的普及?!编嚵暦逭f,“程序設計是聯(lián)系邏輯思維、實證思維和計算思維的重要途徑,它能幫我們更好地理解當今信息社會。我相信未來它會成為中國大學生必備的基礎技能?!?/p>
在哈佛大學,編程已經(jīng)成為基礎課程。CS50是哈佛大學的編程公開課,面向所有專業(yè)的學生,講授包括C, PHP, JavaScript, SQL, CSS, HTML在內(nèi)的多種語言,早在2015年秋季學期就已經(jīng)成為校內(nèi)最熱門的課程,得到超過800人注冊,其中只有10%有過編程背景。
△CS50公開課網(wǎng)站 | 來源:https://cs50.harvard.edu/extension/2019/spring/
“我相信我們能做到比它更好?!编嚵暦逭f。
何去何從
“課程壓力很大,這是推行編程的代價?!编嚵暦逭f,“但我們還是要堅持,我認為我們走的是正確的方向,更多老師也都已經(jīng)認可了。這是大勢所趨?!?/p>
但文科計算機課程依然需要改善。更好的教學效果需要更多的時間。由于學校的課時已經(jīng)非常緊張,增開課時并不現(xiàn)實,通過引入新技術提高上課效率是當下最好的辦法。鄧習峰表示,未來計劃采用MOOC(massive open online courses,大規(guī)模網(wǎng)絡公開課,俗稱“慕課”)和翻轉(zhuǎn)課堂的形式,把Office和計算機基礎知識放到網(wǎng)上供學生自學,給編程教學更多課堂時間。
同時,上機課的教學也會引入新的形式。“比如說我們把每一次作業(yè)都做出多種解決方案,學生之間可以互相比較,看有沒有更好的方案,讓學習的質(zhì)量更高?!贝送猓硎救绻麜r間允許,將會設計“百練百講”,為每個教學專題附加難度適中的題庫,幫助學生通過實踐,盡快上手程序設計。
鄧習峰還認為,學生需要改變抵觸情緒。在文科計算機課程納入編程前,Office和計算機基礎知識是主要的學習內(nèi)容,大部分同學對此已有一定基礎,學起來相對容易。相比之下,編程的難度顯然更高?!叭绻@門課改個名字,叫‘計算概論C’,可能很多人心里就平衡了?!彼_玩笑說。
但他認為,程序設計絕不是文科生無法接觸的。他表示,在Windows沒流行起來之前,文科生用DOS系統(tǒng)學FoxBASE、FoxPro(編程軟件),甚至沒有可視化界面,但學的效果也不錯?!爱斎?,對文科生的教授方法,比如說教學的案例、內(nèi)容需要我們?nèi)?yōu)化,但是不能說文科生就學不會程序設計?!?/p>
變化仍在繼續(xù)。鄧習峰相信,隨著課程本身與文科生結合更緊密,編程一定會走進文科生內(nèi)心,達到最終目標: “通過程序設計,文科生能掌握一門伴隨自己工作和學習的程序設計語言,也能更好地去理解當今的信息技術?!?/p>
*文中謝云騰、張宸赫為化名
本文轉(zhuǎn)載自微信公眾號“北大青年”,調(diào)查記者李潤澤,原標題《當文科生遇上編程》。文章為作者獨立觀點,不代表芥末堆立場,轉(zhuǎn)載請聯(lián)系原作者。
2、芥末堆不接受通過公關費、車馬費等任何形式發(fā)布失實文章,只呈現(xiàn)有價值的內(nèi)容給讀者;
3、如果你也從事教育,并希望被芥末堆報道,請您 填寫信息告訴我們。