在我寫下這篇文章的時候,在美國top高校中,Python已經成為教授計算機科學入門課程方面最受歡迎的語言。Top10的CS 系中有8所,Top39的CS系中有24所,在入門課程中教授Python。
Python成為最受歡迎語言的動機
Python逐漸成為教授初學者編程的第一選擇。三年前,Mark Guzdial通過博客預測Python作為一門教學語言將會越來越受歡迎。MIT和UC Berkeley的計算機系最近將他們入門課程的教授語言改成了Python。最大的三個MOOC(Massive Open Online Courses)提供商edX,Coursera和Udacity也全都提供了Python語言的入門課程。并且,不同子領域的教授們(比如說Lorena Barba)在也致力于教授初學者Python。
在過去四年中,我開發了一些教學工具,在這些工具中Online Python Tutor?(www.pythontutor.com)在使用人數上取得了突飛猛進的增長,這得益于越來越多的人使用Python。
盡管各方面都在說Python越來越受歡迎,但是我并沒有看到一個數字上的確切統計。所以我決定統計在美國Top高校的計算機系中有多少使用Python來教授他們的入門課程,由此得出Python是不是越來越受歡迎。在統計過程中,其他受歡迎的教學語言也被一同列出。
為什么我要做這個研究?這是因為選擇不同的語言不僅反映了不同學校計算機系的教育哲學,更為重要的是,它影響了許多學生對計算機科學的第一印象。被這些Top高校選擇的語言暗示著計算機科學教育的發展趨勢,要知道,這些Top高校實際上就是趨勢的制定者。
利用方法論進行研究
在研究中,根據U.S. News?在2014年給出的排名,我選取了Top39高校中的計算機系作為研究對象。有8所學校的計算機系排名并列第40名,這就是為什么我選擇Top39作為研究對象的原因。不管誰給出的排名都有瑕疵,并且排名會隨著時間不斷發生變化。我采用的這份排名中,只考慮了那些能夠授予博士學位的大學,還有很多我尊敬的大學沒有包含在這39所之內,包括我的母校。
對每一所大學,我挑選出CS、CSE、EECS這三個專業的CS0和CS1課程。在我的研究中,CS1代表CS專業的學生最需要學習的課程,CS0代表一門入門的編程課,上這門課的可能是還沒有定專業的學生或者是在上CS1前需要額外準備的學生。學習CS0和CS1都不需要其他任何CS方面的預備知識。要不然他們也不會是學生選擇的第一門CS課程(學習CS1之前也不一定要學CS0)。請注意對于CS0和CS1并沒有一個嚴格的官方定義,所以我必須使用一些個人的看法,當然,我會盡量遵守每個系關于課程的官方描述。
盡管一些老師認為CS1指的就是入門編程課程,在我的研究中,我特意將CS1和CS0放在一起,因為對許多學生來說,是在大學學習的第一門編程語言。鑒于美國K-12(相當于國內的小學到高中)教育在計算機科學教育方面的不幸狀態,這些大學課程可能是許多學生,特別是女性和少數民族,第一次接觸到編程語言。即使學生事先有編程經驗,編程語言第一次正式出現在大學課程中仍然具有很大的影響力。我認為CS0和CS1同樣重要,因為隨著編程在科學領域變得無孔不入,越來越多的非專業人士也開始學習CS0課程。再者,少部分CS專業的學生在學習CS1之前會先學習CS0,特別是那些之前沒有任何編程經驗的學生。所以,對學生來說,CS0課程作為通往計算世界的大門起著極其重要的作用,沒有這門課程,他們可能都不會知道自己在這方面有著如此巨大的熱情。
研究結果
下面這張表展示了七種最受歡迎的語言在Top39高校中的使用情況。將每個柱形代表的數字加起來和大于39,這是因為許多學校同時提供了CS0和CS1的課程。
繼續探討
盡管我是一個Python語言的擁護者,但我會盡我最大的努力去不帶評價地陳述事實。在這個表格中,Python是最受歡迎的語言,Java排第二。Java語言在過去的十年中在入門課程教學中一直占有主宰地位。但是現在,一些學校完全摒棄了Java,全部使用Python,還有一些學校采取了一個混合的方法,在CS0中使用Python,而在CS1的教學中使用Java。在高中,AP(Advanced Placement)課程中使用的仍然是Java語言。
排在Python和Java之后的語言是MATLAB,MATLAB經常在CS0課程中使用。跟在MATLAB之后是C++,在過去十年中,C++的重要地位被Java完全取代。在2003年,高中的AP課程甚至都用Java取代了C++。從這個表格來看,C語言和C++語言受歡迎的程度一致。一些學校在使用C語言教授入門課程的時候,將C語言和其他的語言結合起來使用,比如說哈佛大學。
Scheme-based 語言在一部分教育工作者和編程語言研究者中相當受歡迎。最引人注意的是,兩個哲學校園SICP?和?HtDP已經圍繞Scheme生態系統建立了廣受好評的教科書和相應課程。但是最近幾年,比如在MIT和UC Berkeley,Python已經取代了Scheme的地位。表格顯示,Scheme僅僅只在四所學校中使用。
表格中列出來的七種語言中,Scratch是唯一的一種可視化的、基于塊的編程語言,Scratch是這種類型的語言中最受歡迎的一種,使用Scratch完成的項目有Alice、App Inventor、Etoys、Kodu、StarLogo 和 TouchDevelop 等等。這種類型語言的創造者將精力主要放在K-12教育上,這或許能夠解釋為什么這種類型的語言沒有在大學中獲得廣泛的使用。
寫在最后
最后, 注意到三個有趣的語言集合沒有出現在這個表中,因為這些語言僅僅只被一所學校選用,或者根本沒有學校選用:
- 靜態類型的功能性語言,比如說 Haskell 和 OCaml,這些語言在PL研究者中非常受歡迎。
- 動態類型的語言,比如說JavaScript,Ruby和PHP,這些語言在網絡編程者中非常受歡迎。
- 廣泛使用的工業語言,這些語言一般和特定的平臺相關聯,包括蘋果的 Objective-C和微軟的C#/Visual Basic。
如果我們在五年,十年或者二十年以后再回顧這篇文章,屆時,哪一種語言會是時代的寵兒?
(英文來自: ACM,本文由 moqiguzhu編譯,項目地址 CODE。