成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python這么火,為什么說(shuō)它不是未來(lái)的編程語(yǔ)言?

開(kāi)發(fā) 后端
目前,Python十分流行,可以說(shuō)是無(wú)處不在,新語(yǔ)言要想取代它,肯定需要五年(甚至可能是十年)的時(shí)間。這個(gè)時(shí)候,很難說(shuō)會(huì)是哪種語(yǔ)言取代Python(Rust、Go、Julia還是未來(lái)的某種新語(yǔ)言)

本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)

Python這兩年非常火,隨處可見(jiàn)的廣告讓它逐漸變成了一種老少皆知的存在。

雖然問(wèn)世幾十年后,Python才得到編程社區(qū)的重視。

但是,其發(fā)展的勢(shì)頭似乎無(wú)人能及。

[[323831]]

自2010年年初以來(lái),Python一直在蓬勃發(fā)展——在流行趨勢(shì)方面,它最終超過(guò)了C、C#、Java和Javascript,成為計(jì)算機(jī)語(yǔ)言中的“大熱門”。

它為人們提供了優(yōu)質(zhì)的服務(wù)——但這樣的趨勢(shì)會(huì)持續(xù)到什么時(shí)候呢?Python何時(shí)會(huì)被其他語(yǔ)言取代?為什么會(huì)這樣?

關(guān)于Python的確切有效期眾說(shuō)紛紜,這些猜測(cè)可能會(huì)像科幻小說(shuō)一樣荒誕不經(jīng)。與其猜測(cè),不如評(píng)估一下當(dāng)前促進(jìn)Python流行的優(yōu)勢(shì),以及未來(lái)會(huì)阻礙其流行的劣勢(shì)。

是什么讓Python在當(dāng)下如此流行

Python的成功體現(xiàn)在Stack Overflow趨勢(shì)上,該趨勢(shì)測(cè)量了平臺(tái)上帖子的標(biāo)簽數(shù)量。考慮到Stack Overflow的大小,這確實(shí)是衡量語(yǔ)言受歡迎程度的良好指標(biāo)。

Python這么火,為什么說(shuō)它不是未來(lái)的編程語(yǔ)言?

Stack Overflow上各種編程語(yǔ)言的標(biāo)簽快照

盡管R語(yǔ)言在過(guò)去幾年一直處于平穩(wěn)狀態(tài),而且很多其他語(yǔ)言也處于穩(wěn)步下降趨勢(shì),但Python的增長(zhǎng)卻似乎勢(shì)不可擋。在所有的Stack Overflow問(wèn)題中,幾乎有14%被標(biāo)記上了“python”,而且這種趨勢(shì)越來(lái)越明顯。以下是出現(xiàn)這種情況的幾個(gè)原因:

1. 出現(xiàn)時(shí)間早

Python大約誕生于90年代。這不僅意味著它有足夠的時(shí)間成長(zhǎng),還獲得了一個(gè)龐大的粉絲群體。

所以如果人們?cè)谟肞ython編碼時(shí)遇到了問(wèn)題,那么很可能只需用谷歌搜索一下便能解決。這不過(guò)是有些人已經(jīng)遇到了相同的問(wèn)題,寫了一些有助于解決問(wèn)題的內(nèi)容而已。

2. 適合初學(xué)者

Python已經(jīng)存在了數(shù)十年,程序員們可利用這段時(shí)間寫出優(yōu)質(zhì)的教程。除此之外,Python的語(yǔ)法也很容易理解。

首先,無(wú)需指定數(shù)據(jù)類型。指定變量即可;Python會(huì)根據(jù)語(yǔ)境判斷它是整數(shù)、浮點(diǎn)值、布爾值還是其他值。對(duì)于初學(xué)者來(lái)說(shuō),這是一個(gè)很大的優(yōu)勢(shì)。如果是C++語(yǔ)言,那么用浮點(diǎn)值替換整數(shù)時(shí),程序?qū)⒉粫?huì)進(jìn)行編譯,曾經(jīng)使用該語(yǔ)言編程的初學(xué)者應(yīng)該對(duì)這種情況帶來(lái)的挫敗感深有體會(huì)。

如果初學(xué)者曾經(jīng)并行閱讀過(guò)Python和C++代碼,那么會(huì)明白Python是多么容易理解。

