偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

人生苦短,Python會(huì)不會(huì)被取代?國(guó)外網(wǎng)友吵翻天

新聞 前端
編程語(yǔ)言幾年一變樣,榜單之爭(zhēng)也是愈演愈烈,還架不住時(shí)不時(shí)殺出個(gè)黑馬……而對(duì)于Python,自2010年初以來(lái)一直蓬勃發(fā)展至今,在流行程度上,也超越了C、C++、Java等老牌編程語(yǔ)言。

本文經(jīng)AI新媒體量子位(公眾號(hào)ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)聯(lián)系出處。

人生苦短,我該不該選擇Python?

編程語(yǔ)言幾年一變樣,榜單之爭(zhēng)也是愈演愈烈,還架不住時(shí)不時(shí)殺出個(gè)黑馬……

而對(duì)于Python,自2010年初以來(lái)一直蓬勃發(fā)展至今,在流行程度上,也超越了C、C++、Java等老牌編程語(yǔ)言。

人生苦短,Python會(huì)不會(huì)被取代?國(guó)外網(wǎng)友吵翻天

那么問(wèn)題來(lái)了:

這種趨勢(shì)將持續(xù)到什么時(shí)候?最終會(huì)因何故被其他語(yǔ)言取代?

對(duì)于Python是不是the language of the future,網(wǎng)友們展開就此展開一番激辯。

反方:必然會(huì)有一種語(yǔ)言取代Python

一位名叫Rhea Moutafis的網(wǎng)友認(rèn)為,Python不會(huì)是“未來(lái)的編程語(yǔ)言”。觀點(diǎn)僅發(fā)布數(shù)日,便得到了10.2k的點(diǎn)贊。

他從“流行原因”、“缺點(diǎn)”以及“何時(shí)、何故被取代”三方面做了闡述。

人生苦短,Python會(huì)不會(huì)被取代?國(guó)外網(wǎng)友吵翻天

Python為何現(xiàn)在如此流行?

Moutafis認(rèn)為,Python的成功,一定程度體現(xiàn)在Stack Overflow的趨勢(shì)上。這個(gè)平臺(tái)衡量了發(fā)布帖子中的標(biāo)簽數(shù)量,再考慮到它的規(guī)模,對(duì)于“受歡迎編程語(yǔ)言”來(lái)說(shuō)是個(gè)不錯(cuò)的指標(biāo)。

人生苦短,Python會(huì)不會(huì)被取代?國(guó)外網(wǎng)友吵翻天

從圖中可以看出,R語(yǔ)言在過(guò)去幾年中處于穩(wěn)步增長(zhǎng)的狀態(tài),但其他語(yǔ)言,像C#、C++、Java和JavaScript,都有下降的趨勢(shì)。

而在所有Stack Overflow的問(wèn)題中,幾乎有14%的問(wèn)題被貼上了 “Python “的標(biāo)簽,而且這個(gè)趨勢(shì)還在上升。

Moutafis認(rèn)為,原因有如下3個(gè)方面。

首先,Python也算是一個(gè)老牌語(yǔ)言。

Python從90年代便已出現(xiàn),這不僅意味著它有足夠的時(shí)間來(lái)發(fā)展,還意味著擁有一個(gè)龐大而強(qiáng)有力的社區(qū)支持。

所以你在用Python編程的時(shí)候,如果遇到了任何問(wèn)題,只要網(wǎng)上搜索一下,大概率就能解決掉。

因?yàn)楹苡锌赡茉谀阒?,就有人遇到過(guò)同樣的問(wèn)題,還在網(wǎng)上留下了寶貴的意見(jiàn)。

其次,Python對(duì)于初學(xué)者來(lái)說(shuō)是友好的。

對(duì)于這一點(diǎn),并不是說(shuō)它存在了幾十年,給了程序員們充足的時(shí)間來(lái)寫使用教程。而是Python的語(yǔ)法易讀性特別好。

例如你不需要指定數(shù)據(jù)類型,只要聲明一個(gè)變量,Python會(huì)根據(jù)上下文,理解這個(gè)變量是屬于整數(shù)、浮點(diǎn)數(shù)、布爾值等等。

這對(duì)于初學(xué)者來(lái)說(shuō)優(yōu)勢(shì)是巨大的。如果你用過(guò)C++,你就有可能體會(huì)到這樣的痛苦:程序跑不出來(lái),可能僅僅是因?yàn)榘岩粋€(gè)浮點(diǎn)數(shù)指定成了整數(shù)……

以及,如果對(duì)比著讀過(guò)Python和C++的代碼,你就能深刻的體會(huì)到Python代碼理解起來(lái)是有多么容易。

最后,Python的用于很廣。

