天天看點

再見 Python,Hello Julia!

雲栖号資訊:【 點選檢視更多行業資訊

在這裡您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

導讀:随着Python的停滞不前,一個新的熱門競争對手崛起了。

再見 Python,Hello Julia!

如果Julia對你來說仍是個謎,别擔心。

不要誤會我的意思。Python的流行仍然受到計算機科學家、資料科學家、人工智能專家,以及他們組成的穩固社群的堅定支援。

但是,如果你曾經和這些人一起共進過晚餐,那麼你就應該知道他們對于Python的弱點有多少抱怨。從速度緩慢到需要過多的測試,再到盡管進行了先前的測試仍然會産生很多運作時錯誤 - 這些已經足夠讓人惱火了。

這就是為什麼越來越多的程式員開始采用其他語言的原因,這些語言中最受歡迎的是Julia、Go和Rust。Julia非常适合數學和技術任務,Go非常适合子產品化程式,而Rust是系統程式設計的首選。

由于資料科學家和人工智能專家需要處理許多數學問題,是以Julia成為他們的赢家。即使經過嚴格的審視,Julia仍然具有Python無法戰勝的優勢。

01 Python的禅與Julia的貪婪

當人們建立一種新的程式設計語言時,他們這樣做的目的是希望保留舊語言中的好特性,并修複其壞特性。

從這個意義上講,Guido van Rossum在20世紀80年代後期建立Python的目的是為了改進ABC(Abstract Base Class - 抽象基類)。後者對于程式設計語言來說簡直太完美了 - 盡管其剛性使其易于學習,但在現實生活中卻很難使用。

再見 Python,Hello Julia!

而Python則相反,它非常實用。你可以在下列Python的禅中看到這一點,它反映了創造者的意圖:

優美勝于醜陋(Python 以編寫優美的代碼為目标)。

明了勝于晦澀(優美的代碼應當是明了的,命名規範,風格相似)。

簡潔勝于複雜(優美的代碼應當是簡潔的,不要有複雜的内部實作)。

複雜勝于淩亂(如果複雜不可避免,那代碼間也不能有難懂的關系,要保持接口簡潔)。

扁平勝于嵌套(優美的代碼應當是扁平的,不能有太多的嵌套)。

間隔勝于緊湊(優美的代碼有适當的間隔,不要奢望一行代碼解決問題)。

可讀性很重要(優美的代碼是可讀的)。

即便假借特例的實用性之名,也不可違背這些規則(這些規則至高無上)……

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

ABC為Python鋪平了道路,而Python也為Julia鋪平了道路。

從同樣的意義上說,Julia的創造者們希望保留其他語言的優點,而摒棄其缺點。但是Julia的野心要大得多:它不是想取代一種語言,而是想打敗所有語言。

Julia的創造者是這樣說的:

我們很貪婪:我們想要更多。我們想要一種擁有自由許可的開源語言。

我們想要C的速度和Ruby的活力。我們想要的語言是同調的(homoiconic),具有像Lisp這樣的真實宏,但又具有類似Matlab這樣的顯而易見的熟悉的數學符号。我們想要的語言像Python一樣适用于通用程式設計,像R一樣适用于統計,像Perl一樣自然地處理字元串,像Matlab一樣具有強大的線性代數處理能力,像Shell一樣易于将程式粘合在一起。

我們想要一些簡單易學的,但卻能讓最嚴肅的黑客開心的東西。我們希望它是互動式的,我們希望它也是可編譯的。

Julia希望融合目前存在的語言的所有優勢,而不是用其他語言的劣勢來平衡。盡管Julia是一門年輕的語言,但它已經實作了它的創造者設定的許多目标。

再見 Python,Hello Julia!

02 Julia擁有哪些開發人員喜歡的特性?

  1. 多功能性

Julia可以用于從簡單的機器學習應用程式到巨大的超級計算機模拟的所有方面。在某種程度上,Python也可以做到這一點,但是Python不知何故發展成了這樣。

相比之下,Julia正是為這個目的而生的。自下而上。

  1. 速度

Julia的創造者希望創造一種和C語言一樣快速的語言 - 但是他們創造出來的語言速度更快。盡管近年來Python變得更容易加速,但是它的性能和Julia相比仍然相去甚遠。

2017年,Julia甚至加入了Petaflop俱樂部,這是一個小型的程式設計語言俱樂部,Julia的峰值性能可以超過每秒1 petaflop的速度。除了Julia,目前隻有C,C ++和Fortran進入了這個俱樂部。

  1. 社群

憑借其 30 多年的曆史,Python 擁有一個非常龐大的支援社群。幾乎任何與 Python 相關的問題在一次谷歌搜尋中都能得到答案。

相比之下,Julia 社群非常小。雖然這意味着你可能需要進一步挖掘才能找到答案,但你可能會一次又一次地和同樣的人聯系在一起。這可能會變成超越價值的程式員關系。

  1. 代碼轉換