即使C++語(yǔ)言在設(shè)計(jì)時(shí)考慮到了英語(yǔ),但是和Python代碼相比,它還是難以看懂。

3. 用途廣泛

Python已經(jīng)存在了相當(dāng)長(zhǎng)的時(shí)間,開(kāi)發(fā)人員們根據(jù)不同目的制作出了不同的程序包。現(xiàn)在,幾乎所有的東西都能打包。

想處理數(shù)字、向量和矩陣?Numpy是個(gè)好幫手。

想對(duì)技術(shù)和工程進(jìn)行計(jì)算?用Scipy。

想在數(shù)據(jù)處理和分析領(lǐng)域大展身手?試試Pandas。

想從人工智能入手?為什么不用Scikit-Learn。

無(wú)論人們要管理什么樣的計(jì)算任務(wù),都有可能用到Python程序包。從機(jī)器學(xué)習(xí)在過(guò)去幾年間的迅猛發(fā)展便可看出,自身用途的廣泛讓Python處于近期發(fā)展的前列。

Python的缺點(diǎn)——以及它們是否致命

根據(jù)先前的論述,可以想象Python會(huì)在很長(zhǎng)一段時(shí)間之內(nèi)保持發(fā)展的迅猛勢(shì)頭。但和其他技術(shù)一樣,Python也有自己的弱點(diǎn)。筆者將一一介紹其最值得關(guān)注的缺點(diǎn),并分析這些缺點(diǎn)是否致命。

1. 速度

Python的速度很慢。真的很慢。和其他語(yǔ)言相比,Python需要花2-10倍的時(shí)間來(lái)完成任務(wù)。

速度慢有多種原因。其中一個(gè)原因是Python屬于動(dòng)態(tài)類型——請(qǐng)記住,無(wú)需像其他語(yǔ)言一樣指定數(shù)據(jù)類型。這意味著需要占用大量?jī)?nèi)存,因?yàn)槌绦蛐枰獮槟切┛稍谌魏吻闆r下運(yùn)行的變量保留足夠的空間。大量的內(nèi)存占用轉(zhuǎn)化為大量的計(jì)算時(shí)間。

另一個(gè)原因是Python一次只能執(zhí)行一個(gè)任務(wù)。靈活的數(shù)據(jù)集會(huì)出現(xiàn)這樣的結(jié)果——Python需要確保每個(gè)變量只有一個(gè)數(shù)據(jù)類型,平行進(jìn)程可能會(huì)造成混亂。

相比之下,普通的網(wǎng)絡(luò)瀏覽器一次可以運(yùn)行十二個(gè)不同的線程。還有一些其他的理論。

但歸根結(jié)底,所有的速度問(wèn)題都無(wú)關(guān)緊要。電腦和服務(wù)器的價(jià)格十分便宜,所以人們討論的只是關(guān)于幾分之一秒的運(yùn)行速度。而且終端用戶并不在意自己是用0.001秒還是0.01秒加載應(yīng)用程序。

2. 范圍

起初,Python使用動(dòng)態(tài)作用域。這基本上意味著,為了評(píng)估表達(dá)式,編譯系統(tǒng)首先要搜索當(dāng)前塊,然后依次搜索所有調(diào)用函數(shù)。

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

Python曾試圖過(guò)渡到靜態(tài)作用域,但卻造成了混亂。通常情況下,內(nèi)部作用域——比如函數(shù)中的函數(shù)——將能夠查看并更改外部作用域。但Python中的內(nèi)部作用域只能查看外部作用域,卻不能對(duì)其進(jìn)行更改。這會(huì)導(dǎo)致嚴(yán)重的混亂。

3. Lambdas

盡管Python具有很高的靈活性,但Lambdas的使用還是有一定的局限性。在Python中,Lambdas只能是表達(dá)式,而不能是語(yǔ)句。

另一方面,變量聲明和語(yǔ)句始終是語(yǔ)句。這意味著Lambdas不能為它們所用。

表達(dá)式和語(yǔ)句之間的區(qū)別相當(dāng)隨意,而其他語(yǔ)言并沒(méi)有這樣的情況。

Python這么火,為什么說(shuō)它不是未來(lái)的編程語(yǔ)言?

空格讓代碼更容易看懂,但也讓其更難以

