AI領(lǐng)域都在用Python即將被淘汰?網(wǎng)友預(yù)測未來的編程語言不會是TA
近日,關(guān)于一篇關(guān)于Python的討論又重出江湖。
哦,不是這個(gè)。
這篇「為什么Python不是未來的編程語言」的文章又出現(xiàn)在了互聯(lián)網(wǎng)上。作者Rhea Moutafis稱,如今推動Python流行的優(yōu)點(diǎn),也正是之后將它擊倒的弱點(diǎn)。
其實(shí)早在2020年,該作者就在Medium上發(fā)表了同一篇文章。但不知道是當(dāng)初發(fā)表日期為4月1日的緣故,還是TA真的不喜歡Python,時(shí)隔1年零2個(gè)月又18天,作者又決定在另一個(gè)平臺上重新發(fā)一遍。
我們這就來看看這位Rhea為什么覺得人民群眾都喜歡的Python要日薄西山了。
速度很慢,真的很慢
作者表示,使用Python完成一項(xiàng)任務(wù)所需的時(shí)間是使用任何其他語言的2到10倍。
原因一:動態(tài)類型的應(yīng)用。
Python不需要像在其他語言中那樣指定數(shù)據(jù)類型,因此這會需要使用大量的內(nèi)存,因?yàn)槌绦蛐枰獮槊總€(gè)變量保留足夠的空間,那么大量的內(nèi)存使用就會轉(zhuǎn)化為大量的計(jì)算時(shí)間。
原因二:一次只能執(zhí)行一個(gè)任務(wù)。
Python需要確保每個(gè)變量只有一種數(shù)據(jù)類型,如果使用并行進(jìn)程就可能會讓這個(gè)機(jī)制出現(xiàn)問題。相比之下,普通的瀏覽器可以同時(shí)運(yùn)行十幾個(gè)不同的線程。
作用域
Python使用動態(tài)作用域,也就是說編譯器想要對表達(dá)式進(jìn)行評估時(shí),首先會搜索當(dāng)前代碼塊,然后依次搜索所有調(diào)用函數(shù)。
動態(tài)作用域的問題在于每個(gè)表達(dá)式都需要在每個(gè)可能的上下文中進(jìn)行測試。這就是大多數(shù)現(xiàn)代編程語言使用靜態(tài)作用域的原因。
空格縮進(jìn)
Python可以使用空格來表示不同級別的代碼。這讓代碼在視覺效果上更加友好,同時(shí)也更易于理解。
然而其他的編程語言,如 C++,就會更多地依賴大括號和分號。雖然對初學(xué)者相對不那么友好,但是這樣可以增加代碼的可維護(hù)性,尤其是對于那些大型項(xiàng)目來說。
移動開發(fā)
使用Python開發(fā)的移動應(yīng)用程序很少,顯然,Python并不是為移動開發(fā)而設(shè)計(jì)的。雖然也不是不能完成,至少有一個(gè)名為Kivy的Python包可以使用。
但是,即便Python可以完成基本的任務(wù),最好的辦法仍然是使用一種為移動應(yīng)用程序開發(fā)而創(chuàng)建的語言。
作者聲稱,由于移動端的流量早已超過桌面端,可以肯定地說,學(xué)習(xí)Python并不足以成為一個(gè)經(jīng)驗(yàn)豐富的全能開發(fā)者(a seasoned all-round developer)。
錯(cuò)誤和異常
Python腳本在每次執(zhí)行時(shí)都要進(jìn)行編譯,不僅耗費(fèi)時(shí)間而且需要進(jìn)行大量測試。
這可能對初學(xué)者來說有一定的幫助,但是對于經(jīng)驗(yàn)豐富的開發(fā)人員來說,在Python中調(diào)試一個(gè)復(fù)雜的程序反而會讓他們出差錯(cuò)。
Python的替代品
作者認(rèn)為,Rust,GO和Julia都是潛在的替代Python的編程語言。
Rust可以提供與Python相同的安全性,而且它通過所有權(quán)和借用的機(jī)制解決了性能問題。
Go與Python一樣非常適合初學(xué)者。而且它非常簡單,代碼維護(hù)起來更容易。同時(shí),Go語言的開發(fā)者是收入最高的程序員之一。
Julia雖然是一種非常新的語言,但也可以與Python進(jìn)行正面較量。尤其是在大型技術(shù)計(jì)算中,開發(fā)者只靠Julia就可以完成,不再需要同時(shí)使用Python、Matlab甚至還需要C++作為補(bǔ)充。
作者認(rèn)為,雖然這三種語言的份額還很小,在人工智能等技術(shù)方面也還沒有得到很廣泛的應(yīng)用,但是在趨勢上是一直在增加的。
不過考慮到 Python 架構(gòu)中的基本性能問題,這三種語言一定有機(jī)會取代Python。
大勢所趨?
說到這個(gè)趨勢,我們再來看看作者在文章開頭是怎么介紹Python的。
作者表示,Python的成功體現(xiàn)在Stack Overflow中該語言在問題標(biāo)簽數(shù)量的趨勢上。
而且,從Stack Overflow的規(guī)模上來看,這是判斷一個(gè)語言流行程度的很好的指標(biāo)。
從現(xiàn)在最新的數(shù)據(jù)上來看,有超過16%的問題都打上了「Python」的標(biāo)簽。
顯然,在作者看來,處在上升中且占比達(dá)到16%的Python,不如占比加起來都不到1%的Go、Rust和Julia。
誠然,這三個(gè)都是很好的編程語言。
對此,你怎么看?