當前位置:
首頁 > 科技 > 為什麼Python發展得如此之快?

為什麼Python發展得如此之快?

作者|David Robinson

譯者|足下

Stack Overflow 最近的調查顯示,Python 已經成了發展最快的主流編程語言,也是 Stack Overflow 上來自高收入國家的訪問中,點擊量最高的標籤。為什麼突然間 Python 就發展如此快了?

1

寫在前面

https://stackoverflow.blog/2017/09/14/python-growing-quickly/

Stack Overflow 最近的調查顯示,Python 已經成了發展最快的主流編程語言,也是 Stack Overflow 上來自高收入國家的訪問中,點擊量最高的標籤。

為什麼 Python 發展得這麼快?Python 的應用範圍非常廣,從網站開發到數據科學,再到 DevOps,到處都可以看到它的身影。所以值得認真研究一下 Python 最近到底是在哪些具體的方面應用得更廣了。我是一個使用 R 語言的數據科學家,我對 Python 在我從事的領域內的發展很感興趣。在本文中,我會從另一個角度解讀 Stack Overflow 的數據,理解具體是哪些方面的 Python 應用在增長,以及在什麼樣的公司和組織中 Python 用得最多。

分析得出了兩個結論。首先,對 Python 的使用發展得最快的主要有以下幾個領域:數據科學、機器學習和學術研究。這一點從 Pandas 包的使用增長率就可以很容易看出,這也是網站上和 Python 相關的標籤中訪問量增長最快的。至於是哪些行業在使用 Python,我們發現在下面幾個行業使用得更多些:電子、製造、軟體、政府,尤其是大學。不過,總體來看 Python 的增長在各個行業之間的分布還是比較均衡的。總之,我們可以從結論中看出數據科學和機器學習已經在許多不同類型的公司中普及開了,而 Python 則是在這個過程中為大家所普遍接受的選擇。

我們的分析數據都來自於世界銀行組織認可的高收入國家。

2

Python 發展的類型

Python 是可以適用於多種用途的編程語言,可以用於網站開發、數據科學等各種不同類型的任務。那我們該怎樣整理出 Python 最近在這些領域之間的發展情況呢?

作為新手,我們可以查看每個領域內最有名的 Python 包,看看代表它們的標籤的訪問量的增長情況。可以把網站開發框架 Django 和 Flask 與數據科學的包 NumPy、Matplotlib 和 Pandas 等進行對比。(你也可以用 Stack Overflow Trends 來比較問題的提問率,而不僅僅是訪問量)

從來自於高收入國家的 Stack Overflow 訪問量來看,很明顯 Pandas 是增長最快的 Python 包:它在 2011 年才剛剛出現,現在 Stack Overflow 上卻有約 1% 的問題是關於它的。隨著時間的增長,關於 NumPy 和 Matplotlib 的問題量也有了很大增長。與之形成對比的是,與 Django 相關的問題量在這段時間內保持得很平穩,Flask 雖然有所增長,但佔比還比較小。這表明 Python 的增長應該主要歸功於數據科學,而不是網站開發。

但這麼看還不全面,因為這裡只顯示出了那些應用很廣的 Python 特有的包。系統管理員和 DevOps 工程師們也在很多地方用到了 Python,他們提的 Python 問題也會涉及 Linux、Bash 和 Docker 等。同樣,很多與 Python 有關的網站開發問題沒有提到 Django 或 Flask,那些開發者提的問題關聯的是 JavaScript、HTML 和 CSS 之類的「技術支持」標籤。但我們不能把 Linux、Bash、JavaScript 等標籤也直接考慮進來,武斷地假設它們就是與 Python 相關的。因此,我們只探討那些與 Python 被一起提到的標籤。

我們只考慮 2017 年夏天(七月和八月)的訪問量,這樣就排除了學生的影響,而且還排除了跨越很長統計周期帶來的巨大計算量問題。我們只考慮已註冊的用戶,而且要在這個時間段內起碼瀏覽過 50 個 Stack Overflow 上的問題。我們認為要把一個人稱為 Python 用戶至少要滿足兩個條件:1、他瀏覽的標籤主要是 Python;2、他訪問的頁面至少有 20% 是與 Python 相關的。

