Go 對 Python 產生的衝擊

originator發表於2020-03-29

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

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

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

Python 還有很多缺陷,這裡不再多費筆墨,但一個事實是,「每個程式語言深入後,都可以提出很多缺陷」,但比較讓人悲觀的是 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 的周邊工具鏈還不完善,所以影響沒那麼大,但經過今年發展,Go 已經全方位跟上了 Python 的步伐,從這點也可以看出,一個開源專案的背後有個商業公司的益處,對專案會有較強的推動性。

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

為什麼很多公司要從 Python 轉 Go?

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

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

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

至此,結論已經很明顯了,如果你想找 Web 方面的工作崗位,我建議你學習 Go。

更多原創文章乾貨分享,請關注公眾號
  • Go 對 Python 產生的衝擊
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章