更多優質內容請關注微信公眾號“AI 前線”,(ID:ai-front)
Ladies and 鄉親們,爭奪資料分析領域最好用程式語言的兩大重量級選手:Python 和 R 語言,竟然宣佈:合!作!了!
如果你身處資料分析領域,那麼你一定遇到過或者聽說過這個兩難抉擇——在進行資料分析時,到底使用哪種語言更好,R 還是 Python?
“最好的程式語言”之爭曠日持久,資料科學領域也不例外。網上經常出現諸如“我想學習機器學習,我應該用哪個程式語言”或者“我想快速解決問題,我應該用 R 還是 Python”等這類問題。儘管這兩種程式語言目前都是資料分析社群的佼佼者,但是它們仍然深陷“哪一種才是資料科學家的首選程式語言”的爭論之中。
但是各位,從今往後,你們可以不用再糾結這個問題了。
在介紹合作相關事宜之前,我們照例先回顧一下這兩種程式語言的前世今生,以及他們在程式設計江湖當中的恩怨情仇。
Ross Ihaka 和 Robert Gentleman 於 1995 年基於 S 語言創造了開源語言 R,目的是專注於提供更好和更人性化的方式做資料分析、統計和圖形模型。
起初 R 主要是在學術和研究中使用,但近來工業界也發現了 R 的好,這使 R 成為在企業中使用的全球發展最快的統計語言之一。
而 Python 由 Guido van Rossem 建立於 1991 年,主要強調效率和程式碼的可讀性。希望深入的資料分析或應用統計技術的程式設計師是 Python 的主要使用者。
當你越需要在工程環境中工作,你會越喜歡 Python。它是一種靈活的語言,在處理一些新東西上表現很好,並且注重可讀性和簡單性,學習曲線比較平緩。
這兩種程式語言是怎麼結下樑子的?還得從機器學習和資料分析說起。
機器學習和資料分析之間的差異有些難以言明,但二者最主要的不同就在於:比起模型的可解釋性,機器學習更加強調預測的準確性;而資料分析則更加看重模型的可解釋性以及統計推斷。
於是乎 ,由於 Python 更看重預測結果的準確性,它成為了機器學習的一把利器。而 R 作為一種以統計推斷為導向的程式語言,在資料分析界也得到廣泛應用。
但是,這並不是就給這二位定了性,除了各自的領域別的都幹不成了。實際上,Python 也可以高效地完成資料分析工作,R 在機器學習中也具有一定的靈活性。它們都擁有相當多的資源庫去實現彼此特定的函式功能,比如 Python 就有很多資源庫來提高自己統計推斷的能力,R 也有很多包可以提升預測的準確率。
由於二者的這些特性,網路上對於 Python 和 R 到底誰強誰弱的爭論一直沒有定論,就連在學界和業界的使用率也一直你追我趕。
不過,隨著近幾年人工智慧的普及,越來越多學校開展了 Python 語言的程式設計課,轉型人工智慧的企業也加大了對 Python 語言的投入力度。根據 Stack Overflow 2018 年開發者調研報告顯示:Python 的排名有所上升,今年已經超過了 C#,正如它去年超過了 PHP。Python 堅定主張要成為「最快速成長的主流程式語言」,至於 R 語言,則被遠遠甩在後面。
看似人氣差距越來越大,有人戲稱他們一個當季網紅,一個“過氣網紅”。但也有技術大佬對於這種誰是最佳程式語言的爭論感到不滿,進而提出了一個想法:為什麼不讓他倆合作呢?
技術大佬 Hadley Wickham 和 Wes McKinney 共同促成了這次合作。
Hadley Wickham 是程式語言 R 最重要的開發人員,Wes McKinney 則是程式語言 Python 最重要的開發人員之一。
Wes McKinney 在 2008 年建立了 pandas project,pandas 是一個開源的 BSD 許可的庫,為 Python 程式語言提供了高效能、易用的資料結構和資料分析工具(對,就是你在 Python 裡超級常用的那個 pandas 庫)。此外,他還撰寫了 Python for Data Analysis 一書,幫助推廣 Python 在資料科學領域的應用。他是 Apache Software Foundation 的成員,並且是 Apache Arrow 和 Apache Parquet 的 PMC 成員,曾任 DataPad 的執行長和共同創始人。
Hadley Wickham 則是許多在資料科學領域使用最廣泛的 R 軟體包的建立者,如 ggplot2、dplyr 和其他許多軟體包。他寫了幾本關於 R 語言的書,如 R for Data Science 和 Advanced R。Hadley 是 RStudio 的首席科學家,同時也是 Ursa Labs 關於 R 語言支援和一般 API 設計和可用性的技術顧問。
上個月,McKinney 宣佈成立 USRA 實驗室——一個致力於改進資料科學工具的創新組織。本次 Python 和 R 的合作就是 USRA 實驗室與 Wickham 所在的公司 RStudio 之間的合作專案,RStudio 目前負責維護 R 語言最受歡迎的使用者介面。USRA 實驗室的主要目標是讓使用不同程式語言的資料科學家能夠更輕鬆地協作,避免不同語言開發人員的過多重複工作。除了改進 R 和 Python,他們還希望其工作能夠改進其他開源程式語言的使用者體驗,比如 Java 和 Julia。
Python 和 R 都可以免費使用,並且經常被認為是資料科學領域中的競爭對手。但 Wickham 和 McKinney 都認為 這種競爭是沒有必要的。事實上,他們認為通過合作可以使這兩種程式語言對數百萬使用者更加有用。
對於在科技公司(如谷歌、Facebook 等)工作的資料科學家、研究人員和資料記者來說,Python 和 R 都是必不可少的工具。開發者最頭痛的問題是,當他們的同事使用另一種不同的程式語言時,協作往往難於上青天。URSA 實驗室將通過打造適用於所有程式語言的新標準,使與使用其他資料科學語言的人共享資料和程式碼變得更加容易。開發者們將這一行動稱作為對“互操作性”的改進。Wickham 和 McKinney 已經一起建立了一個在 Python 和 R 中都可以使用的檔案格式。
Wickham 和 McKinney 表示,除了想讓協作變得更容易,還有另外一個原因促使他們展開這個合作專案:使用不同程式語言的開發者總是在重複解決同一個問題,卻沒能把他們從中學到的經驗教訓分享給其他人。
Wickham 舉了一個例子,在每一種程式語言中,開發人員都要會計算平均值。這對於使用者來說非常簡單,不管是在 Python 還是 R 中都只需要一行程式碼。但是對於語言的開發人員來說,找到用一行程式碼執行計算的最佳方法卻是一個棘手的問題。R 和 Python 的開發人員都傾向於用 C++ 和 C 語言來解決這個問題,這兩種語言對於開發人員來說很好用,但對普通使用者來說卻很棘手。Wickham 認為,在理想情況下,如果一種程式語言的開發人員找到了做某事的最佳方法,那麼這個方法應該應用於其他所有語言。這也是 USRA 實驗室的核心任務。
Wickham 和 McKinney 補充道,這個合作專案除了解決技術問題,也希望讓不同的程式語言社群和平共處。他們認為使用這些語言的人合作得越多,資料科學領域就能發展得越好。
“我希望這次合作能結束 R 和 Python 之間毫無意義的爭鬥,”Wickham 說,“因為這兩種語言都很棒。”
參考資料:
http://wesmckinney.com/blog/announcing-ursalabs/
https://qz.com/1270139/r-and-python-are-joining-forces-in-the-most-ambitious-crossover-event-of-the-year-for-programmers/