自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python這么火,為什么說它不是未來的編程語言?

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

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

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

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

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

[[323831]]

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

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

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

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

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

Python這么火,為什么說它不是未來的編程語言?

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

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

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

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

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

2. 適合初學(xué)者

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

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

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

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

3. 用途廣泛

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

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

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

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

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

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

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

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

1. 速度

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

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

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

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

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

2. 范圍

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

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

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

3. Lambdas

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

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

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

Python這么火,為什么說它不是未來的編程語言?

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

4. 空格

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

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

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

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

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

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

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

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

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

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

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

什么會在未來取代Python——具體是什么時(shí)候

編程語言市場上出現(xiàn)了幾個(gè)新的競爭者:

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

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

Python這么火,為什么說它不是未來的編程語言?

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

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

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

你覺得呢?

 

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

2013-03-04 10:10:36

WebKit瀏覽器

2020-05-25 20:46:59

Python編程語言程序員

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

編程語言

2022-07-26 23:43:29

編程語言開發(fā)Java

2022-07-14 07:17:11

LXCDocker語言

2020-05-06 16:47:59

ServerlessMVC架構(gòu)

2025-03-17 09:00:00

C++引用編程

2016-12-28 10:37:46

AndroidGradleApache Ant

2023-05-04 07:44:13

編程界小語言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語言解釋器

2018-07-09 14:44:27

存儲

2024-02-04 16:51:47

點(diǎn)贊
收藏

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