再见 Python,你好 Julia!
本文最初發布于 towards data science 博客,經原作者授權由 InfoQ 中文站翻譯并分享。
看到這個標題請不要誤會我的意思。Python 依舊大受歡迎,其熱度是由計算機科學家、數據科學家和 AI 專家組成的堅如磐石的社區撐起來的。
但如果你曾與這些人坐下來聊過天,你也會知道他們對 Python 的缺陷有多大怨言。速度緩慢,需要過多的測試,就算做過了測試也會冒出來運行時錯誤……讓人頭疼的事情實在太多了。
這就是為什么越來越多的程序員開始采用其他語言的原因所在——其中最優秀的替代品包括 Julia、Go 和 Rust。Julia 非常適合數學和技術任務,而 Go 很擅長模塊化程序,Rust 則是系統編程的首選。
由于數據科學家和 AI 專家需要處理許多數學問題,因此在他們眼中 Julia 是贏家。就算是在最苛刻的對比條件下,Julia 也具有很多 Python 無法比擬的優勢。
Python 的禪意與 Julia 的貪婪
人們之所以要創建一種新的編程語言,是因為他們既想保留舊語言的長處,又要修復其中的缺陷。
正是基于這種理念,Guido van Rossum 在 1980 年代后期創建了 Python,作為 ABC 的改進和替代。后者作為編程語言而言過于追求完美了——它如此死板,教學起來很容易,但在現實生活中卻很難使用。
相反,Python 非常實用。你可以在 "Python 的禪意 " 這篇文章(https://www.python.org/dev/peps/pep-0020/)中看到這一點,這篇文章反映了創建者的意圖:
美麗勝于丑陋。
顯式勝于隱式。
簡單勝于復雜。
復雜勝于繁復。
扁平勝于嵌套。
稀疏勝于密集。
可讀性很重要。
特殊情況還不足以打破規則。
而實用性勝于純度。
[……]
Python 仍然保留了 ABC 的那些良好特性:例如可讀性、簡單性和對初學者友好的優點。但是 Python 比 ABC 更加健壯,并且更適合現實生活。
ABC 為 Python 鋪平了道路,后者又為 Julia 指明了方向
從同樣的角度來看,Julia 的創造者們也希望保留其他語言的優點,而摒棄它們的缺點。但是 Julia 的志向更為遠大:與其只取代一種語言,不如讓所有語言都成為手下敗將。
Julia 的創造者是這樣說的:
我們很貪心:我們想要更多。
我們需要一種具有自由許可的開源語言。我們希望有 C 的性能和 Ruby 的動態性。我們需要一種同調的語言,具有像 Lisp 這樣的真實宏命令,但又有類似 Matlab 這樣熟悉又明顯的數學符號。我們想要的語言應該像 Python 一樣適合常規編程,又像 R 一樣適合統計用途,像 Perl 一樣能自然地處理字符串處理,也能像 Matlab 一樣成為線性代數的強大工具,還能像 Shell 一樣擅長將程序粘合起來。這種語言要非常簡單易學,卻又能打動最專業的程序員。我們希望它是交互式的,希望它是編譯的。
Julia 希望將當下存在的所有優勢都融合在一起,同時還不能為了這些優勢做出犧牲,引入其他語言中的那些缺陷。盡管 Julia 是一門年輕的語言,但它已經實現了創造者設定的許多目標。
讓 Julia 的開發人員著迷的優勢
多用途
從簡單的機器學習應用程序到規模龐大的超級計算機仿真應用,Julia 無所不能。在某種程度上來說,Python 也可以做到這一點——但 Python 是逐漸走進各個領域的。
相比之下,Julia 的多用途能力是天生的,從零開始打造而成。
速度
Julia 的創造者希望創建一種與 C 一樣快的語言——但他們的成品速度甚至比 C 更快。盡管近年來 Python 加速起來變得容易許多,但是它的性能依舊與 Julia 相去甚遠。
2017 年,Julia 甚至加入了 Petaflop 俱樂部——這是一個小型編程語言俱樂部,其中的成員都能實現超過千萬億次每秒的峰值計算性能。除了 Julia,目前只有 C、C++ 和 Fortran 是這個俱樂部的成員。
社區
歷經 30 多年的發展,Python 已經建立起了一個龐大的支持社區。隨便哪個與 Python 相關的問題,你都只需要谷歌一下就能得到答案。
相比之下,Julia 的社區非常小巧。雖然這意味著你可能需要深入挖掘才能找到答案,但你可能會一次又一次遇到同樣的伙伴。這樣一來,程序員之間甚至可能發展出超越純粹利益關系的友誼。
代碼轉換
你甚至不需要了解任何 Julia 命令也能使用 Julia 編程。你不僅可以在 Julia 中使用 Python 和 C 代碼,甚至可以在 Python 中使用Julia。不用說,這樣一來,開發人員就能輕松修補自己 Python 代碼的缺陷。或者在學習 Julia 的過程中依舊保持生產力水平。
庫仍然是 Python 的強項
庫
這是 Python 的強項之一——它的庫數量龐大且維護良好。Julia 沒有那么多庫可用,用戶還抱怨說現有的那點庫維護得也不夠好。
但是,當你考慮到 Julia 是一門非常年輕的語言,并且資源相當有限,你就會意識到它現有的庫數量已經相當驚人了。Julia 庫的數量還在增長,此外它還可以與 C 和 Fortran 中的庫交互,以處理圖表之類的任務。
動態和靜態類型
Python 是 100% 動態類型的。這意味著程序將在運行時確定變量是浮點數還是整數。
盡管這對初學者來說非常友好,但它也引入了許多潛在的錯誤。這意味著你需要在所有可能的場景中測試 Python 代碼——這個過程相當笨拙,需要花費大量時間。
由于 Julia 創作者也希望它易于學習,因此 Julia 完全支持動態類型。但與 Python 不同的是,你可以根據需要引入靜態類型——比如 C 或 Fortran 中的那些形式。
這可以為你節省大量時間:你可以在需要的任何地方指定類型,用不著再絞盡腦汁逃避測試了。
數據:投資潛力股的意義
在 StackOverflow 上標記為 Julia(左)和 Python(右)的問題數量。
盡管所有這些優點聽起來都很不錯,但請務必注意,與 Python 相比 Julia 依然是個新生兒。
一個相當不錯的度量標準是 StackOverflow 上的問題數量:目前,Python 被標記的問題數量比 Julia 多二十倍!
這并不意味著 Julia 不受歡迎——自然,它需要一些時間才能被程序員廣泛采用。
考慮一下——你是否真的想用另一種語言編寫所有代碼?不,你寧愿在將來的項目中嘗試一種新語言。正因如此,每種編程語言在發布和廣泛采用之間都會存在很長的時滯。
但是,如果你現在就采用它(這很容易,因為 Julia 允許大量的語言轉換),那么你就是在投資未來。當越來越多的人開始采用 Julia 時,你已經獲得了豐富的經驗,足以成為指導他們的老手。另外,隨著越來越多的 Python 代碼被 Julia 取代,你的代碼也會更加持久。
是時候向 Julia 表達一些愛意了
底線:試一試 Julia,讓它成為你的優勢
四十年前,人工智能不過是一種小眾玩物。那時的業界和投資者并不信任它,與它相關的許多技術都笨拙且難以使用。但當時就了解它的那些人成為了今天的大牛——市場對大牛的需求如此火熱,以至于他們的薪水足以匹敵NFL 球員。
同樣,Julia 現在也還是很小眾。但隨著它的發展,那些早日采用它的人們會成為最大的贏家。
我并不是說,如果你現在就選擇 Julia,就一定可以在十年內賺到很多錢。但這樣做的話,你是在為自己創造機遇。
想想看,市場上的大多數程序員的簡歷上都帶有 Python 的字樣。在接下來的幾年中,我們將在就業市場上看到數量更多的 Python 程序員。但是,如果企業對 Python 的需求衰退,Python 程序員的比例也會下降。起初這種趨勢是很緩慢的,但也是不可逆轉的。
另一方面,如果你可以把 Julia 納入自己的簡歷,就會取得真正的優勢。因為不客氣地說,你與其他 Python 程序員又有何不同呢?區別是很小的。但即使在三年之后,市場上也不會有那么多的 Julia 程序員。
有了 Julia 的技能,你不僅可以證明自己對編程的興趣超出了職位需求,還能讓人知道你渴望學習,并且對程序員這項事業有著更深刻的理解。換句話說,你很適合這份工作。
你和其他 Julia 程序員一樣,可能是未來的編程明星,并且你們很清楚這一點。或者,正如 Julia 的創造者在 2012 年所說的那樣:
即使我們意識到我們的貪婪實在無可救藥,我們仍然希望擁有所有這一切。大約兩年半之前,我們開始著手創建我們的貪婪語言。它還不完整,但是時候發布 1.0 版本了——我們創建的語言稱為 Julia。它已經滿足了我們 90% 的苛刻要求,現在它需要其他人的苛刻要求來進一步塑造和完善。因此,如果你也是一位貪婪、瘋狂、要求苛刻的程序員,我們希望你嘗試一下。
Python 仍然非常流行。但是,如果你現在開始學習 Julia,它將來可能就是你的頭等艙船票。從這個層面來說:再見 Python,你好 Julia!
作者介紹
Rhea Moutafis,正在攻讀“暗物質物理學”博士學位,他熱愛藝術、音樂和美好的事物。
原文鏈接:https://towardsdatascience.com/bye-bye-python-hello-julia-9230bff0df62
總結
以上是生活随笔為你收集整理的再见 Python,你好 Julia!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 尊老爱幼名言警句大全(尊老爱幼 名言警句
- 下一篇: GitHub 开源 Super Lint