4. 空格

Python使用空格和縮進(jìn)來(lái)表示不同級(jí)別的代碼。這使得代碼在視覺(jué)上更具有吸引力,能夠直觀理解。

其他語(yǔ)言,比如C++語(yǔ)言,更多使用的是大括號(hào)和分號(hào)。雖然在視覺(jué)上沒(méi)有什么吸引力,對(duì)初學(xué)者也并不友好,但這樣做讓代碼更易于維護(hù)。對(duì)于較大的項(xiàng)目來(lái)說(shuō),這大有幫助。

Haskell這樣較新的語(yǔ)言解決了這個(gè)問(wèn)題:該語(yǔ)言多使用空格,但又為那些不想使用空格的人提供了另一種語(yǔ)法。

5. 移動(dòng)開(kāi)發(fā)

人們見(jiàn)證了從臺(tái)式機(jī)到智能手機(jī)的轉(zhuǎn)變,很明顯,人們需要強(qiáng)大的語(yǔ)言來(lái)構(gòu)建移動(dòng)軟件。

但正在使用Python進(jìn)行開(kāi)發(fā)的移動(dòng)應(yīng)用軟件并不多。這并不意味著用Python進(jìn)行移動(dòng)開(kāi)發(fā)無(wú)法實(shí)現(xiàn)——名為Kivy的Python程序包就可以做到移動(dòng)開(kāi)發(fā)。

但Python并沒(méi)有考慮到移動(dòng)設(shè)備。所以即使它有可能完成一些基本任務(wù),也最好使用為移動(dòng)應(yīng)用程序開(kāi)發(fā)而創(chuàng)建的語(yǔ)言。廣泛使用的移動(dòng)編程框架包括React Native、Flutter、Iconic和Cordova。

需要明確的是,在未來(lái)的很多年,筆記本和臺(tái)式機(jī)應(yīng)該都會(huì)繼續(xù)存在。但是,移動(dòng)設(shè)備在通信量方面已遠(yuǎn)遠(yuǎn)超越了桌面設(shè)備,因此可以肯定地說(shuō),想要成為經(jīng)驗(yàn)豐富的全能型開(kāi)發(fā)人員,只學(xué)習(xí)Python是不夠的。

6. 運(yùn)行錯(cuò)誤

Python腳本并不是遵循先編譯后執(zhí)行的流程。相反,它在每次執(zhí)行時(shí)進(jìn)行編譯,所以任何編碼錯(cuò)誤在運(yùn)行時(shí)都會(huì)顯現(xiàn)出來(lái)。這會(huì)導(dǎo)致性能下降、浪費(fèi)時(shí)間以及需要進(jìn)行大量測(cè)試。真的是大量的測(cè)試。

對(duì)于初學(xué)者來(lái)說(shuō),這是一件好事,因?yàn)樗麄兛梢詮臏y(cè)試中學(xué)到很多。但對(duì)于經(jīng)驗(yàn)豐富的開(kāi)發(fā)人員來(lái)說(shuō),對(duì)Python中的復(fù)雜程序進(jìn)行調(diào)試會(huì)讓他們感到無(wú)所適從。性能不佳是在Python上設(shè)置時(shí)戳的最大原因。

什么會(huì)在未來(lái)取代Python——具體是什么時(shí)候

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

  • Rust具備與Python相同的安全性——不會(huì)意外覆蓋任何變量。但它通過(guò)所有權(quán)和借用的概念解決了性能問(wèn)題。Stack OverflowInsights顯示,它還是過(guò)去幾年當(dāng)中最受人們喜愛(ài)的編程語(yǔ)言。
  • Go非常適合初學(xué)者,就像Python一樣。它是如此簡(jiǎn)單,甚至連維護(hù)代碼都變得更加容易。有趣的一點(diǎn)是:Go開(kāi)發(fā)人員是市場(chǎng)上收入最高的程序員之一。
  • Julia是一種非常新的語(yǔ)言,可與Python展開(kāi)正面競(jìng)爭(zhēng)。它填補(bǔ)了大規(guī)模技術(shù)計(jì)算的空白:以前,人們通常會(huì)使用Python或Matlab,并使用C++庫(kù)對(duì)整個(gè)程序進(jìn)行修補(bǔ),這一過(guò)程在大規(guī)模技術(shù)計(jì)算中是必需的。現(xiàn)在,人們可以使用Julia,而不必費(fèi)力使用兩種語(yǔ)言。

