Python正在慢慢失去魅力
自從1990年代初發布Python之后,它就引起了很多炒作。 當然,編程社區至少花了20年的時間才意識到它的存在,但是自那時以來,它的普及程度已經遠遠超過了C,C#,Java甚至Javascript。
盡管Python在數據科學和機器學習領域以及某些程度上在科學和數學計算領域占據著主導地位,但與Julia,Swift和Java等較新的語言相比,它確實有其缺點。
是什么使Python如此流行?
Python迅猛發展的主要推動力之一是它的易學性和強大的實用性,這使其對初學者以及因諸如C之類的語言的語法難以理解而回避編程的人非常有吸引力。 / C ++。
該語言從根本上廣泛強調代碼的可讀性。 憑借其簡潔明了的語法,它使開發人員無需編寫大量的行代碼即可表達想法和概念(在C或Java等低級語言中就是這種情況)。 Python非常簡單,可以與其他編程語言無縫集成(例如將CPU密集型任務卸載到C / C ++),這對多語言開發人員來說是一個額外的好處。
Python多功能性的另一個原因是企業(包括FAANG)以及無數小型企業對其的大量使用。 如今,您將找到一個Python軟件包,幾乎可以想到的所有內容-對于科學計算,您已經擁有Numpy,Sklearn(用于機器學習)和Caer(用于計算機視覺)。
Python的弱點
很慢,很慢
這可能很容易。 速度通常被認為是開發人員關注的重點之一,并且可能會持續不可預見的時間。
Python變慢的主要原因之一,實際上可以歸結為2 – Python被解釋為與編譯相反,最終導致執行時間變慢; 以及它是動態類型的(在執行過程中,Python會自動推斷變量的數據類型)。
實際上,這種" Python慢"的觀點在初學者中往往起很大作用。 對,是真的。 但只是部分。
以TensorFlow為例,這是Python提供的機器學習庫。 這些庫實際上是用C ++編寫的,并且可以在Python中使用,有點像是圍繞C ++實現的Python"包裝器"。 Numpy甚至在一定程度上也是如此。
它有一個GIL(l)
Python速度緩慢的主要原因之一是存在GIL(全局解釋器鎖定),該功能一次只能執行一個線程。 雖然這可以提高單線程的性能,但是它限制了并行性,在這種并行性中,開發人員必須實現多處理程序而不是多線程程序,以提高速度。
對于內存密集型任務不是很好的
當對象超出范圍時,Python會自動進行垃圾回收。 它旨在消除C和C ++涉及的很多內存管理復雜性。 由于指定數據類型的靈活性(或缺乏靈活性),Python消耗的內存量可能會迅速爆炸。
此外,Python可能不會注意到的一些錯誤可能會在運行時彈出,最終使開發過程變慢了很多。
移動計算的弱勢存在
從臺式機到智能手機的巨大轉變,很明顯,需要更強大的語言來構建用于手機的軟件。 盡管Python在臺式機和服務器平臺上具有相當大的代表性,但是由于缺乏強大的移動計算處理能力,Python往往會在移動開發方面失去優勢。
近年來,在這一領域取得了許多進步,但是這些新添加的庫甚至與強大的競爭對手(如Kotlin,Swift和Java)并不接近。
其他語言的興起
最近,Julia,Rust和Swift等較新的語言突然出現,它們借鑒了Python,C / C ++和Java的許多優秀設計概念-Rust幾乎保證了運行時的內存安全性和并發性,并提供一流的 與WebAssembly的互操作性; Swift對LLVM編譯器工具鏈的支持幾乎與C一樣快,而Julia為I / O密集型任務提供了異步I / O,并且速度非常快。
結論
Python從未被構建為優秀的編程語言。 它從未被構建為可以使用C / C ++和Java。 它被構建為一種通用的編程語言,強調了人類可讀的,以英語為中心的語法,從而可以快速開發程序和應用程序。
就像一天結束時的所有其他語言一樣,Python是一種工具。 有時,它是很好的工具。 有時候不是。 通常,這"還好"。
那么,Python作為一種編程語言是否正在消亡?
我幾乎不這么認為。
它失去魅力了嗎?
啊,也許只是一點點。 一點點。