常瀏覽與 Python 有關標籤的人還會喜歡瀏覽哪些標籤?

Pandas 毫無懸念地成為 Python 開發者們訪問得最多的標籤,經過上文的分析我們就不會對此感到驚奇了。Python 開發者們訪問得第二多的標籤是 JavaScript,這代表了用 Python 做網站開發的那群人,下面不遠的 Django 也是這樣。這證實了我們的想法,我們應該考慮那些與 Python 一起被訪問的標籤,而不只是一般意義上與 Python 有關的標籤的增長情況。

在列表的下面部分可以看到其它的技術「簇」。我們考慮哪些標籤是傾向於被關聯起來的,以此來發現它們之間的關係:即 Python 用戶對兩個標籤的訪問量是否會相差甚遠。用高度皮爾森相關演算法將標籤成對過濾之後,我們可以得到如下的網路圖。類似這樣的可視化技巧還有很多。

從圖中可以看到,幾個比較大的技術簇可以粗略地描述出一般可以用 Python 解決的幾類問題。圖上面中間部分展示的是數據科學和機器學習的簇:中間是 Pandas、NumPy 和 Matplotlib,它們與 R、Keras 和 TensorFlow 等技術緊密相連。下面的簇代表了網站開發,與 JavaScript、HTML、CSS、Django、Flask 和 JQuery 等相連。圖中還有兩個小簇,一個是系統管理和 DevOps,另一個是右邊的數據工程(Spark、Hadoop 和 Scala)。

3

按主題的增長

現在我們已經看到與 Python 有關的 Stack Overflow 訪問可以被大致分成幾個主題。接下來我們就可以分析到底是哪些主題帶來了 Stack Overflow 上 Python 訪問量的巨大增長了。

想像一下,假設當我們查看一個用戶的瀏覽歷史時,我們發現 Python 是他訪問得最多的標籤。那我們怎麼可以判斷出他是一個網站開發者、數據科學家、系統管理員,或者別的什麼呢?我們應該看看他訪問得第二多的標籤,然後是第三個,等等,順著他的訪問量列表一直看下去,直到發現了某些與上圖中某個簇相關的東西。

我們總結出了下面的簡單方法,可以將一個用戶歸類入某個主題。以下是用戶最常訪問的九個標籤,根據這些就可以把他們分類了。

數據科學家:Pandas、NumPy 或 Matplotlib;

網站開發者:JavaScript、Django、HTML;

系統管理員或 DevOps:Linux、Bash 或 Windows;

其它:除上面的九個標籤之外,其它標籤所佔的流量都不超過 5%。

這樣做雖然不夠嚴密,但已經足以讓我們快速地評估每一類 Python 增長帶來的影響了。我們也試過像潛在狄利克雷分布這樣更嚴格的演算法,但得到的結果都差不多。

哪一類 Python 開發者慢慢地變得越來越多?注意我們是在將用戶分類,而不是將被瀏覽的問題分類,我們展示的是 Stack Overflow 上所有註冊用戶(包括了沒有訪問 Python 的那些)的一部分。

上圖顯示在過去的三年里,因網站或系統管理等相關的技術而產生的 Python 瀏覽量增長相對緩慢而平穩。但與數據科學相關的 Python 瀏覽量卻增長得非常快。這表明在數據科學和機器學習領域 Python 的廣泛應用應該就是它快速增長的主要推動力了。

我們還要計算在 2016 和 2017 年間 Python 開發者對各個標籤的訪問量來判斷單個標籤的訪問量增長情況。比如,也有可能 Javascript 的流量從整體看比較平穩,但事實上在 Python 用戶內部訪問量的百分比卻有所下降。在得到了這樣的基於標籤的增長率之後,就可以把這些結果展示在我們的網路圖中,用於理解哪些主題在增長,哪些在萎縮了。

