【為什麼我們要挑選這篇文章】過去 15 年,Java 一直是最多人使用的程式語言,C 語言、PHP 皆無法撼動其地位;但在 2013 年,Python 突然竄起,在短短 5 年內,擠下 C 語言和 PHP,並在 2018 年打敗 Java,成為最多人使用的程式語言。
Python 憑什麼獲勝?2013 年發生了什麼事?(責任編輯:郭家宏)
「《科技報橘》徵才中!跟我們一起定位台灣產業創新力 >> 詳細職缺訊息
快將你的履歷自傳寄至 jobs@fusionmedium.com」
哪種程式語言最火熱?
在不同的時代,這個問題也有著不同的答案,而一個程式語言的使用人數變遷史,實際上也是一個電腦世界的成長編年史。
一位名叫 PYPL 的網友很盡心地統計了從 2004 年到 2019 年,每個月使用人數最多的 15 種程式語言,並將這 15 年來的變化,製作成了一個 4 分鐘的影片。
在這部 TOP 15 的程式語言榜單中,我們可以看到各種不同程式語言的流行度起伏。除了今天主流的 Python、Java、Javascript、C++、R 外,在這個榜單曾擁有姓名的還包括 C#、php、objective-C、Matlab、 TypeScript、Go 這些不那麼熟悉的名字。
而細細推敲每一次的榜單變動,在感嘆各種程式語言更新疊代之快的同時,也看到了一幅完整的電腦和程式世界變遷史:比如 2004 年 Javascript 語言的一度火熱,得益於網遊產業的興起;而 11 年左右 Objective-C 的流行歸功於 iPhone 的成功,編寫 iPhone 應用程式的主要程式語言是 Objective-C。
在 4 分鐘的影片中,15 種程式語言在過去 15 年來的起伏變化一覽無餘,下面,請隨文摘菌(本文作者)一起,沿著時間線,回顧各種語言的變化史。
2004 年,位居榜首的四大金剛:PHP、C、C++、Javascript
故事開始於 2004 年 8 月,這一年,Java 用戶量最多,其次是 PHP、C/C++、Javascript。Python 在這時候還是個比較小眾的程式語言,用戶量並不多,排在第九位。
位於榜首的這四大金剛是怎樣的語言,它們各自又有什麼樣的特點呢?文摘菌帶大家先來科普一下:
Java 最初由 Sun Microsystems 開發和支持,而在 2010 年 1 月,Sun Microsystems 由 Oracle 收購,因此這之後開發和支持工作由 Oracle 完成,Java 創建的宗旨是 WORA(Write Once Run Anywhere,程式碼運行無邊界),Java 的平台獨立性是其在企業界取得成功的支柱之一。
PHP 最初由 Rasmus Lerdorf 於 1995 年建立,PHP 廣泛用於建構動態網頁和伺服器端開發。
Dennis MacAlistair 美國電腦科學家 Ritchie 於 1967 年至 1973 年間,在 AT&T 貝爾實驗室建立了 C 語言,C 非常流行並廣泛用於系統編程,它比 Java 的歷史更久遠,但它仍在程式語言中佔據一席之地。C++ 被開發為 C 的下一代語言。它具有物件導向的編程功能,與更結構化的 C 語言相比,這一功能是十分令人驚嘆的,因為它非常接近本機系統和而且具有物件導向特性,在金融的高頻交易領域被廣泛使用。
Javascript 是一種廣泛運用於客戶端的解釋性腳本語言,由 Brendan Eich 設計,並由 Netscape Communications Corporation 開發,在瀏覽器中可解釋運行,跨平台性能良好,幾乎每個主要網站都在使用這個語言。
在影片開始,這四種語言在 2004 年初居榜首,實力地位不可撼動,而後隨著各大程式語言的迅速崛起,這種形式逐漸發生著變化。
2004.09 – 2004.10:網路遊戲市場下的 Javascript 和 VB
2004 年 9 月到 10 月,Javascript 一直在與 Visual Basic(簡稱 VB)語言爭高下,2004 年網路遊戲市場風起雲湧,包括 Javascript 在內的很多程式語言開始興起,使得 JS 一度超越 Visual Basic 位居第四。
2004 年,《三國策Ⅲ》於 9 月 25 日由皓宇互動開發,《武林外史》是 2004 年 11 月 28 日由韓國 CR-SPACE 公司耗時 2 年時間開發完成的全 3D 純武俠網絡遊戲,除此外還有《傳奇》等經典網遊,這些遊戲產業的興起,使得遊戲開發中需要使用到的 Javascript 語言一度火爆,用戶人數增長直逼 Visual Basic,有一段時間甚至超越 Visual Basic。
當然 Visual Basic(簡稱 VB)也不甘示弱,Visual Basic 是 Microsoft 公司開發的一種通用的,物件導向的程式設計語言,其在發展過程中的第三方控件和 GUI 極大方便了數據訪問和程式開發。在引入 .NET Framework 後,2004 年,微軟開放了 Visual Studio 2005 的測試版本(代號 Whidbey),包含了 .NET Framework 2.0 的測試版本有關,使用 Visual Basic 的用戶上升,再一次超越 Javascript,出現了上圖中兩者「爭執」的局面。
2004.12 – 2005.01:爭執不休的 Python 和 Delphi
Delphi 是 Windows 下的開發平台,其最初原型是 DOS 時代盛行一時的 BorlandTurbo Pascal。
「真正的工程師用 C++,聰明的工程師用 Delphi」,這句話是對 Delphi 最經典、最實在的描述。Delphi 被稱為第四代程式語言,它具有簡單、高效、功能強大的特點,和 VC 相比,Delphi 更簡單、更易於掌握,而且在功能上絲毫不遜色;和 VB 相比,Delphi 則功能更強大、更實用。可以說,Delphi 同時兼備了 VC 功能強大和 VB 簡單易學的特點。
而我們現今廣泛使用的 Python,是個解釋型腳本語言,於 1991 年發行。Python 2 於 2000 年 10 月 16 日發佈,穩定版本是 Python 2.7。自從 2004 年以後,Python 的使用率呈線性成長。
這一時間區間,Python 和 Delphi「爭執不下」,主要是由於 Delphi 9.0 版本於 2004 年末發佈,在語法方面:加入了 inline 及 for in loop 等功能;IDE 方面:把 Borland Delphi. Net、Borland Delphi Win32、Borland C#、Enterprise Core Objects 等環境和功能整合成一個開發工具,因此可以在 Win32 和 .NET 開發環境中切換或同時進行,這些功能的優化,使得 Delphi 的用戶數動態變化,與 Python 展開激烈爭鬥。
C# 的兩次「躍進」
2006 年年初,C# 超越 Perl,位居第 6:
Perl 是一種高級的、通用的、解釋的、動態的程式語言,Perl 由 LarryWall 在 20 世紀 80 年代中期設計和開發,因其出色的文本處理能力而聲名鵲起,被廣泛用於 CGI、數據庫應用程式、網絡程式和圖形程式。
2006 年 5 月,C# 成功超越 Visual Basic 位居第 5。
C# 為什麼能在 2006 年來兩次絶地反殺呢?它是一種怎樣的語言?
C# 是微軟公司在 2000 年 6 月發佈的一種新的程式語言,是第一個物件導向的程式語言,它借鑒了 Delphi 的一個特點,與 COM(組件對象模型)直接整合,並且新增了許多功能及語法,而且它是微軟公司 .NET windows 網絡框架的主角。
那麼為什麼在一年內,它能超越其他兩種語言?2006 年又有哪些不平凡呢?
文摘菌將時間定位到 2006 年 1 月 1 日到 2006 年 12 月 31 日,在必應(Bing)中搜尋 C# 語言,搜尋得到的結果如下:
站在後人的角度看當時人們對於 C# 語言的理解還挺有意思的,2006 年人們對於 C# 語言還是充滿了疑問,產生了 C# 與 C 語言的區別,C#.NET 的前景如何諸如此類的問題,同樣的,在百度搜尋引擎中輸入 C# 語言得到的結果如下:
2006 年 web 2.0 的興起,同年,網絡遊戲免費模式繼續得到了大規模推廣,像盛大公司的《傳奇 II》和《夢幻國度》,C# 和與 Unity 結合的敏捷遊戲開發,使得那段時間的 C# 開發一度火熱,拋卻時勢使然,還有 C# 搭建桌面應用的便捷性以及 C#3.0 的發佈。
在 2005 年 9 月份的 PDC 大會(Professional Developers Conference 微軟專業開發人員大會)在大會上,發行了 C#3.0(研發代號 Orcas——魔鬼)的技術預覽版。
C# 3.0 則是率先實現了 LINQ 的語言,可以用類似於 SQL 語句的語法,從一個數據源中輕鬆地得到滿足一定條件的對象集合。例如要尋找一個字元串數組 names 中所有長度大於 5 的字元串,就可以寫:var longname = from n in names wheren.Length > 5 select n;
這些原因加起來,使得 C# 在 2006 年成為工程師的寵兒。
2007.04 – 2007.05:Javascript 與 C/C++ 持續較勁
2007 年 4 月到 2007 年 5 月,Javascript 一直在與 C/C++ 較勁,不過最後還是 Javascript 穩居第三,Javascript 做為入口網站的必備語言,2007 年 5 月開始,千龍網、新浪網、搜狐網、網易網、TOM 網、中華網等 11 家網站舉辦「網上大講堂」活動,旨在透過網上授課的形式與網民互動,傳播科學文化知識,C/C++ 短期內的火爆,還是沒有撼動 Javascript 在網站開發方面的地位。
2008 年:C# 和 Python 的攀升
2008 年除了 C++ 和 Javascript 僵持不下外,也同樣見證了 Python 的兩次逆襲和 C# 第一次超越 C/C++。
2008 年年初,Python 超越 Perl:
2008 年 10 月,Python 超越 Visual Basic,僅次於 C/C++:
同年 7 月,C# 超越 C/C++,位居第四:
2008 年到底發生了什麼?使得這兩種語言能夠脫穎而出呢?
2008 年,汶川大地震、北京奧運會等重大事件促進網路媒體提升主流媒體價值,同時中國網民躍居世界第一,雖然受到金融危機的影響,網路的浪潮已經是大勢所趨。
Python 的 Web 開發,只需要下載引入一些成熟的包,這些便利性是 Python 的優勢所在,同時 3.0 版本在後續的發佈,也吸引了一批開發者,使得 Python 在一年內兩次攀升。
至於 C# 的攀升,不難理解,遊戲市場和桌面應用的持續發酵,騰訊於 2008 年新推出的《穿越火線》等一系列遊戲在催生著 C# 的發展。
歸功於 iPhone 的成功,Objective-C 排名向前
2011 年 11 月到 2012 年 1 月,Objective-C 一路開掛,超越 Ruby 和 Matlab 居第 8 位。
Matlab 是商業級別的數學建模軟體,這個語言我們耳熟能詳,那 Objective-C 和 Ruby 又是什麼語言呢?
Ruby 最初是由日本的 Yukihiro Matz Matsumoto 在 20 世紀 90 年代中期設計和開發的,主要用於 Web 應用程式開發,被 Twitter、Hulu 和 Groupon 等各大網站所使用。
Objective-C 看到這個語言的標識,就知道和蘋果有點關係了,它是擴充 C 的物件導向程式語言,主要使用於 Mac OS X 和 GNUstep 這兩個使用 OpenStep 標準的系統。
2011 年 10 月 4 日,蘋果發佈了第五代 iPhone,即 iPhone 4S,這款手機採用了 iOS 5 系統,並與 Twitter 進行了整合。
Objective-C 的流行歸功於 iPhone 的成功,編寫 iPhone 應用程式的主要程式語言是 Objective-C。
Python 因為「雲端」興起,大舉超越 C/C++ 和 PHP
2013 年 5 月,Python 第一次超越 C/C++,成為排名第四的語言。
到了 2013 年 12 月的時候,Python 已經超越 C#,躍居第三。
2013 年再一次見證了 Python 這匹「黑馬」的實力,時代造就英雄,這背後是時代使然,也是必然。
2012 到 14 年,「雲端計算」這個詞出現在大批創業公司和巨頭的耳中,大家都在做 IAAS,很多著名的雲端計算開源平台都是基於 Python 開發的(如 OpenStack),催生出不少的 Python 崗位,Python 的開發者和用戶普遍增多。
OpenStack 傳送門
2014 年到 2015 年,「大眾創業,萬眾創新」的口號響徹中國的大江南北,什麼語言最適合快速搭建原型呢?Python 再一次嶄露頭角,在 2015 年末,成功超越 PHP 成為用戶量最多的第二大語言,緊逼之前一直穩居第一的 Java。在這以後,Python 用戶量逐漸成長。
小插曲:被 R 超越的 Objective-C
2017 年 9 月到 10 月間,Objective-C 和 R 語言一直爭執不下。
Objective-C 之前有瞭解,那 R 語言又是怎樣的語言呢?
R 是屬於 GNU 系統的一個自由、免費、原始碼開放的軟體,它是一個用於統計計算和統計製圖的優秀工具,R 是受 S 語言和 Scheme 語言影響發展而來,其最主要的特點是免費、開源、各種各樣的模組十分齊全。在 R 語言中,提供了大量的第三方功能包,其內容涵蓋了從統計計算到機器學習、從金融分析到生物資訊、從社會網路分析到自然語言處理、從各種數據庫各種語言接口到高性能計算模型,可以說功能十分齊全。
Python 人數在快速成長的同時,為什麼有 R 語言超越 Objective-C 這一局面呢?
2016 年 3 月,Alpha Go 與圍棋世界冠軍、職業九段棋手李世石進行圍棋人機大戰,以 4 比 1 的總比分獲勝,這足以使人們意識到「人工智慧」不再是概念,解決一些此領域的問題,難免需要對數據做統計,運用機器學習的演算法解決問題,R 語言做為優秀開源的統計工具,也是在這一時期內用戶量波動攀升的原因。同樣 Python 中大量的科學計算包,也使得用戶量一度緊逼 Java,Python 有可能超越 Java 嗎?別急,時間會告訴我們答案。
在 AI 的助推下,Python 終於得冠
2018 年 2 月到 5 月,使用 Python 語言的人數不斷增多,大有趕上 Java 的趨勢。
到了 2018 年 6 月,Python 已經超越 Java 成為用戶量最多的語言。
2018 年 7 月到 8 月,Python 居榜首後,Java 用戶量不斷減少,而其用戶量的不斷活躍增多,這其中可能是一部分 Java 工程師投入了 Python 的懷抱。
一份 2017 年來自 Python Developers Survey 的數據顯示如下圖:
Python 開發者占比比較多的依次是美國、印度、中國(2017 年的調查數據,僅供參考)
而到了 2018 年 8 月的時候已經成為用戶量最多的程式語言。
Java 的跨平台性和穩定性,一直讓其成為程式語言界的第一把交椅,實力地位不可撼動、但其冗長的語法讓很多開發者詬病,這也是 Java 開發者減少的原因。
Python 在很多領域都能使用,例如如網頁開發、金融、運維、機器學習、AI 等,從來沒有一個語言能涉及如此多的領域,其他因素包括:
1. 世界科技巨頭喜歡它,Google、YouTube、Facebook、IBM、NASA、Dropbox、雅虎、Mozilla、Quora、Instagram 和 Reddi t 只是技術領域的一些巨頭,它們將 Python 用於各種用途,並且一直在尋找 Python 工程師。例如,Google 使用 Python,從 AI 演算法用到 App Engine Cloud。同時,99.9% 的 Dropbox 程式碼採用 Python,包括伺服器後端、桌面客戶端、網站控制器邏輯,API 後端和分析工具。
2. Python 廣泛用於機器學習。隨著數據科學的興起,Python 作為科學語言的普及程度已經飆升,有許多用 Python 編寫的機器學習庫,以及大量的工具,可以輕鬆地進行機器學習。
3. Python 對於初學者來說是完美的,它是初學者工程師的絶佳選擇,因為它的語法簡單靈活,使用 Python,您可以輕鬆地開始使用,並立即著手構建可用的東西。早期的這種成就感是學習編碼的一個非常重要的因素,近五分之四的 Python 開發人員將其用作主要語言。
4. 它可能只是你需要會的唯一語言。這是可能的,因為 Python 是一種多功能語言。根據 Skill Up 2018 開發人員技能報告,Python 是一種腳本語言,它為從筆測試者到 DevOps 工程師的每個人提供了很大程度的控制。它允許他們解決問題,你可以使用 Python 來架構網站,開發 GUI,分析數據,將其他語言結合在一起,這代表你可以使用這種語言來滿足你的開發需求。
Python 如此受廣大開發者歡迎,那麼具體 Python 開發者的薪資有多少呢?會不會很誘人呢?
美國各州 Python 開發者平均薪資
到了 2019 年,美國哪個州 Python 工程師工資最高呢?daxx 網站大起底,如下圖所示:
根據 Gooroo 的說法,美國平均 Python 開發者薪水為 110,021 美元(約新台幣 341 萬元)。紐約和加州擁有最高的 Python 開發人員薪水:122,135 美元(約新台幣 379 萬元)和 121,443 美元(約新台幣 377 萬元)。
另一個有趣的事情是加州,紐約州,馬薩諸塞州和弗吉尼亞州在美國擁有最多的開放 Python 職位。
有一個大趨勢表明專門研究稀有技術的開發人員,比那些知識更廣泛的語言的人得到更多的工資,是不是相比 Python,其他偏冷門的程式語言工資更高呢?事實並非如此,下面兩個圖表告訴你答案,Python 是一個例外。
Python 是美國薪水第三高的程式語言
根據 Gooroo 的說法,Python 開發人員的平均工資是每年 110,021 美元(約新台幣 341 萬元),這使得 Python 成為美國第三大收入最高的程式語言,只有 Java 和 Ruby 超越。
觀察上圖可以發現,Python 開發者的薪酬在 2017 到 2018 年之間一直水漲船高,遙遙領先,不過到了 2018 到 2019 年有下降的趨勢,這也和上面 Gooroo 的調查一致。雖然如此,Python 也居薪酬前列,Python 做為現今人工智慧領域的工具,其火熱程度可見一斑。
以上從 2004 年到 2018 年,回顧了 15 年來各大語言的歷史,下面將對這些變化做總結,以古為鏡,可以知興廢。
時勢造英雄,AI 造 Python
上面這張圖,將 2001 年到 2018 年,各種語言在 TIOBE 的排名繪製成了折線圖,不難看出,從 2004 年起,Python 一路披荊斬棘,走上神壇,而其他語言,Visual Basic、C# 等排名下滑。
正如《琅琊榜》中的詩句所言:「遙映人間冰雪樣,暗香幽浮曲臨江,遍識天下英雄路,俯首江左有梅郎。」時勢造就英雄,AI 造就 Python。
(本文經合作夥伴 大數據文摘 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈4 分钟看尽 Top 编程语言 15 年沉浮:C#默 Java 泪,Python 终上位!〉。首圖來源:Pxhere CC Licensed)
更多關於程式的消息
教你如何用 Python 執行蒙地卡羅方法,證明圓周率等於 3.1415926
【內附影片、程式碼】微軟工程大師開課啦!用 44 個短片讓你速成 Python 技能
只會用 Excel 還不夠!七大主題,教你如何用 Python 優化數據分析效能