感謝久關不棄。web
本文簡單聊一下我對Go的一些思考,非技術向。數據庫
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仍是一門值得學習的編程語言,特別是做爲非技術人員的首門語言。異步
回到本文的主題。async
先回答第三個問題,雖然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。
這幾天,公司開發任務比較重,在開發過程當中遇到了一些比較耗費心力的Bug,同時學習到不少有趣的知識,後面幾篇文章會分享一下Docker底層原理與Kafka相關的內容,漫畫版呦!
最後,感謝你的關注與閱讀,咱們下篇文章見吧。