這幫助我們證實了猜想,絕大部分與 Python 有關的增長都是與數據科學和機器學習相關的。那些簇的顏色在朝著橙色發展,表明相應的標籤已經開始成為 Python 生態系統中的主要部分了。

4

行業

理解 Python 使用量增長的另一個角度是考慮相應的瀏覽量來自於什麼類型的公司。這個角度與考慮瀏覽網頁的開發者類型的不同之處在於,零售公司和媒體公司都會同時僱傭數據科學家和網站開發者。

我們主要關注 Python 增長量非常大的兩個國家:美國和英國。在這兩個國家中,我們可以把訪問量按行業拆分開來(就像比較 AWS 和 Azure 一樣)。

訪問量高居榜首的是以高等院校為主的學術界。原因是現在的本科生們在編程課上學的都是 Python 嗎?

這樣說有道理,但不完全正確。我們在之前的一篇文章中提到過,來自高校的 Python 訪問量在夏天是很平穩的,不只在春天和秋天是這樣。比如,在來自高校的訪問量中 Python 和 Java 都很高,但按季節來劃分卻可以看到差別。

從百分比可以看到,每年一到夏天 Java 的訪問量就會出現斷崖式下跌,因為在大學生的課堂上 Java 課已經很普通了。與之對比,每年夏天的流量中 Python 佔比卻很高。因此高校 Python 問題的主要流量是來自於學術研究者們,因為他們整年都在持續不斷地工作。這也從另一個角度為 Python 的增長主要來自於科學計算和數據分析提供了證據。

政府部門大量地使用了 Python,應用增長非常迅速,Python 在電氣和製造業中也應用得非常廣泛。我對這些行業沒那麼熟悉,因此也很想知道其中的原因。Python 在零售業和保險公司中的應用不多,有些調查顯示在那裡 Java 仍是主流。

這篇文章的主旨在於調查 Python 增長的原因。Python 的流量是不是在某些行業中增長得特別多呢?

至少從美國和英國的數據來看,去年 Python 的應用已經在許多行業中推廣開來。在每個行業中,Python 帶來的流量都有百分之二到三的絕對數量的增長。(注意這就意味著與保險、零售之類應用得沒那麼廣泛的行業對比,在上述行業中的相對增長就更大了)

根據 2017 年迄今為止的數據,在大多數行業中 Java 仍然是被訪問得最多的標籤,但 Python 一直在保持增長。比如從金融業(Stack Overflow 流量的一個大貢獻者)的數據來看,Python 標籤的訪問量已經從 2016 年的第四位提升到了 2017 年的第二位。

5

結論

作為一個以前使用 Python,現在使用 R 的數據科學家,看了這個分析之後我是不是該換回來繼續使用 Python 呢?

我不覺得。一方面,R 的增長勢頭也很好,之前的一篇文章顯示它在發展最快的編程語言排行榜中僅次於 Python。另一方面,我喜歡用 R 做數據分析,這與它被應用的廣泛度關係不大。我也在計劃再寫一篇文章講講我從 Python 換到 R 的經歷,我喜歡這兩種語言的哪些特性,以及為什麼我不願意被迫換回去。

不管怎樣,數據科學都是令人興奮而又發展迅速的領域,自然也會有多種語言在其中共同發展。我的主要目的是想鼓勵剛入行的開發者們考慮培養他們在數據科學領域內的技能集。毫無疑問這是軟體開發領域發展得最快的部份,也在許多行業里都得到了充分的推廣。

親愛的讀者朋友,在你看來,Python 發展如此快的原因是什麼?

在編程語言的聖戰里,沒有誰是永恆的勝者。Python 都如此努力了,你怎麼忍心甘於平庸?

大新聞發布倒計時,還有 4 天!

今日薦文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 InfoQ 的精彩文章:

關於無人駕駛的過去、現在以及未來,看這篇文章就夠了!
AI光遠觀怎麼夠 這場實戰營就讓你近觸
如何用AI技術構建一個高可用的雲安全系統
知乎60萬贊答主:為什麼整天看乾貨還成不了高手?
Spring Cloud 微服務實戰速成指南

TAG:InfoQ |