摘要:在最近的一份調(diào)查中顯示,美國(guó)top高校中,Python已經(jīng)成為教授計(jì)算機(jī)科學(xué)入門課程方面最受歡迎的語(yǔ)言。其中Top10 CS系中有8所使用Python,Top39 CS系中有24所,在入門課程中教授Python,可見(jiàn)其實(shí)用性的認(rèn)可度很高。
在我寫下這篇文章的時(shí)候,在美國(guó)top高校中,Python已經(jīng)成為教授計(jì)算機(jī)科學(xué)入門課程方面最受歡迎的語(yǔ)言。
Top10的CS 系中有8所,Top39的CS系中有24所,在入門課程中教授Python。

Python成為最受歡迎語(yǔ)言的動(dòng)機(jī)
Python逐漸成為教授初學(xué)者編程的第一選擇。三年前,Mark Guzdial通過(guò)博客預(yù)測(cè)Python作為一門教學(xué)語(yǔ)言將會(huì)越來(lái)越受歡迎。MIT和UC Berkeley的計(jì)算機(jī)系最近將他們?nèi)腴T課程的教授語(yǔ)言改成了Python。
最大的三個(gè)MOOC(Massive Open Online Courses)提供商edX,Coursera和Udacity也全都提供了Python語(yǔ)言的入門課程。并且,不同子領(lǐng)域的教授們(比如說(shuō)Lorena Barba)在也致力于教授初學(xué)者Python。
在過(guò)去四年中,我開(kāi)發(fā)了一些教學(xué)工具,在這些工具中Online Python Tutor?(www.pythontutor.com)在使用人數(shù)上取得了突飛猛進(jìn)的增長(zhǎng),這得益于越來(lái)越多的人使用Python。
盡管各方面都在說(shuō)Python越來(lái)越受歡迎,但是我并沒(méi)有看到一個(gè)數(shù)字上的確切統(tǒng)計(jì)。所以我決定統(tǒng)計(jì)在美國(guó)Top高校的計(jì)算機(jī)系中有多少使用Python來(lái)教授他們的入門課程,由此得出Python是不是越來(lái)越受歡迎。
在統(tǒng)計(jì)過(guò)程中,其他受歡迎的教學(xué)語(yǔ)言也被一同列出。
為什么我要做這個(gè)研究?這是因?yàn)檫x擇不同的語(yǔ)言不僅反映了不同學(xué)校計(jì)算機(jī)系的教育哲學(xué),更為重要的是,它影響了許多學(xué)生對(duì)計(jì)算機(jī)科學(xué)的第一印象。被這些Top高校選擇的語(yǔ)言暗示著計(jì)算機(jī)科學(xué)教育的發(fā)展趨勢(shì),要知道,這些Top高校實(shí)際上就是趨勢(shì)的制定者。
利用方法論進(jìn)行研究
在研究中,根據(jù)U.S. News?在2014年給出的排名,我選取了Top39高校中的計(jì)算機(jī)系作為研究對(duì)象。有8所學(xué)校的計(jì)算機(jī)系排名并列第40名,這就是為什么我選擇Top39作為研究對(duì)象的原因。不管誰(shuí)給出的排名都有瑕疵,并且排名會(huì)隨著時(shí)間不斷發(fā)生變化。
我采用的這份排名中,只考慮了那些能夠授予博士學(xué)位的大學(xué),還有很多我尊敬的大學(xué)沒(méi)有包含在這39所之內(nèi),包括我的母校。
對(duì)每一所大學(xué),我挑選出CS、CSE、EECS這三個(gè)專業(yè)的CS0和CS1課程。在我的研究中,CS1代表CS專業(yè)的學(xué)生最需要學(xué)習(xí)的課程,CS0代表一門入門的編程課,上這門課的可能是還沒(méi)有定專業(yè)的學(xué)生或者是在上CS1前需要額外準(zhǔn)備的學(xué)生。
學(xué)習(xí)CS0和CS1都不需要其他任何CS方面的預(yù)備知識(shí)。要不然他們也不會(huì)是學(xué)生選擇的第一門CS課程(學(xué)習(xí)CS1之前也不一定要學(xué)CS0)。請(qǐng)注意對(duì)于CS0和CS1并沒(méi)有一個(gè)嚴(yán)格的官方定義,所以我必須使用一些個(gè)人的看法,當(dāng)然,我會(huì)盡量遵守每個(gè)系關(guān)于課程的官方描述。
盡管一些老師認(rèn)為CS1指的就是入門編程課程,在我的研究中,我特意將CS1和CS0放在一起,因?yàn)閷?duì)許多學(xué)生來(lái)說(shuō),是在大學(xué)學(xué)習(xí)的第一門編程語(yǔ)言。
鑒于美國(guó)K-12(相當(dāng)于國(guó)內(nèi)的小學(xué)到高中)教育在計(jì)算機(jī)科學(xué)教育方面的不幸狀態(tài),這些大學(xué)課程可能是許多學(xué)生,特別是女性和少數(shù)民族,第一次接觸到編程語(yǔ)言。即使學(xué)生事先有編程經(jīng)驗(yàn),編程語(yǔ)言第一次正式出現(xiàn)在大學(xué)課程中仍然具有很大的影響力。
我認(rèn)為CS0和CS1同樣重要,因?yàn)殡S著編程在科學(xué)領(lǐng)域變得無(wú)孔不入,越來(lái)越多的非專業(yè)人士也開(kāi)始學(xué)習(xí)CS0課程。
再者,少部分CS專業(yè)的學(xué)生在學(xué)習(xí)CS1之前會(huì)先學(xué)習(xí)CS0,特別是那些之前沒(méi)有任何編程經(jīng)驗(yàn)的學(xué)生。所以,對(duì)學(xué)生來(lái)說(shuō),CS0課程作為通往計(jì)算世界的大門起著極其重要的作用,沒(méi)有這門課程,他們可能都不會(huì)知道自己在這方面有著如此巨大的熱情。
研究結(jié)果
下面這張表展示了七種最受歡迎的語(yǔ)言在Top39高校中的使用情況。將每個(gè)柱形代表的數(shù)字加起來(lái)和大于39,這是因?yàn)樵S多學(xué)校同時(shí)提供了CS0和CS1的課程。

