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