Categories
程式開發

Python正在慢慢失去魅力?


自20世紀90年代早期發布以來,有關Python的炒作就沒有停止過。編程社區花了至少20年的時間才確認了它的地位,而從那以後,它的流行程度遠遠超過了C、C#、Java甚至是JavaScript。

儘管Python在數據科學、機器學習以及科學和數學計算(一定程度上)領域佔據著主導地位,但與Julia、Swift和Java等新興語言相比,它也有自己的缺點。

是什麼讓Python如此流行?

Python飛速發展的主要原因之一是它的易學和強大,這對初學者來說非常有吸引力,甚至對那些因為C/C++等語言的晦澀語法而逃避編程的人來說也是如此。

Python最為強調的是代碼可讀性。憑藉其簡潔而富有表現力的語法,開發者無需編寫大量的代碼就可以表達他們的想法和概念(而C語言或Java就做不到了)。 Python可以無縫地與其他編程語言集成(比如將CPU密集型任務交給到C/C++來完成),對於多語言開發者來說,這無疑也是一個額外的優勢。

導致Python流行的另一個原因是它被巨頭企業(包括美國五大科技巨頭)和無數小型企業使用。現如今,你可以為你想做的任何一件事情找到一個Python包——科學計算有Numpy,機器學習有Sklearn,計算機視覺有Caer。

Python的弱點

慢,非常慢

圖片

這個是顯而易見的。速度通常被認為是開發者最為關注的重點之一,並且可能在不可預見的一段時間內繼續如此。

導致Python“慢”主要可以歸結為兩個原因——Python是解釋執行的,而不是編譯執行的,所以執行時間變長;它是動態類型的(Python在執行過程中自動推斷變量的數據類型) 。

實際上,“Python很慢”這一說法在初學者當中很經常聽到。是的,這是真的,但也不完全對。

以Python機器學習庫TensorFlow為例。這些庫實際上是用C++編寫的,然後使用Python進行了“包裝”。 Numpy也是一樣的,在某種程度上Caer也是。

全局解釋器鎖

導致Python慢​​的另一個原因是GIL(全局解釋器鎖),它一次只允許一個線程執行。雖然這提高了單線程的性能,但限制了並行性。為了提高速度,開發者必須實現多處理程序,而不是使用多線程。

不適合內存密集型任務

當對象超出作用域時,Python會自動對它們進行垃圾回收。 Python致力於消除內存管理的複雜性。因為採用了動態類型,Python消耗的內存可能會迅速暴增。

另外,Python有一些沒有被注意到的bug,可能會在運行時突然出現,最終極大降低開發速度。

在移動計算領域的弱勢

圖片

隨著從桌面到智能手機的巨大轉變,顯然需要更健壯的編程語言來構建移動軟件。雖然Python在桌面和服務器領域有相當搶眼的表現,但由於缺乏強大的移動計算處理能力,所以在移動開發領域失去了優勢。

近年來,Python在這個領域已經有了很大進步,但這些新增的庫與強大的競爭對手(如Kotlin、Swift和Java)還是無法比擬的。

其他編程語言的崛起

近年來,像Julia、Rust和Swift這樣的新興編程語言突然出現在人們的視野中,它們藉鑑了大量來自Python、C/C++和Java的優秀設計理念——Rust在很大程度上保證了內存安全和運行時的並發性,並提供了與WebAssembly的互操作性;因為支持LLVM編譯器工具鏈,Swift幾乎和C語言一樣快,而Julia為I/O密集型任務提供了異步I/O,速度快得驚人。

結論

Python從來就不是最好的編程語言,也從來不是為了取代C/C++和Java。它是一種通用的編程語言,強調的是代碼可讀性、以英語為中心的語法,從而加快程序和應用程序的開發。

Python和其他編程語言一樣,說到底都是一種工具。有時候,它是最好的工具,但有時它不是。大多數情況下,都是“還好”。

那麼,Python作為一種編程語言正在消亡嗎?

我不這麼認為。

它正在失去魅力嗎?

也許有一點,但也只是一點。

原文鏈接:

https://towardsdatascience.com/python-is-slows-losing-its-charm-9ca652726492