Go 對 Python 產生的衝擊
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。
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- 如何應對AI帶來的衝擊AI
- go-zero 如何扛住流量衝擊(一)Go
- go-zero 如何扛住流量衝擊(二)Go
- 微服務對前端的衝擊:微前端終於落地了 - thecamjackson微服務前端
- 不要小看《荒野亂鬥》 它對競技手遊生態的衝擊或許比你想象中大得多
- 疫情對服裝行業的衝擊有多大?服裝批發商如何應對?行業
- FireEye遭APT攻擊?!針對企業的APT攻擊是如何發生的?APT
- 這個冬天有點長:疫情衝擊下的全球遊戲產業遊戲產業
- 精益生產管理諮詢公司如何處理衝突?
- 一種產生 DSN 放大攻擊的深度學習技術深度學習
- Java Go python 執行速度對比JavaGoPython
- 幽默:Stripe、Square、比特幣和DeFi對傳統銀行金融的衝擊 - James Wang比特幣
- 簡化 Go 開發:使用強大的工具提高生產力Go
- python 生產者消費者模式Python模式
- Redis擊穿、穿透、雪崩產生原因以及解決思路Redis穿透
- 域滲透 | kerberos認證及過程中產生的攻擊ROS
- 對手機丟失後可能產生的危害的思考
- Go 緩衝通道(bufchan)用法Go
- 疫情衝擊全球市場 哪些資產可以躲過這場風暴?
- 海外產品衝擊國內榜單 微信中重度小遊戲回暖遊戲
- 如何在公司中收集對精益生產的支援?
- 一次因生產事故與chatGpt的對話ChatGPT
- 對於製造業企業來說,有效的提高生產效率是降低生產成本的關鍵。
- 衝擊IPO:達達的負“重”上市之路
- 緩衝區溢位攻擊
- 騰訊的成長煩惱:新業務亮點不多 遭遇新對手衝擊
- Go 大資料生態迎來重要產品 CDSGo大資料
- mysql的DDL操作對業務產生影響測試MySql
- CIO要頂住詞彙爆炸的衝擊(轉)
- 全球晶片供應面臨衝擊晶片
- Python | 面試的常客,經典的生產消費者模式Python面試模式
- Go 大資料生態迎來重量級產品 CDSGo大資料
- 進擊的 Ansible(二):如何快速搞定生產環境 Ansible 專案佈局?
- Python產生20個隨機整數的方法詳解!Python隨機
- 企業雲盤如何解決貿易行業面對數字化加速的市場衝擊行業
- 大資料對房地產行業的未來發展產生的巨大作用大資料行業
- 滑鼠控制軟體有可能和虛擬機器軟體產生衝突虛擬機
- SSRF 攻擊是如何發生的?