摘要
截止到 2014 年 7 月,Python 已經成為目前美國頂尖大學裡最受歡迎的計算機編程入門語言。計算機排名前 10 的學校裡,有 8 所學校(80%)使用 Python 作為編程入門語言。在計算機排名前 39 的學校裡,有 27 個學校(69%)使用 Python 作為編程入門語言。
研究背景
Python 已經成為越來越多美國頂級大學的計算機編程入門語言了。三年前,Mark Guzdial 曾撰寫博客,預測 Python 在未來將成為主流的計算機編程入門語言。而現在,這個預言基本已經實現了。美國計算機排名頂尖的麻省理工大學和加州大學伯克利分校最近已經將他們的計算機編程入門教學語言改為了 Python。三大 MOOC 提供商(edX、Cousera、Udacity)都提供使用 Python 教學的計算機編程入門課程。同時,不同專業領域的教授,比如 Lorena Barba,也都倡導使用 Python 作為入門語言進行教學。
就我個人來說,由於 Python 的逐漸普及,我這四年一直在完善的教學工具 Online Python Tutorial的訪問也得到了迅猛的增長。
然而雖然大家都在說 Python 的使用正在逐步擴大,我卻沒找到什麼具體的數字表明 Python 有多麼的受歡迎。因此我試圖從美國計算機排名頂尖的大學的教學課程裡尋找一些答案。
我為什麼要寫這篇文章呢?因為計算機學院使用什麼語言作為教學語言實際上反映了每個學校不同的教學邏輯,同時也能反映出許多學生對於計算機科學的第一印象。同時,美國計算機頂尖大學的教學語言選擇實際上也能反映出剩下學校的教學語言選擇趨勢。
研究方法
我依照 2014 年 U.S. News 提供的學校排名,選出了計算機排名前 39 的學校。你當然可以說我選擇的學校不夠科學,不過所有的排名都不能保證完全的公平公正。因此我們就以這 39 個學校作為樣本進行研究。至少它在某種程度上能反應一定的結果。
我找到了每個學校計算機系、計算機工程系和電子工程系的課程,並著重研究標號為 CS0 和 CS1 的課程。一般情況下課程編號開頭為 CS1 的是計算機專業的基礎先修課,而 CS0 開頭的課程是介紹課程。當然有些學校的課程編號並不是以這種方式進行的,因此我也稍微篩選了一下課程,選出了符合上述 CS1 以及 CS0 編號要求的課程。
研究結果
下面的圖表展示了這 39 個學校的編程基礎課程使用語言的狀況。
討論
從圖表可以很明顯地看出來,Python 是最受歡迎的入門語言。緊隨其後的是 Java,Java 是過去的十年裡的主要編程入門語言。有些學校完全將教學重點轉到了 Python 上,另一些學校將用 Python 教的課程作為 CS0 級別的課程,同時仍舊將用 Java 教學的課程作為 CS1 級別的課程。而高中的高級課程中仍舊主要使用 Java 教學。
下一個受歡迎的教學語言為 MATLAB。MATLAB 主要在 CS0 級別的課程中出現,主要用來教科學家以及工程師如何編程。再次是 C++。不過 C++在過去的十年裡已經已經基本被 Java 替代了。高中提供的高級課程早在 2003 年就已經用 Java 全面替代了 C++。C 和 C++的受歡迎程度是一樣的,不過許多用 C 語言教的入門課程(比如哈佛大學的 CS50)在使用 C 的同時也使用其他語言進行教學。幾乎沒有學校單獨使用 C 進行編程入門教學。
基於 Scheme 的語言也很受歡迎。值得一提的是,有人曾專門撰寫了教科書、開設相應課程專門介紹基於 Scheme 的程式語言生態系統。但是最近幾年,很多學校(比如麻省理工大學、加州大學伯恩利分校)也用 Python 替代了 Scheme。現在在這排名前 39 的學校裡僅有四所學校還使用 Scheme 進行教學。
Scratch 是唯一上榜的視覺化程序設計語言。Scratch 相較於 Alice、App Inventor、Etoys、Kodu、StarLogo 和 TouchDevelop 而言,也是最受歡迎的視覺化程序設計語言。這些視覺化程序設計語言主要面向沒有接受過大學級別教育的人,向他們介紹如何編程並介紹基本的編程思想。
儘管我在統計時沒有列出,不過還有幾個需要提到的語言。
諸如 Haskell、OCaml 這樣的靜態函數化程式語言在 PL 研究者中非常受歡迎。
諸如 JavaScript、Ruby 和 PHP 這樣的動態類型的程序語言在網絡工程師裡很受歡迎。
行業內常用的語言則與特定的平臺關係緊密。比如著重做蘋果軟體和應用開發的主要用 Objective-C,而著重做微軟程序開發的則用 C# 和 Visual Basic。
附件
課程統計源數據。
如果你發現我遺漏了什麼數據,或者寫錯了什麼,歡迎發郵件至 philip@pgbovine.net 糾正我。
排名大學PythonJavaMATLABC++CSchemeScratch1Carnegie Mellon15-110, 15-112Columbia
ENGI E1006COMS W1004-1COMS W1005-1U. Maryland - College Park
CMSC 198C,D,ECMSC131Harvard
Purdue
CS17700CS18000CS15900UMass Amhers
CMPSCI 119CMPSCI 121UNC Chapel Hil
Comp 110Comp 401Johns Hopkin
NYU
CSCI-UA.2CSCI-UA.0101Penn State
UC Irvine
CSE 41U. Minnesota
CSci 1001,1901CSci 1103U. Virginia
CS 1120CS 1110, 1111Northwestern
EECS110Ohio State
Rutgers
UC Davis
ECS 10UC Santa Barbara
CS8U. Chicago
CMSC 12100, 12200, 12300CMSC 12100, 12200, 12300感謝讀者,在 2014 年 7 月 7 日文章首發後,我又做出了一些更新。
添加 Columbia ENGI E1006(使用 Python)。一位在校生給我發送郵件告訴我這個消息。同時他還指出「很少有人必須選 MATLAB 課程 1005,而所有計算機專業的學生都必須選 1006.這個 Python 課程是近兩年新加的,因此這也能代表著 Python 整變得更流行。」
添加 UNC Chapel Hill Comp 110 (使用 Python)。一位在校教師發郵件給我告訴我這個消息。
添加 Northwestern EECS 111(使用 Scheme)。一位在校學生給我發郵件表示「CS1 又叫 EECS111,這門課主要使用 Meta、Scheme 或者 Racket。具體使用哪種語言取決於是哪位教授進行教學。我覺得把 CS1 列為用 Scheme 教學比較公平,特別是我們用的很多特性大部分都是 Scheme 的。」
添加 UMassage CMPSCI 121(使用 Java)。一位在教室發郵件告訴我這一點。
添加 Georgia Tech CS 1371(使用 MATLAB)。一位在校學生發郵件糾正我這一點。
添加 USC CSCI 103(使用 C 和 C++)。一位在校生發郵件告訴我這一點。
添加 Brown CSCI0190(使用 Scheme)以及 CSCI0931(使用 Python)。一位在校學生發郵件告訴我這一點。
添加 U. Minnesota CSci 1103(使用 Java),並且在 Java 統計欄刪除 1901 課程,將 1901 課程添加到使用 Python 一欄。一位在校學生發送郵件告訴我這一點,並且告訴我 1901 的教學語言由 Java 換成了 Python。
本文譯者 翛凌、原作者 Philip Guo
-
分享文章:可以點擊右上角的三個點圖標,將文章分享給朋友或朋友圈。
關注訂閱:可以點擊右上角的三個點圖標在彈出菜單中選擇[查看官方帳號-關注]
歡迎薦稿:如果您有好的文章想推薦給我們,請發送至到:ad@pmtoo.com 註明作者和出處,謝謝!