Python從出現(xiàn)至今,開發(fā)人員幾乎在各個(gè)領(lǐng)域、用途方面開發(fā)了包(package):

  • 想處理數(shù)字、向量和矩陣?Numpy是的你首選。
  • 想進(jìn)行技術(shù)和工程方面的計(jì)算?SciPy了解一下。
  • 想在數(shù)據(jù)處理和分析領(lǐng)域大展身手?Pandas值得一試。
  • 想涉足人工智能?Scikit-Learn真香(褒義……)。

無(wú)論你想處理哪種計(jì)算任務(wù),Python幾乎都可以提供相應(yīng)的包。從近幾年機(jī)器學(xué)習(xí)的激增,也不難看出Python一直處于發(fā)展的前沿。

Python的缺點(diǎn)是否具有致命性?

當(dāng)然,沒(méi)有一個(gè)技術(shù)是完美的,Python也不例外。Moutafis列出了6個(gè)最重要的缺陷,還評(píng)估了它們是否具有致命性。

第一,速度 (Speed)。

平均來(lái)說(shuō),用Python運(yùn)行一個(gè)任務(wù)所需要的時(shí)間,是其他語(yǔ)言的2-10倍。

為什么會(huì)這樣呢?其中一個(gè)原因就是它是動(dòng)態(tài)類型。

就像剛才說(shuō)的,你不需要指定數(shù)據(jù)類型,這就意味著它需要使用大量的內(nèi)存,因?yàn)槌绦蛐枰獮槊總€(gè)變量預(yù)留足夠的空間,確保在任何情況下都能工作。而大量的內(nèi)存使用量,意味著大量的計(jì)算時(shí)間。

另一個(gè)原因是Python一次只能執(zhí)行一個(gè)任務(wù)。這是靈活數(shù)據(jù)類型的結(jié)果——Python需要確保每個(gè)變量只有一個(gè)數(shù)據(jù)類型,而并行進(jìn)程可能會(huì)把這一點(diǎn)搞得一團(tuán)糟。

相比之下,一般的Web瀏覽器一次可以運(yùn)行12個(gè)不同的線程……

但說(shuō)到底,這些速度問(wèn)題都無(wú)關(guān)緊要。計(jì)算機(jī)和服務(wù)器現(xiàn)在很便宜了,用戶并不真正關(guān)心他們的應(yīng)用程序,是否在0.001或0.01秒內(nèi)能加載完。

第二,作用域 (Scope)。

最初,Python是動(dòng)態(tài)確定作用域的。這基本上就意味著,要對(duì)表達(dá)式求值,編譯器首先需要搜索當(dāng)前塊,然后依次搜索所有調(diào)用函數(shù)。

動(dòng)態(tài)作用域的問(wèn)題在于,每個(gè)表達(dá)式都需要在每個(gè)可能的上下文中進(jìn)行測(cè)試。這個(gè)是相當(dāng)繁瑣的過(guò)程,這也就是為什么大多數(shù)現(xiàn)代編程語(yǔ)言使用靜態(tài)作用域的原因。

對(duì)于這個(gè)問(wèn)題,Python試圖過(guò)渡到靜態(tài)作用域,但卻搞砸了:通常,內(nèi)部作用域能夠查看和更改外部作用域,但在Python中,內(nèi)部作用域只能看到外部作用域,而不能更改它們。

第三,Lambda。

盡管Python內(nèi)部的靈活性很好,但Lambda的使用還是相當(dāng)有限制的。Lambda只能是Python中的表達(dá)式,而不能是語(yǔ)句。

另外,變量聲明和語(yǔ)句始終是語(yǔ)句,這意味著Lambda不能用于它們。

表達(dá)式和語(yǔ)句之間的這種區(qū)別,可以說(shuō)是相當(dāng)隨意,在其他語(yǔ)言中就不會(huì)出現(xiàn)這種情況。

第四,空白符 (Whitespaces)。

在Python中,你可以用空格和縮進(jìn)來(lái)表示不同級(jí)別的代碼。這讓它在視覺(jué)上很吸引人,也很容易理解

人生苦短,Python會(huì)不會(huì)被取代?國(guó)外網(wǎng)友吵翻天

而其他語(yǔ)言,例如C++,更多的是依賴大括號(hào)和分號(hào)。雖然這可能并不吸引人,也不適合初學(xué)者,但它讓代碼的可維護(hù)性提高了很多。對(duì)于較大的項(xiàng)目來(lái)說(shuō),這就更有用了。

像Haskell這樣的新語(yǔ)言就解決了這個(gè)問(wèn)題:它們依賴于空格,但同時(shí)為那些希望不使用空格的人,提供了一種替代語(yǔ)法。

第五,移動(dòng)開發(fā) (Mobile Development)。

隨著應(yīng)用逐步從電腦桌面轉(zhuǎn)向移動(dòng)端,很明顯我們需要強(qiáng)大的語(yǔ)言來(lái)構(gòu)建移動(dòng)軟件。但用Python開發(fā)的移動(dòng)應(yīng)用并不多。

