點擊“開發(fā)者技術(shù)前線”,選擇“星標(biāo)?”
在看|星標(biāo)|留言,? 真愛
作者 |?Rhea Moutafis? ?譯者 |?蘇本如,責(zé)編 | 夕顏
隨著Python的停滯不前,一個新的熱門競爭對手崛起了。
如果Julia對你來說仍是個謎,別擔(dān)心。不要誤會我的意思。Python的流行仍然受到計算機科學(xué)家、數(shù)據(jù)科學(xué)家、人工智能專家,以及他們組成的穩(wěn)固社區(qū)的堅定支持。但是,如果你曾經(jīng)和這些人一起共進(jìn)過晚餐,那么你就應(yīng)該知道他們對于Python的弱點有多少抱怨。從速度緩慢到需要過多的測試,再到盡管進(jìn)行了先前的測試仍然會產(chǎn)生很多運行時錯誤 - 這些已經(jīng)足夠讓人惱火了。這就是為什么越來越多的程序員開始采用其他語言的原因,這些語言中最受歡迎的是Julia、Go和Rust。Julia非常適合數(shù)學(xué)和技術(shù)任務(wù),Go非常適合模塊化程序,而Rust是系統(tǒng)編程的首選。由于數(shù)據(jù)科學(xué)家和人工智能專家需要處理許多數(shù)學(xué)問題,因此Julia成為他們的贏家。即使經(jīng)過嚴(yán)格的審視,Julia仍然具有Python無法戰(zhàn)勝的優(yōu)勢。

