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