雖然市面上還有其他的語(yǔ)言,但Rust、Go和Julia卻是彌補(bǔ)了Python弱項(xiàng)的語(yǔ)言。所有這些語(yǔ)言都在尚未投入使用的技術(shù)中表現(xiàn)出色,在人工智能領(lǐng)域的表現(xiàn)尤其亮眼。Stack Overflow標(biāo)簽的數(shù)量顯示,這些語(yǔ)言的市場(chǎng)份額仍然很小,盡管如此,它們未來(lái)的上升趨勢(shì)卻顯而易見(jiàn)。

Python這么火,為什么說(shuō)它不是未來(lái)的編程語(yǔ)言?

Stack Overflow上各種編程語(yǔ)言的標(biāo)簽快

目前,Python十分流行,可以說(shuō)是無(wú)處不在,新語(yǔ)言要想取代它,肯定需要五年(甚至可能是十年)的時(shí)間。

這個(gè)時(shí)候,很難說(shuō)會(huì)是哪種語(yǔ)言取代Python(Rust、Go、Julia還是未來(lái)的某種新語(yǔ)言)。但考慮到Python體系結(jié)構(gòu)中最基本的性能問(wèn)題,一定會(huì)有某種語(yǔ)言取代它的位置。

你覺(jué)得呢?

 

責(zé)任編輯:趙寧寧 來(lái)源: 讀芯術(shù)
相關(guān)推薦

2013-03-04 10:10:36

WebKit瀏覽器

2020-05-25 20:46:59

Python編程語(yǔ)言程序員

2024-03-07 10:21:56

2024-01-10 17:04:13

通信模塊通信技術(shù)通信模組

2021-06-30 06:56:18

數(shù)據(jù)泄露零信任網(wǎng)絡(luò)安全

2013-01-15 09:41:45

編程語(yǔ)言

2022-07-14 07:17:11

LXCDocker語(yǔ)言

2020-05-06 16:47:59

ServerlessMVC架構(gòu)

2022-07-26 23:43:29

編程語(yǔ)言開(kāi)發(fā)Java

2025-03-17 09:00:00

C++引用編程

2016-12-28 10:37:46

AndroidGradleApache Ant

2023-05-04 07:44:13

編程界小語(yǔ)言Java

2014-10-10 13:46:33

Docker

2014-12-08 09:47:48

Go

2018-07-25 14:36:46

邊緣計(jì)算云計(jì)算

2024-03-01 17:01:15

GraphQL后端

2021-03-26 08:47:01

SD-WAN網(wǎng)絡(luò)5G

2018-08-16 08:03:21

Python語(yǔ)言解釋器

2018-07-09 14:44:27

存儲(chǔ)

2024-02-04 16:51:47

點(diǎn)贊
收藏

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

主站蜘蛛池模板: 日本天堂视频在线观看 | 亚洲综合无码一区二区 | 成人毛片视频在线播放 | 久久综合久色欧美综合狠狠 | 99久久精品一区二区毛片吞精 | 青青操av| 婷婷在线视频 | 综合精品在线 | 国产成人99久久亚洲综合精品 | 午夜精品视频在线观看 | 日韩电影一区二区三区 | 精品国产乱码久久久久久蜜柚 | 白浆在线 | 一区二区三区免费观看 | 黄色毛片免费看 | 成人福利在线视频 | 久久免费高清视频 | 91一区二区三区 | 一区二区三区中文字幕 | 一区二区精品 | 黄色日批视频 | 黄网站免费在线观看 | 亚洲啊v在线 | 九色国产| avhd101在线成人播放 | 亚洲日韩中文字幕一区 | 91免费福利视频 | 一区二区国产精品 | 天天干天天玩天天操 | 国产激情一区二区三区 | 久久久久无码国产精品一区 | 永久看片 | 日本一区二区三区四区 | 欧美精品一二三区 | 国产四虎| 91精品国产一区二区三区 | 伊人二区| 天天干狠狠干 | 免费影视在线观看 | 国产精品久久久久久一区二区三区 | 中国三级黄色录像 |