是什麼原因導致了Go對Python的衝擊?

在Go的流行下,讓以 Python 為主流語言的開發者產生了一定的危機感。記得上一次有這種危機感,王強還在做Android開發,當時用Java做Android 開發,Google強推Kotlin讓王強有比較強的危機感,加了很多 Android 開發者交流群,大家都說工作難找,後來王強就轉Python了。


是什麼原因導致了Go對Python的衝擊?


根據目前觀察而言,Python的流行不會那麼快的衰減,很多非開發人員會以Python作為首門編程語言來學習,Python簡單上手的特點在這裡發揮出巨大的優勢,但瞭解的越深會體會到 Python在工程方面的乏力,一個很具體的例子就是 Web方面,雖然最近出現了測試覆蓋率100%的FastApi框架,但整體形勢依舊比較悲觀。


是什麼原因導致了Go對Python的衝擊?


一直讓人詬病的是Python的異步機制,聽過多位資深Python開發者吐槽Python在asyncio上存在的問題,就王強了解而言,很少有公司會在生成環境使用asyncio,太多迷惑行為以及限制了,目前生產環境要用異步,依舊首選gevent,多年的東西,更新也不是特別頻繁,依舊是現在的首選,從這點也可以看出Python在異步方面太不給力了。


是什麼原因導致了Go對Python的衝擊?


其實Python還有很多缺陷,這裡不再贅述,但一個事實是,每個編程語言深入後,都可以提出很多缺陷,但比較讓人悲觀的是Python社區的運作方式,其鬆散的運作方式讓很多重要卻具有較大難度的功能難以被推進與實現。當然,個人能力有限,在社區也無絲毫貢獻,所以也沒什麼話可說。


是什麼原因導致了Go對Python的衝擊?


即便吐槽了 Python,可是Python還是一門值得學習的編程語言,特別是作為非技術人員的首門語言。

我們回到本文的主題。

是什麼原因使Go對Python產生了衝擊?

是什麼原因導致很多公司開始從Python轉Go?

為何Java對Python造成不了這麼大的威脅?

首先回答第三個問題,雖然Java比 Python快上不少,但在多技術聯動的時代,這種差距的影響在縮小,而Python在開發效率上比Java高出不少,所以Python讓更多人傾向於選擇 。

打個比方,假設Java比Python快10倍,執行相同邏輯Java需要1ms,而 Python需要10ms,差距似乎很大啊,但一個項目通常不會只使用編程語言完成邏輯操作,比如數據庫使用 MySQL,數據庫操作可能要花費60ms,那麼相同的邏輯,Java項目需要 61ms,而Python項目需要 70ms,此時相差9ms,注意這9ms的速度落差對於整體項目時間的比重並不大,可以說編程語言速度上的差距會因為一個項目中使用多種不同的工具而降低速度。


再有一個原因就是,選擇Java通常是開發大型Web 項目,此時會從架構、易維護、易讀等不同角度考慮,這並不是Python web開發的主戰場,中小型 Web項目才是。


根據綜上所述,Java對Python的衝擊並不大。

那為什麼Go會產生這麼大的衝擊呢?

雖然Go的運行速度確實比Python快很多,然而核心原因卻是Go語言上手難度低、開發效率高,使用 Go開發一個Web系統是很快的,語言層面支持異步,讓初學者不必瞭解太多技巧,循規蹈矩的開發就可以獲得一個性能不錯的Web系統。


是什麼原因導致了Go對Python的衝擊?


在早幾年的時候,因為Go的周邊工具鏈還不完善,所以影響沒那麼大,但經過近幾年的發展,Go已經全方位跟上了Python的步伐,從這點也可以看出,一個開源項目的背後有個商業公司的益處,的確對項目會有較強的推動性。


因此在 Web領域,Python在Go面前幾乎沒啥優勢...

那為何很多公司要從Python轉Go呢?

首先Go的眾多優勢是一個明顯的原因。

此外很多公司的項目因為歷史原因,還是使用Python2.7開發的,2020年,Python官方宣佈停止對Python2.7的支持,讓很多公司不得不考慮升級成 Python3,然而尷尬的是,Python3並沒有向後兼容 Python2,所以升級會存在風險,此時Go風頭正盛,簡單易用性能好的特性越發深入人心,這就產生了升級Python 3還不如使用Go重寫的想法。


是什麼原因導致了Go對Python的衝擊?


要注意了,上述討論都是針對於Web領域,而Python在數據分析與機器學習等領域依然是一流語言,不過遺憾的是,這幾個領域並不太依賴於 Python多樣化的語法糖,而更側重該領域特有的一些知識,如數學、統計學等……


到此,結論已經再明顯不過了,如果大家想找Web方面的工作崗位,建議大家是學習Go比較好!


分享到:


相關文章: