再見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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章