上世紀(jì)90年代初,Python面世了。近30年來(lái),關(guān)于它的“炒作”一直沒(méi)有少過(guò)。當(dāng)然,編程界花了至少20年的時(shí)間才認(rèn)識(shí)到它,但自那以后,它的流行程度遠(yuǎn)遠(yuǎn)超過(guò)了C、C#、Java甚至Javascript。
盡管Python目前在數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)領(lǐng)域,以及某些程度上在科學(xué)和數(shù)學(xué)計(jì)算領(lǐng)域占據(jù)著主導(dǎo)地位,但與Julia,Swift和Java等新語(yǔ)言相比,它確實(shí)有其劣勢(shì)。
是什么讓Python如此受歡迎?
Python迅速發(fā)展的主要原因是易于學(xué)習(xí)和功能強(qiáng)大。這使得它對(duì)初學(xué)者,包括那些由于C、C++等語(yǔ)言語(yǔ)法艱澀且陌生而對(duì)其望而卻步的人,都非常有吸引力。
該語(yǔ)言從根本上廣泛強(qiáng)調(diào)代碼的可讀性。憑借其簡(jiǎn)潔而富有表現(xiàn)力的語(yǔ)法,它允許開發(fā)人員在不編寫大量代碼的情況下表達(dá)想法和概念(例如在C或Java等低級(jí)語(yǔ)言)。Python非常簡(jiǎn)單,可以與其他編程語(yǔ)言無(wú)縫集成(例如將CPU密集型任務(wù)卸載到C / C ++),這對(duì)多語(yǔ)言開發(fā)人員來(lái)說(shuō)是一個(gè)加分項(xiàng)。
Python用途廣泛的另一個(gè)原因是大型企業(yè)(包括FAANG)以及無(wú)數(shù)小型企業(yè)對(duì)其的大量使用。如今,Python包里幾乎包含了可以想到的任何東西——用于科學(xué)計(jì)算的Numpy,用于機(jī)器學(xué)習(xí)的Sklearn和用于計(jì)算機(jī)視覺(jué)的Caer。
Python也有缺點(diǎn)
它運(yùn)行很慢,非常慢
顯而易見,在未來(lái)很長(zhǎng)一段時(shí)間里,速度都是開發(fā)人員的主要關(guān)注點(diǎn)之一。
Python之所以“慢”,實(shí)際上有兩個(gè)原因——Python被解釋為與編譯相反,最終導(dǎo)致執(zhí)行速度較慢;以及它是動(dòng)態(tài)類型的(Python在執(zhí)行過(guò)程中自動(dòng)推斷變量的數(shù)據(jù)類型)。
事實(shí)上,“Python很慢”這一說(shuō)法對(duì)初學(xué)者影響很大。這是真的,但只是部分事實(shí)。以Python中可用的機(jī)器學(xué)習(xí)庫(kù)TensorFlow為例,這些庫(kù)其實(shí)是用C++編寫的,并可以在Python中使用,某種程度上構(gòu)成了圍繞C++實(shí)現(xiàn)的Python“裝飾器”。Numpy,甚至Caer,在一定程度上也是如此。
它有一個(gè)GIL(I)
Python速度緩慢的主要原因之一是存在GIL(全局解釋器鎖),它一次只能執(zhí)行一個(gè)線程。雖然這可以提高單線程的性能,但它限制了并行性,開發(fā)人員必須實(shí)現(xiàn)多處理程序而非多線程程序來(lái)提高速度。
不是內(nèi)存密集型任務(wù)的最優(yōu)解
當(dāng)對(duì)象超出范圍時(shí),Python會(huì)自動(dòng)進(jìn)行垃圾回收。它旨在消除C和C++在內(nèi)存管理方面的所涉及的許多復(fù)雜問(wèn)題。由于指定數(shù)據(jù)類型的靈活性(或缺乏靈活性),Python消耗的內(nèi)存量可能會(huì)迅速爆炸增長(zhǎng)。此外,運(yùn)行時(shí)可能會(huì)彈出Python未關(guān)注的錯(cuò)誤,最終減緩開發(fā)過(guò)程。
移動(dòng)計(jì)算中的弱存在
隨著臺(tái)式機(jī)到智能手機(jī)的巨大轉(zhuǎn)變,很明顯,我們需要更強(qiáng)大的語(yǔ)言來(lái)構(gòu)建手機(jī)軟件。盡管Python在臺(tái)式機(jī)和服務(wù)器平臺(tái)上具有很強(qiáng)的代表性,但是由于缺乏強(qiáng)大的移動(dòng)計(jì)算處理能力,Python往往會(huì)在移動(dòng)開發(fā)上失敗。
近年來(lái),這一領(lǐng)域有了很大進(jìn)步,但是這些新添加的庫(kù)與Kotlin,Swift和Java等強(qiáng)大的競(jìng)爭(zhēng)對(duì)手相比仍有差距。
其他語(yǔ)言的興起
最近,Julia,Rust和Swift等較新的語(yǔ)言強(qiáng)勢(shì)入局。它們借鑒了Python,C/C ++和Java的許多優(yōu)秀設(shè)計(jì)概念——Rust基本保證了運(yùn)行時(shí)的內(nèi)存安全性和并行性,并提供與WebAssembly的一流互操作性;由于支持LLVM編譯器工具鏈,Swift幾乎與C一樣快;而Julia為I/O密集型任務(wù)提供了異步I/O,并且速度非常快。
Python從來(lái)就是很好的編程語(yǔ)言,它從來(lái)沒(méi)有超越C/C++和Java。它是一種通用的編程語(yǔ)言,強(qiáng)調(diào)人類可讀的、以英語(yǔ)為中心的語(yǔ)法,允許程序和應(yīng)用程序的快速開發(fā)。
歸根結(jié)底,Python和其他語(yǔ)言一樣,是一種工具。有時(shí)候,它是很好的工具。有時(shí)候不是。大多數(shù)情況下,只是 “還不錯(cuò)”。
Python作為一種編程語(yǔ)言會(huì)消亡嗎?筆者不這么認(rèn)為。
那么,它的魅力正在消失嗎?也許有一點(diǎn),但只是一點(diǎn)點(diǎn)。
責(zé)編AJX
-
編程
+關(guān)注
關(guān)注
88文章
3628瀏覽量
93816 -
人工智能
+關(guān)注
關(guān)注
1792文章
47442瀏覽量
239003 -
python
+關(guān)注
關(guān)注
56文章
4800瀏覽量
84820
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論