Python并不是為移動(dòng)端開發(fā)而設(shè)計(jì)的,即便在基本任務(wù)上能達(dá)到差強(qiáng)人意的效果,但最好還是選擇專門為移動(dòng)端開發(fā)的語(yǔ)言,例如React Native、Flutter、Iconic和Cordova。

需要明確的是,筆記本和臺(tái)式電腦仍會(huì)在未來(lái)存在一段時(shí)間。但由于移動(dòng)端流量早已超過(guò)了桌面端,可以說(shuō),學(xué)習(xí)Python還不足以讓你成為一個(gè)全能型開發(fā)者。

第六,Runtime Error。

一個(gè) Python 腳本不是先編譯,然后再執(zhí)行。相反,它在每次執(zhí)行時(shí)都會(huì)編譯,所以任何編碼錯(cuò)誤都會(huì)在運(yùn)行時(shí)顯示出來(lái)。這導(dǎo)致性能差、時(shí)間消耗大,以及需要大量的測(cè)試

這對(duì)初學(xué)者來(lái)說(shuō)是很好的,因?yàn)闇y(cè)試可以教給他們很多東西。但對(duì)于經(jīng)驗(yàn)豐富的開發(fā)人員來(lái)說(shuō),不見(jiàn)得這是個(gè)好事。

在未來(lái),何時(shí)、何故會(huì)讓Python被取代

在編程語(yǔ)言這個(gè)市場(chǎng)上,出現(xiàn)了一批新的競(jìng)爭(zhēng)者:

  • Rust提供了和Python一樣的安全性——沒(méi)有任何變量會(huì)被意外覆蓋。但它用ownership和borrowing的概念解決了性能問(wèn)題。根據(jù)StackOverflow Insights的數(shù)據(jù),它也是過(guò)去幾年來(lái)最受歡迎的編程語(yǔ)言之一。
  • Go對(duì)于Python初學(xué)者來(lái)說(shuō)也是非常棒的一門語(yǔ)言。它非常簡(jiǎn)單,甚至代碼維護(hù)起來(lái)更容易。有意思的一點(diǎn)是,Go開發(fā)者是市場(chǎng)上收入最高的程序員之一。
  • Julia是一門非常新的語(yǔ)言,可以與Python一較高下,它填補(bǔ)了大規(guī)模技術(shù)計(jì)算的空白。在大規(guī)模計(jì)算中,人們通常會(huì)使用Python或Matlab,然后用C++庫(kù)進(jìn)行修補(bǔ)?,F(xiàn)在,只用Julia就可以了,不用再在兩種語(yǔ)言之間來(lái)回切換。

雖然市場(chǎng)上有其他語(yǔ)言,但Rust、Go和Julia是修復(fù)Python弱點(diǎn)的語(yǔ)言。

所有這些語(yǔ)言都擅長(zhǎng)于未來(lái)的技術(shù),尤其是人工智能。雖然它們的市場(chǎng)份額仍然很小,但從StackOverflow標(biāo)簽的數(shù)量可以看出,它們上升的趨勢(shì)都很明顯。

人生苦短,Python會(huì)不會(huì)被取代?國(guó)外網(wǎng)友吵翻天

考慮到目前Python的普遍流行,這些新語(yǔ)言要想取代它,肯定要花上五年,甚至整整十年的時(shí)間。

那么,取代Python的將是哪一種語(yǔ)言?Rust、Go、Julia,還是未來(lái)的新語(yǔ)言?

目前還很難說(shuō),但考慮到Python架構(gòu)中的性能問(wèn)題,必然會(huì)有一種語(yǔ)言取代它的位置。

正方:你的觀點(diǎn)漏洞百出

反方一辯陳述完畢,接下來(lái),是正方的觀點(diǎn)。

用戶miraculixx針對(duì)Moutafis的文章,發(fā)起了猛烈攻擊,也獲得了高度關(guān)注——2.1K的贊。

人生苦短,Python會(huì)不會(huì)被取代?國(guó)外網(wǎng)友吵翻天

miraculixx直接開門見(jiàn)山:

這篇文章有夠爛的。你喜歡Rust、Go和Julia?那就去寫它們好了,不要來(lái)抨擊Python。

而后,直接提出了七大錯(cuò)誤之處。

Python并不慢

首先,速度有兩個(gè)組成部分。

其一,你寫出想要的程序有多快,這是客戶和大多數(shù)開發(fā)人員真正關(guān)心的。Python對(duì)于一個(gè)命令行語(yǔ)言來(lái)說(shuō),它的速度是非??斓?,大多數(shù)其他語(yǔ)言所需要的時(shí)間要長(zhǎng)得多。

