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 做爲一種編程語言正在消亡嗎?
我不這麼認爲。
它正在失去魅力嗎?
也許有一點,但也只是一點。
我是個自動化測試人員上面是我收集的一些視頻資源,在這個過程當中幫到了我不少。若是你不想再體驗一次自學時找不到資料,沒人解答問題,堅持幾天便放棄的感覺的話,能夠加入咱們扣扣羣(785128166)裏面有各類軟件測試資源和技術討論。