繼續(xù)探討
盡管我是一個(gè)Python語(yǔ)言的擁護(hù)者,但我會(huì)盡我最大的努力去不帶評(píng)價(jià)地陳述事實(shí)。
在這個(gè)表格中,Python是最受歡迎的語(yǔ)言,Java排第二。Java語(yǔ)言在過(guò)去的十年中在入門課程教學(xué)中一直占有主宰地位。但是現(xiàn)在,一些學(xué)校完全摒棄了Java,全部使用Python,還有一些學(xué)校采取了一個(gè)混合的方法,在CS0中使用Python,而在CS1的教學(xué)中使用Java。
在高中,AP(Advanced Placement)課程中使用的仍然是Java語(yǔ)言。
排在Python和Java之后的語(yǔ)言是MATLAB,MATLAB經(jīng)常在CS0課程中使用。跟在MATLAB之后是C++,在過(guò)去十年中,C++的重要地位被Java完全取代。在2003年,高中的AP課程甚至都用Java取代了C++。
從這個(gè)表格來(lái)看,C語(yǔ)言和C++語(yǔ)言受歡迎的程度一致。一些學(xué)校在使用C語(yǔ)言教授入門課程的時(shí)候,將C語(yǔ)言和其他的語(yǔ)言結(jié)合起來(lái)使用,比如說(shuō)哈佛大學(xué)。
Scheme-based 語(yǔ)言在一部分教育工作者和編程語(yǔ)言研究者中相當(dāng)受歡迎。最引人注意的是,兩個(gè)哲學(xué)校園SICP?和?HtDP已經(jīng)圍繞Scheme生態(tài)系統(tǒng)建立了廣受好評(píng)的教科書和相應(yīng)課程。
但是最近幾年,比如在MIT和UC Berkeley,Python已經(jīng)取代了Scheme的地位。表格顯示,Scheme僅僅只在四所學(xué)校中使用。
表格中列出來(lái)的七種語(yǔ)言中,Scratch是唯一的一種可視化的、基于塊的編程語(yǔ)言,Scratch是這種類型的語(yǔ)言中最受歡迎的一種,使用Scratch完成的項(xiàng)目有Alice、App Inventor、Etoys、Kodu、StarLogo?和?TouchDevelop?等等。
這種類型語(yǔ)言的創(chuàng)造者將精力主要放在K-12教育上,這或許能夠解釋為什么這種類型的語(yǔ)言沒(méi)有在大學(xué)中獲得廣泛的使用。
寫在最后
最后, 注意到三個(gè)有趣的語(yǔ)言集合沒(méi)有出現(xiàn)在這個(gè)表中,因?yàn)檫@些語(yǔ)言僅僅只被一所學(xué)校選用,或者根本沒(méi)有學(xué)校選用:
靜態(tài)類型的功能性語(yǔ)言,比如說(shuō) Haskell 和 OCaml,這些語(yǔ)言在PL研究者中非常受歡迎。
動(dòng)態(tài)類型的語(yǔ)言,比如說(shuō)JavaScript,Ruby和PHP,這些語(yǔ)言在網(wǎng)絡(luò)編程者中非常受歡迎。
廣泛使用的工業(yè)語(yǔ)言,這些語(yǔ)言一般和特定的平臺(tái)相關(guān)聯(lián),包括蘋果的 Objective-C和微軟的C#/Visual Basic。

? 2025. All Rights Reserved. 滬ICP備2023009024號(hào)-1