你甚至無需知道一條Julia指令,就可以在Julia中進行編碼。你不僅可以在Julia中使用Python和C代碼。甚至可以在Python中使用Julia!

不用說,這使得修補Python代碼的弱點變得非常容易。或者在你還在學習Julia的時候保持高效。

擁有數量龐大且維護良好的庫,仍然是Python的最強項之一。Julia沒有太多的庫,并且使用者還抱怨說它們還沒有得到令人驚訝的維護。

但是,當你認為Julia是一門非常年輕的語言,并且資源有限時,實際上他們已經擁有的庫的數量是相當可觀的。除了Julia的庫數量正在增加之外,它還可以與C和Fortran中的庫進行互動以處理繪圖。

  1. 動态和靜态類型

Python是100%動态類型的。這意味着程式将在運作時确定變量是浮點型還是整型。

盡管這對初學者非常友好,但它也引入了許多可能的錯誤。這意味着你需要在所有可能的情況下測試Python代碼。這是一項相當愚蠢的任務,需要花費大量時間。

由于Julia的創造者也希望它易于學習,是以Julia完全支援動态類型。但是與Python相比,你可以根據需要引入靜态類型。例如,以C或Fortran中的形式出現。

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

03 資料:在小的時候進行投資

再見 Python,Hello Julia!

盡管所有這些聽起來很棒,但請務必注意,與Python相比,Julia仍然很小。

一個很好的衡量标準是StackOverflow上的問題數量:目前,Python被标記的次數比Julia多二十倍!

這并不意味着Julia不受歡迎,相反,隻是它在被程式員采用前自然地需要一些時間。

想想看,你真的想用另一種語言來重寫你的整個代碼?不,你甯願在未來的項目中嘗試一種新語言。這就造成了每種程式設計語言在其釋出和采用之間都有一段不小的間隔。

但是,如果你現在就采用它(這很容易,因為Julia允許進行大量的語言轉換),那麼你就是對未來進行投資。随着越來越多的人采用Julia,你已經獲得了足夠的經驗來回答他們的問題。另外,随着越來越多的Python代碼被Julia取代,你的代碼将更加持久。

是時候向Julia示愛了。

再見 Python,Hello Julia!

04 關鍵點:讓Julia成為你的優勢

四十年前,人工智能不過是一種小衆技術。業界和投資者對其并不信任,許多技術既笨拙又難以使用。但是那些當時學會它的人都已成為當今的巨人 – 市場需求如此之高,以至于他們的薪水與一個職業橄榄球大聯盟球員的薪水相當。

同樣,Julia現在也很小衆。但是,随着它的發展,最大的赢家将是那些早期采用它的人。

我并不是說,如果你現在選擇Julia,你一定可以在十年内賺到很多錢。但是,你正在增加你賺錢的機會。

想想看:大多數程式員的履歷上都有Python。在接下來的幾年中,我們會在就業市場上看到更多的Python程式員。但是,如果企業對Python的需求放緩,那麼Python程式員的前景觀點就會暗淡。這個過程開始緩慢,但不可避免。

另一方面,如果你能夠将Julia納入自己的履歷,你将擁有真正的優勢。坦白講,是什麼讓你有别于其他Python程式員呢?沒有什麼東西。但是,即使三年後,也不會有那麼多的Julia程式員。

有了Julia的技能,你不僅證明了你自己對工作要求以外的興趣。你也證明了你渴望學習,并且對成為一名程式員的含義有更廣泛的了解。換句話說,你很适合這份工作。

你,和其他Julia程式員将是未來的搖滾明星,你知道的。或者,正如Julia的創造者在2012年所說的那樣:

盡管我們認識到自己的貪婪是不可原諒的,但我們仍然想要擁有一切。大約兩年半前,我們開始創造我們貪婪的語言。它還沒有完成,但是現在到了釋出1.0版本的時候了 - 我們創造的語言叫做Julia。它已經滿足了我們90%的苛刻的要求,現在它需要其他人的苛刻的要求來進一步完善它。

是以,如果你也是一個貪婪,不講道理,要求苛刻的程式員,我們希望你能嘗試一下。

Python仍然很受歡迎。但是如果你現在開始學習Julia,那麼你就可能握有了未來的黃金入場券。從這個意義上你可以說:再見 Python!你好 Julia!

【雲栖号線上課堂】每天都有産品技術專家分享!

課程位址:

https://yqh.aliyun.com/zhibo

立即加入社群,與專家面對面,及時了解課程最新動态!

【雲栖号線上課堂 社群】

https://c.tb.cn/F3.Z8gvnK

原文釋出時間:2020-06-30

本文作者:Rhea Moutafis

本文來自:“

大資料DT 微信公衆号

”,了解相關資訊可以關注“[大資料DT](

https://mp.weixin.qq.com/s/l6pYRTHSSDP8-ATpgfiN5g