為什麼說 Julia 更優於 Python?

csdn程序人生 發佈 2020-02-08T10:47:08+00:00

儘管Julia 遠不如 Python 流行,但在數據科學中使用 Julia 有很多優勢,在許多情況下 Julia 甚至是比 Python 更好的選擇。

兩大機器學習和統計編程中的常用語言 Julia 和 Python,究竟有何不同?

作者 | Emmett Boudreau

譯者 | 彎月,責編 | 屠敏

出品 | CSDN(ID:CSDNnews)

以下為譯文:

Julia 是一種多範式、以函數式為主的程式語言,主要用於機器學習和統計編程。Python 是另一種用於機器學習的多範式程式語言,儘管人們通常認為 Python 是面向對象的程式語言。而 Julia 則主要是函數式。儘管 Julia 遠不如 Python 流行,但在數據科學中使用 Julia 有很多優勢,在許多情況下 Julia 甚至是比 Python 更好的選擇。

速度

提起 Julia 就不得不談論速度。Julia 最自豪的地方就是速度快。與解釋型語言 Python 不同,Julia 是一種用自己的方式實現的編譯語言。然而,與其他編譯語言(如C)不同,Julia 是在運行時進行編譯的,而傳統語言則是在執行之前進行編譯的。Julia 的速度有時甚至可能超越C(如果編寫適當的話)。Julia 使用即時編譯器(JIT),編譯速度非常快,儘管它的編譯更像一種解釋型語言,而非 C 或 Fortran 等傳統的低級編譯語言。

多用途

你可能已經注意到,我說過就多用途而言,Python 比 Julia 更占優勢。這是事實,很多 Python 可以做到的事情,而 Julia 卻做不到。當然,這只是就語言本身而言的,因為我們現在討論的多樣性是語言的多功能性。而實際上,Julia 代碼可以在 R、Latex、Python和C中執行。這意味著一般的數據科學項目理論上都可以僅編寫一次,然後通過Julia,在其他語言的 wrapper 中原生地進行編譯,或者也可以通過發送字符串的形式來編譯。

PyCall 和 RCall 也非常有用。考慮到 Julia 的弱點就在於其軟體包,因此能夠隨時隨地調用 Python 和 R 真的很方便。Julia中很好地實現了 PyCall ,並且做得非常好且非常實用。

多重分派

Julia是一種非常獨特的有類型語言,有自己的特性,但最棒的特性就是多重分派功能。首先,也是最重要的一點,那就是 Julia 的多重分派非常快。除此之外,Julia 的多態分派還可以將函數定義作為結構體的屬性使用。當然,Julia 中的繼承就是用這個實現的。

不僅如此,Julia 的多重分派還能讓函數更具可擴展性。對於軟體包擴展來說這一點非常有用,因為在需要明確地導入某個方法時,用戶可以改變方法的名稱。因此很容易明確地導入方法並進行擴展,方便構造體使用新的函數。

為機器學習量身打造

與 Python 不同,Julia 是為統計學和機器學習量身打造的。Python 誕生於於九十年代前期,是一個簡單的面向對象語言,儘管後來發生了許多變化。考慮到 Python 的發展史以及各種各樣的用途,Julia 作為一項專為高層次統計學打造的語言有許多優勢。

我認為其優勢之一就是線性代數。原始的 Python 很難進行線性代數運算,但原始的 Julia 做線性代數非常方便。這是因為 Python 從來沒有考慮過支持機器學習所需的矩陣和方程等。儘管這並不是 Python 的缺點,特別是在有了 NumPy 之後,但從不需要額外軟體包的角度來看,Julia 感覺更適合這類數學運算。Julia 的操作符系統更類似於 R,這也是非常大的優勢。絕大多數線性代數操作都非常快且容易。下面是一個點乘的例子:

Python -> y = np.dot(array1,array2)
R -> y <- array1 * array2
Julia -> y = array1 .* array2

包管理器

也許我是第一個這樣說的人:Julia 的 pkg 包管理器遠勝於 Python 的 pip包管理器。你可以利用 pkg 自帶 REPL 構建、添加、刪除和初始化 Julia 包。pkg 非常方便,因為它綁定了 Git。更新也很容易,添加包非常容易,整體而言,Pkg 比 Python pip 更方便。

總結

不論你選擇 R、Julia、Python 還是 Scala,這都不重要。重要的是你需要注意到每種語言都有缺點,並沒有一種「完美的語言」。在進行多種編程活動時這一點尤為明顯,比如你需要做機器學習,也需要做 GUI、API等。儘管如此,Julia 仍然是我最喜歡的語言之一,Python 也是。Python 的軟體包更好,而且如果項目很小,我更傾向於使用 Python,但對於擁有幾百萬觀測點的數據集而言,Python 讀取數據都會有困難。

總體來說,我更看好 Julia 未來的發展趨勢。使用Julia 編程非常愉悅,這門語言很可能在數據科學中有更好的發展前景。

原文:https://towardsdatascience.com/5-ways-julia-is-better-than-python-334cc66d64ae

本文為 CSDN 翻譯,轉載請註明來源出處。

為了助力對抗疫情,減少線下人員流動和聚集,CSDN與 PyCon 官方授權的 PyCon中國社區合作,舉行「Python開發者日」在線系列峰會。通過精彩的技術乾貨內容、有趣多元化的在線互動活動等,讓您足不出戶便可與大咖學習交流,共同渡過抗疫攻堅期。

關鍵字: