Julia

【為什麼我們要挑選這篇文章】Python 是當今最熱門的程式語言,然而它有速度慢、需要大量測試、容易出錯等缺點,因此有些程式語言開始出頭,想要修正 Python 的問題,甚至取代它,而Julia 就是未來最有可能取代 Python 的程式語言之一。Julia 是什麼程式,有什麼厲害的地方?(責任編輯:郭家宏)

本文經 新智元(公眾號 ID:AI_era)授權轉載,轉載請連繫出處
作者:新智元

Python 在數據科學、AI 領域裡龍頭老大的位置毋庸置疑。

但如果和一些電腦科學家、數據科學家和人工智慧專家深入交流過的話,你就會知道他們是多麽痛恨 Python 的缺點。

它緩慢的運行速度,需要過多的測試來保證程式碼的正確性 ,再到儘管已經進行了測試但仍然會產生運行時錯誤,這些都足以讓人時常產生拋棄 Python 的想法。

這也是為什麽越來越多的工程師開始使用其他語言的原因。頂尖的工程師通常使用 Julia、 Go 和 Rust。Julia 擅長數學和技術任務,而 Go 則擅長模塊化程式,Rust 是系統編程的首選。

由於數據科學家和人工智慧專家處理大量的數學問題,Julia 也是他們的首要備選語言,Julia 也有 Python 無法比擬的優點。

Python 之禪:務實

當人們建立一種新的程式語言時,是因為他們想保留舊語言的好特性,並修復那些不好的特性。

從這個意義上講,Guido van Rossum 在 20 世紀 80 年代末建立了 Python,當時創造 Python 的原因是改進 ABC。

ABC 語言對於一門程式語言來說太完美了,它固定的編碼模式使得教學變得容易,但在現實應用中卻很難使用。

相比之下,Python 是相當務實的。Python 之禪也反應了創作者的意圖:

Beautiful is better than ugly.
優美優於醜陋,
Explicit is better than implicit.
明瞭優於隱晦;
Simple is better than complex.
簡單優於覆雜,
Complex is better than complicated.
複雜優於淩亂,
Flat is better than nested.
扁平優於嵌套,
Sparse is better than dense.
稀疏優於稠密,
Readability counts.
可讀性很重要!
Special cases aren’t special enough to break the rules.
即使實用比純粹更優,
Although practicality beats purity.
特例亦不可違背原則。
Errors should never pass silently.
錯誤絕不能悄悄忽略,
Unless explicitly silenced.
除非它明確需要如此。
In the face of ambiguity, refuse the temptation to guess.
面對不確定性,拒絕妄加猜測。
There should be one– and preferably only one –obvious way to do it.
任何問題應有一種,且最好只有一種,顯而易見的解決方法。
Although that way may not be obvious at first unless you’re Dutch.
儘管這方法一開始並非如此直觀,除非你是荷蘭人。
Now is better than never.
做優於不做,
Although never is often better than *right* now.
然而不假思索還不如不做。
If the implementation is hard to explain, it’s a bad idea.
很難解釋的,必然是壞方法。
If the implementation is easy to explain, it may be a good idea.
很好解釋的,可能是好方法。
Namespaces are one honking great idea — let’s do more of those!
命名空間是個絕妙的主意,我們應好好利用它。

Python 仍然保留了 ABC 的良好特性,例如可讀性、簡單性和對初學者很友好。但是 Python 比 ABC 更加健壯,更加適應現實生活。

TO 相關文章:
Python 有 5 項缺點,未來可能會被這 3 個程式語言取代

Julia 的野心:融合各家優點,打敗所有程式語言

在同樣的意義上,Julia 的創造者希望保留其他語言中好的部分,而丟棄壞的部分。但 Julia 的野心要大得多:它不是要取代一種語言,而是要打敗所有的語言。

Julia 的作者們在 2012 年 2 月 14 日發了一篇文章,開篇即說明,Julia 是一個貪心的語言,要把所有的好處都包攬下來。

「我們是貪婪的:我們想要更多。我們想要一個開源的語言,一個自由的許可證。我們需要 C 的速度和 Ruby 的活力。我們需要一種具有同源標誌性的語言,像 Lisp 這樣的真正的宏,但是又像 Matlab 這樣顯而易見的、熟悉的數學符號。我們需要一些像 Python 一樣可用的東西,像 R 一樣易於統計,像 Perl 一樣自然的字符串處理,像 Matlab 一樣強大的線性代數,像 Shell 一樣擅長把程式粘合在一起。一些非常簡單易學的東西,卻能讓最嚴肅的駭客高興。我們希望它是互動的,我們希望它被編輯。」

Julia 想要融合當前存在的所有優點,而不是用其他語言的缺點來交換它們。儘管 Julia 是一門年輕的語言,但它已經實現了創作者設定的許多目標。

從簡單的機器學習應用到巨大的超級電腦模擬,Julia 可以用於任何事情。在某種程度上,Python 也可以做到這一點。

相比之下,Julia 被創造的時候就是為這些事情而生。

Julia 的創造者想要創造一種和 C 語言一樣快的語言,但是他們創造的語言比 C 更快。儘管近年來 Python 變得更容易加速,但它的性能仍然遠遠不及 Julia。

2017 年,Julia 甚至成功加入了 Petaflop 俱樂部,這是一個語言小俱樂部,考察每個語言在最佳表現時,速度可以超過每秒一個 Petaflop。除了 Julia,現在只有 C、 C + + 和 Fortran 還在俱樂部中。

作為有超過 30 年歷史的語言 Python,Python 擁有一個龐大的支持性社區。幾乎沒有一個與 Python 相關的問題不能在一次 Google 搜尋中找到答案。

TO 相關文章:
在海量數據的處理上,Julia 的效能比 Python 更優秀

相比之下,Julia 的社區非常小。雖然這意味著你可能需要進一步挖掘才能找到答案,但是你可能會一次又一次地與同樣的人聯系在一起,這可能會變成超越工程師的關係。

除此之外,你甚至不需要知道一個 Julia 命令就可以在 Julia 中編碼。您不僅可以使用 Python 和 C 在 Julia 中編碼,甚至可以在 Python 中使用 Julia!

只需要先 pip 一下:

sudo pip3 install julia

然後再 import 一下:

import julia as jl
jl.install()

即可在 Python 中使用 Julia 程式碼,提升速度。這使得修補 Python 程式碼運行速度慢的缺點變得非常容易。或者在你了解 Julia 的同時保持工作效率。

Python 的庫也要比 Julia 更多,這是 Python 最強大的地方之,它有數不勝數的維護良好的庫。而 Julia 沒有太多的庫,部分庫也被用戶抱怨,說它們沒有得到有效的維護。

但是如果考慮到 Julia 是一種非常年輕的語言,利用有限的資源已經開發了相當多的庫。除了 Julia 的庫數量不斷增長之外,它還可以與 C 和 Fortran 的庫接口來處理繪圖工作。

Python 是 100% 動態類型的,這意味著程式在運行時,決定一個變量是浮點數還是整數。

雖然這對初學者非常友好,但它也引入了一整套可能的 bug。這意味著需要在所有可能的場景中測試 Python 程式碼,這是一項相當愚蠢的任務,需要花費大量時間。

由於 Julia 的創立者也希望它易於學習,所以 Julia 完全支持動態類型。但與 Python 不同的是,如果開發者願意,也可以引入靜態類型,就像在 C 語言或 Fortran 中一樣。

這可以為你節省大量的時間:與其找借口不測試你的代碼,你可以在任何有意義的地方指定類型。

Julia 目前是小眾的程式語言,但有發展潛力

雖然所有這些特性聽起來都很棒,但重要的是要記住,與 Python 相比,Julia 仍然是很小眾的語言。一個很好的度量標準就是 StackOverflow 上的問題數量:Python 被標記的次數比 Julia 多二十倍!

但這並不意味著 Julia 不受歡迎。相反,被工程師廣泛使用需要一些時間。

考慮一下吧:你真的想用另一種語言編寫整個程式碼嗎?不,你寧願在未來的專案中嘗試一種新的語言。這就造成了每種程式語言從發布到採用之間的時間滯後,但是現在就使用 Julia 也很容易,因為 Julia 允許大量的語言轉換,即在其他宿主語言中使用 Julia。

四十年前,人工智慧只是一個小眾行業,這個行業內的投資者都不相信它,而且許多技術都很笨拙,難以使用。但那些在當時學到這一點的人才是今天的巨人,他們的薪水需求如此之高,以至於可以與美國橄欖球聯盟的球員相媲美。

相比之下,如果早點學習 Julia,那麽你的履歷上除了 Python 還會比別人多一項技能。

學起來吧!管他的,先學了再說。

參考資料:The Next Web

延伸閱讀

• 在海量數據的處理上,Julia 的效能比 Python 更優秀
• Python 有 5 項缺點,未來可能會被這 3 個程式語言取代
• 近年 AI 的快速發展,奠基於累積半個世紀的 8 大統計學思想!

(本文經 新智元 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為〈 Python小心!Julia 为你的王冠而来〉。首圖來源:Julia 官網