其二,是執(zhí)行速度。正如你所指出的,在很多情況下,這幾乎不重要,但當(dāng)它有需要的時(shí)候,Python既有內(nèi)置的工具來(lái)加速,也有廣泛的工具生態(tài)系統(tǒng)來(lái)實(shí)現(xiàn)native速度 (與編譯后的 C 代碼相同)。

Python確實(shí)可以并行運(yùn)行多個(gè)任務(wù)

與大多數(shù)其他語(yǔ)言不同,Python代碼非常容易并行運(yùn)行,甚至可以跨大型節(jié)點(diǎn)集群運(yùn)行,這對(duì)于云計(jì)算來(lái)說(shuō)非常好。

內(nèi)置的多模塊處理,可以在本地和遠(yuǎn)程節(jié)點(diǎn)上運(yùn)行。還有其他工具,如Celery、IParallel、Dask等,讓并行運(yùn)行代碼變得輕而易舉。

縮進(jìn),作為代碼塊的分隔符,對(duì)任何項(xiàng)目來(lái)說(shuō)都是一種優(yōu)勢(shì)

因?yàn)檫@樣就能確保代碼看起來(lái)與個(gè)人偏好無(wú)關(guān),意味著更好的可讀性,這通常會(huì)增加可維護(hù)性。

無(wú)論你有1個(gè)還是100個(gè)開發(fā)者,Python都很好用

大多數(shù)項(xiàng)目都只有1-5個(gè)開發(fā)者,而且,Python的模塊化方法使得重構(gòu)代碼變得非常容易。

模塊化是構(gòu)建大型可維護(hù)軟件產(chǎn)品的關(guān)鍵成功因素。

靜態(tài)類型不是可擴(kuò)展團(tuán)隊(duì)的關(guān)鍵因素

根據(jù)我的經(jīng)驗(yàn),靜態(tài)類型的影響如果不損害協(xié)作能力的話,也是可以忽略的。

團(tuán)隊(duì)實(shí)際開發(fā)過(guò)程中的細(xì)節(jié)情況,超過(guò)出了你寫的評(píng)論,一言以蔽之:靜態(tài)類型很難做到處處都是對(duì)的,當(dāng)出現(xiàn)問(wèn)題的時(shí)候,還是需要更多人加入到團(tuán)隊(duì)來(lái)解決。

團(tuán)隊(duì)規(guī)模越大,溝通成本就越高,以n2的速度增長(zhǎng)。也就是說(shuō),靜態(tài)類型實(shí)際上限制了生產(chǎn)力,而且我敢說(shuō)這樣做并沒(méi)有提高質(zhì)量。

Python并不老

Python最新版本是在2019年第四季度發(fā)布的。無(wú)論是語(yǔ)言還是它所支持的用例,都不能說(shuō)是“老”。

你說(shuō)它不能在瀏覽器中運(yùn)行不僅是錯(cuò)誤的,而且也沒(méi)有抓住重點(diǎn)。大多數(shù)語(yǔ)言都不能在瀏覽器中運(yùn)行,因?yàn)閃eb語(yǔ)言是JavaScript。不管你喜不喜歡,事情就是這樣。

React、Flutter等都不是編程語(yǔ)言

把不該比較的東西混為一談,對(duì)你文章的可信度并沒(méi)有什么好處。

......

那么,你覺(jué)得Python未來(lái)的命運(yùn)會(huì)是什么樣呢?

 

責(zé)任編輯:張燕妮 來(lái)源: 量子位
相關(guān)推薦

2024-08-27 17:00:19

2024-12-20 07:30:00

2020-01-15 08:42:16

TCP三次握手弱網(wǎng)絡(luò)

2017-06-05 08:55:27

Python起源應(yīng)用

2017-03-23 10:42:05

Pythonjava開發(fā)

2021-07-19 16:25:50

人工智能語(yǔ)音安全

2021-04-06 11:36:47

Starlink網(wǎng)速互聯(lián)網(wǎng)

2017-06-20 15:02:48

ChromeWebKit內(nèi)核

2018-07-31 14:47:51

Kubernetes開發(fā)應(yīng)用程序

2012-03-28 16:32:20

Win8 Explor概念設(shè)計(jì)

2020-11-03 11:18:35

Go語(yǔ)言GoLang編程語(yǔ)言

2020-12-15 15:21:41

C++JavaPython

2017-03-07 10:07:25

PythonIDE

2023-07-26 00:43:31

2018-04-16 09:31:17

2009-04-08 08:32:55

Sun收購(gòu)CEO

2018-04-05 22:42:43

2019-11-18 14:20:33

Python 開發(fā)編程語(yǔ)言

2023-04-03 13:24:17

ChatGPTPNAS語(yǔ)言

2023-10-27 11:38:09

華為小米函數(shù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)