當(dāng)人們創(chuàng)建一種新的編程語言時,他們這樣做的目的是希望保留舊語言中的好特性,并修復(fù)其壞特性。從這個意義上講,Guido van Rossum在20世紀(jì)80年代后期創(chuàng)建Python的目的是為了改進(jìn)ABC(Abstract Base Class - 抽象基類)。后者對于編程語言來說簡直太完美了 - 盡管其剛性使其易于學(xué)習(xí),但在現(xiàn)實生活中卻很難使用。而Python則相反,它非常實用。你可以在下列Python的禪中看到這一點,它反映了創(chuàng)造者的意圖:- 優(yōu)美勝于丑陋(Python 以編寫優(yōu)美的代碼為目標(biāo))。
- 明了勝于晦澀(優(yōu)美的代碼應(yīng)當(dāng)是明了的,命名規(guī)范,風(fēng)格相似)。
- 簡潔勝于復(fù)雜(優(yōu)美的代碼應(yīng)當(dāng)是簡潔的,不要有復(fù)雜的內(nèi)部實現(xiàn))。
- 復(fù)雜勝于凌亂(如果復(fù)雜不可避免,那代碼間也不能有難懂的關(guān)系,要保持接口簡潔)。
- 扁平勝于嵌套(優(yōu)美的代碼應(yīng)當(dāng)是扁平的,不能有太多的嵌套)。
- 間隔勝于緊湊(優(yōu)美的代碼有適當(dāng)?shù)拈g隔,不要奢望一行代碼解決問題)。
- 即便假借特例的實用性之名,也不可違背這些規(guī)則(這些規(guī)則至高無上)
Python仍然保留了ABC的良好特性:例如可讀性、簡單性和對初學(xué)者的友好性。但是Python比ABC更加健壯,更加適應(yīng)現(xiàn)實生活。
? ? ?
ABC為Python鋪平了道路,而Python也為Julia鋪平了道路。從同樣的意義上說,Julia的創(chuàng)造者們希望保留其他語言的優(yōu)點,而摒棄其缺點。但是Julia的野心要大得多:它不是想取代一種語言,而是想打敗所有語言。
我們很貪婪:我們想要更多。我們想要一種擁有自由許可的開源語言。我們想要C的速度和Ruby的活力。我們想要的語言是同調(diào)的(homoiconic),具有像Lisp這樣的真實宏,但又具有類似Matlab這樣的顯而易見的熟悉的數(shù)學(xué)符號。我們想要的語言像Python一樣適用于通用編程,像R一樣適用于統(tǒng)計,像Perl一樣自然地處理字符串,像Matlab一樣具有強大的線性代數(shù)處理能力,像Shell一樣易于將程序粘合在一起。我們想要一些簡單易學(xué)的,但卻能讓最嚴(yán)肅的黑客開心的東西。我們希望它是交互式的,我們希望它也是可編譯的。
Julia希望融合目前存在的語言的所有優(yōu)勢,而不是用其他語言的劣勢來平衡。盡管Julia是一門年輕的語言,但它已經(jīng)實現(xiàn)了它的創(chuàng)造者設(shè)定的許多目標(biāo)。
Julia可以用于從簡單的機器學(xué)習(xí)應(yīng)用程序到巨大的超級計算機模擬的所有方面。在某種程度上,Python也可以做到這一點,但是Python不知何故發(fā)展成了這樣。相比之下,Julia正是為這個目的而生的。自下而上。Julia的創(chuàng)造者希望創(chuàng)造一種和C語言一樣快速的語言 - 但是他們創(chuàng)造出來的語言速度更快。盡管近年來Python變得更容易加速,但是它的性能和Julia相比仍然相去甚遠(yuǎn)。2017年,Julia甚至加入了Petaflop俱樂部,這是一個小型的編程語言俱樂部,Julia的峰值性能可以超過每秒1 petaflop的速度。除了Julia,目前只有C,C ++和Fortran進(jìn)入了這個俱樂部。憑借其 30 多年的歷史,Python 擁有一個非常龐大的支持社區(qū)。幾乎任何與 Python 相關(guān)的問題在一次谷歌搜索中都能得到答案。相比之下,Julia 社區(qū)非常小。雖然這意味著你可能需要進(jìn)一步挖掘才能找到答案,但你可能會一次又一次地和同樣的人聯(lián)系在一起。這可能會變成超越價值的程序員關(guān)系。你甚至無需知道一條Julia命令,就可以在Julia中進(jìn)行編碼。你不僅可以在Julia中使用Python和C代碼。甚至可以在Python中使用Julia!不用說,這使得修補Python代碼的弱點變得非常容易。或者在你還在學(xué)習(xí)Julia的時候保持高效。擁有數(shù)量龐大且維護良好的庫,仍然是Python的最強項之一。Julia沒有太多的庫,并且用戶還抱怨說它們還沒有得到令人驚訝的維護。但是,當(dāng)你認(rèn)為Julia是一門非常年輕的語言,并且資源有限時,實際上他們已經(jīng)擁有的庫的數(shù)量是相當(dāng)可觀的。除了Julia的庫數(shù)量正在增加之外,它還可以與C和Fortran中的庫進(jìn)行交互以處理繪圖。Python是100%動態(tài)類型的。這意味著程序?qū)⒃谶\行時確定變量是浮點型還是整型。盡管這對初學(xué)者非常友好,但它也引入了許多可能的錯誤。這意味著你需要在所有可能的情況下測試Python代碼。這是一項相當(dāng)愚蠢的任務(wù),需要花費大量時間。由于Julia的創(chuàng)造者也希望它易于學(xué)習(xí),因此Julia完全支持動態(tài)類型。但是與Python相比,你可以根據(jù)需要引入靜態(tài)類型。例如,以C或Fortran中的形式出現(xiàn)。這可以為你節(jié)省大量時間:你可以在有意義的任何地方指定類型,而不是為不測試你的代碼尋找借口。
數(shù)據(jù):在小的時候進(jìn)行投資
? ? ? ?
? ? ?StackOverflow的問題數(shù)量對比(左:Julia,右:Python)盡管所有這些聽起來很棒,但請務(wù)必注意,與Python相比,Julia仍然很小。一個很好的衡量標(biāo)準(zhǔn)是StackOverflow上的問題數(shù)量:目前,Python被標(biāo)記的次數(shù)比Julia多二十倍!這并不意味著Julia不受歡迎, 相反,只是它在被程序員采用前自然地需要一些時間。想想看,你真的想用另一種語言來重寫你的整個代碼?不,你寧愿在未來的項目中嘗試一種新語言。這就造成了每種編程語言在其發(fā)布和采用之間都有一段不小的間隔。但是,如果你現(xiàn)在就采用它(這很容易,因為Julia允許進(jìn)行大量的語言轉(zhuǎn)換),那么你就是對未來進(jìn)行投資。隨著越來越多的人采用Julia,你已經(jīng)獲得了足夠的經(jīng)驗來回答他們的問題。另外,隨著越來越多的Python代碼被Julia取代,你的代碼將更加持久。
關(guān)鍵點:讓Julia成為你的優(yōu)勢
四十年前,人工智能不過是一種小眾技術(shù)。業(yè)界和投資者對其并不信任,許多技術(shù)既笨拙又難以使用。但是那些當(dāng)時學(xué)會它的人都已成為當(dāng)今的巨人 – 市場需求如此之高,以至于他們的薪水與一個職業(yè)橄欖球大聯(lián)盟球員的薪水相當(dāng)。同樣,Julia現(xiàn)在也很小眾。但是,隨著它的發(fā)展,最大的贏家將是那些早期采用它的人。我并不是說,如果你現(xiàn)在選擇Julia,你一定可以在十年內(nèi)賺到很多錢。但是,你正在增加你賺錢的機會。想想看:大多數(shù)程序員的簡歷上都有Python。在接下來的幾年中,我們會在就業(yè)市場上看到更多的Python程序員。但是,如果企業(yè)對Python的需求放緩,那么Python程序員的前景觀點就會暗淡。這個過程開始緩慢,但不可避免。另一方面,如果你能夠?qū)ulia納入自己的簡歷,你將擁有真正的優(yōu)勢。坦白講,是什么讓你有別于其他Python程序員呢?沒有什么東西。但是,即使三年后,也不會有那么多的Julia程序員。有了Julia的技能,你不僅證明了你自己對工作要求以外的興趣。你也證明了你渴望學(xué)習(xí),并且對成為一名程序員的含義有更廣泛的了解。換句話說,你很適合這份工作。你,和其他Julia程序員將是未來的搖滾明星,你知道的。或者,正如Julia的創(chuàng)造者在2012年所說的那樣:盡管我們認(rèn)識到自己的貪婪是不可原諒的,但我們?nèi)匀幌胍獡碛幸磺?。大約兩年半前,我們開始創(chuàng)造我們貪婪的語言。它還沒有完成,但是現(xiàn)在到了發(fā)布1.0版本的時候了 - 我們創(chuàng)造的語言叫做Julia。它已經(jīng)滿足了我們90%的苛刻的要求,現(xiàn)在它需要其他人的苛刻的要求來進(jìn)一步完善它。所以,如果你也是一個貪婪,不講道理,要求苛刻的程序員,我們希望你能嘗試一下。
Python仍然很受歡迎。但是如果你現(xiàn)在開始學(xué)習(xí)Julia,那么你就可能握有了未來的黃金入場券。從這個意義上你可以說:再見 Python!你好 Julia!https://towardsdatascience.com/bye-bye-python-hello-julia-9230bff0df62
前線推出學(xué)習(xí)交流群,加群一定要備注:研究/工作方向+地點+學(xué)校/公司+昵稱(如Java+上海+上交+可可),根據(jù)格式備注,可更快被通過且邀請進(jìn)群
掃碼加我微信進(jìn)群,內(nèi)推和技術(shù)交流,大佬們零距離