2020 年為什麼要選擇 Go 並放棄 Python

2020-12-17 51CTO

過去一段時間,Go 語言中文網推過挺多 Python 相關的公眾號,很多人詫異:為什麼推的都是 Python 的呢?其實主要原因是因為 Python 類的公眾號實在太多了,而且很多粉絲都特別多,我也挺納悶的。不過他們值得我學習,也說明 Go 還有很長的路要走。

為了證明 Go 語言中文網堅持做 Go 語言,推廣 Go、分享 Go,為 Go 的發展做貢獻,這兩天會分享兩篇 Go 和 Python 的對比文章。歡迎指正。

您會在 Python 和 Go 之間選擇哪個?如果您對 Go(Golang)有更深入的了解,那麼您肯定會選它。否則將會選擇Python。那麼我們討論一下。Python 的夥伴們,有 5 個理由可以讓您選擇 Go。讓我們一起閱讀這篇文章。

「 Python非常強大,尤其是 Python 3 具有異步功能,但是 Go 將完全取代它在大型企業中的地位……」

如果您真的理解引號,則可以嘗試使用 Go 程式語言。我認為 Go 是一種非常簡單的程式語言,可以適應任何應用程式環境,甚至比 Javascript 編程還要簡單。這可能就是為什麼 Go 程式語言近年來變得流行的原因。

在本文中,我將比較兩種語言的以下方面。這些方面的參數將幫助您確定哪種語言更適合您的手頭項目。

  • 性能
  • 可擴展性
  • 實際應用
  • 執行方式
  • 程序庫
  • 代碼可讀性

網站 TreeScale.com 主頁和 API 是基於某些分析工具的 Web 應用程式。這是他們的技術棧:

  • React.js 主頁前端
  • Django Python 主頁後端和身份驗證服務
  • Node.js API 服務
  • PostgreSQL 資料庫,Cassandra 日誌記錄系統
  • 自定義容器註冊表正在使用 Rust 語言
  • Python

Repustate 幾乎完全是 Python 商店。他們使用 Django 來實現 API 和網站。因此(當前)使用 Python 來實現阿拉伯情感引擎是合理的,以便保持代碼的一致性。僅用於原型設計和實現,Python 是一個不錯的選擇。它的表達能力非常強大,第三方類庫等也很好。如果您要使用 Web 服務,那麼 Python 是不錯的選擇。但是,當您執行低級計算並嚴重依賴哈希表( Python 中的字典類型)進行比較時,一切都會變慢。我們每秒可以處理大約兩到三個阿拉伯文文檔,但這太慢了。相比之下,他們的英語情感引擎每秒可以處理大約 500 個文檔。

從上面可以看到,基本框架完全基於微服務和邏輯的分離(前端和後端分離),甚至是完全不同的技術來實現。

他們將 API 服務和後端集成到一個項目中的主要原因是它們在許多地方都相似,並且通過多種語言或技術進行編碼,同時有很多重複的代碼。最後,他們需要花費大量時間來個性化 Django 的 API 服務,尤其是在自定義 JSON 響應方面。

我覺得當您開發一些普通的應用程式時,使用 Django 很棒,但是當您需要更高的性能和一些個性化的模塊時,使用 Django 會使它更加複雜。

為什麼選擇 Go 編程?

1、編譯為單個二進位文件

Golang 是一種編譯語言,Googe 的開發人員為此付出了很多努力。它使用靜態連結根據作業系統類型和環境將所有相關的庫文件和模塊實際組合到一個二進位文件中,這也意味著如果要將後端應用程式編譯到 Linux 作業系統和基於 X86 CPU 的應用程式,您只需將已編譯的二進位應用程式下載到伺服器,然後後端應用程式就可以工作,不需要任何相關文件。

2、靜態類型系統

類型系統對於大規模應用非常重要。Python 是一種很棒的有趣的語言,但是有時您會看到一些奇怪的異常,因為當您嘗試將變量用作整數變量時,而實際它是字符串類型。

def some_view (request): user_id = request.POST.get ('id', 0)這樣的代碼將導致 Django 崩潰。

而 Go 會進行編譯,並告訴您這是一個編譯器錯誤,這是它在愚蠢問題上贏得時間的地方。

3、優化(性能)

令人驚訝的是,在大多數應用程式場景中,Go 比 Python(第 2 版或第 3 版)更快。比較的結果可以在基準測試中看到,這當然是不公平的,它取決於應用程式的類型和用戶用例。

就我們而言,Go 擁有自己的多線程模塊和 CPU 可擴展性,因此性能更高。每當我們需要執行一些內部請求時,我們都可以使用 Goroutine 分別執行它們,這比 Python 中的線程要節省十倍的資源。藉助這些內置的語言功能,我們可以節省大量資源(內存和 CPU)。

4、Go 不再需要 Web 框架

對於程式語言來說,這是一件很酷的事情。Go 語言的創建者和社區擁有核心語言支持的許多內置工具,在大多數情況下,您不再需要任何第三方庫。例如,它具有內置的 http,json 和 html 模板。您甚至可以構建非常複雜的 API 服務,而不必擔心在 Github 上找到第三方庫。

當然,Go 也有許多用於構建 Web 項目的庫和框架,但是我建議您不要使用第三方庫來構建 Web 項目或 API 服務,因為在大多數情況下,使用標準庫包將使您的生活更輕鬆。

5、更好的 IDE 支持和調試

當您嘗試更改程式語言時,IDE 支持是最重要的考慮因素之一。友好的 IDE 可以平均節省 80% 的編程時間。Go Plugin for JetBrains IDEA,還提供其他支持,例如(Webstorm,PHPStorm 等)。該插件提供項目開發中所需的任何服務。強大的 JetBrains IDEA 可以使您的開發更加強大,更好用的是 Goland。

選擇 Go,還是 go home?

Mozilla 正在內部將其龐大的基礎日誌記錄架構轉換為 Go,部分原因是強大的 goroutines 。Go語言是由 Google 的人員設計的,在設計之初,對並發的支持才是重中之重,而不是像其他各種 Python 解決方案一樣在其後添加。因此,我們開始從 Python 切換到 Go。

儘管我們的 Go 代碼產品尚未正式發布,但結果令人鼓舞。現在,我們每秒可以處理一千個文檔,使用更少的內存,並且不需要調試在 Python 中遇到的問題:醜陋的多進程/gevent/「為什麼 Control-C 無法殺死進程」。

為什麼我們喜歡 Go?

任何對程式語言的工作方式(解釋與編譯,動態與靜態)了解甚少的人都會說:「切,當然 Go 會更快」。是的,我們還可以用 Java 重寫所有內容,並且可以看到類似且更快的改進,但這不是 Go 語言獲勝的原因。您在 Go 中編寫的代碼似乎是正確的。我不知道發生了什麼,但是一旦代碼被編譯(快速的編譯速度),您就會覺得代碼可以正常工作(不僅可以正確運行,而且在邏輯上正確)。我知道這聽起來不太可靠,但確實如此。就冗餘(或非冗餘)而言,這與 Python 非常相似。它以函數為首要目標,因此函數式編程將易於理解。當然,Go 線程和通道使您的工作變得更輕鬆,可以從靜態類型中獲得很大的性能提升,並且可以更好地控制內存分配,但是不必為語言表現力付出太多成本。

根據我們的代碼統計,用 Go 重寫項目後,我們減少了 64% 的代碼。

您不需要調試不存在的代碼。代碼越少,錯誤越少!

結論

Go 為我們提供了極大的靈活性。一種語言可以在所有用戶方案中使用,並且在所有用戶方案中都能很好地工作。在後端和 API 服務中,我們獲得了 30% 的性能優化。現在,我可以實時處理日誌,轉換為資料庫,並通過 WebSocket 處理一項或多項服務!這是 Go 語言功能提供的非常強大的功能。

【編輯推薦】

【責任編輯:

華軒

TEL:(010)68476606】

點讚 0

相關焦點

  • 一個go和python有趣的例子
    今天在一博文中看到一個有趣的問題,分享給大家,曾經也通過自學學習過python程式語言,python是一門很簡煉、功能豐富的語言,目前已大量用於科學研究和網際網路開發各個領域
  • 知乎問答:為什麼字節跳動選擇使用 Go 語言?
    該提問者說:之前一直是聽說字節跳動使用 Python 語言作為開發的主要語言,今年(2019 年)秋招實驗室去字節跳動的幾個同學分屬於不同部門,被告知使用 Go 語言。問題見:https://www.zhihu.com/question/353085825。
  • 2021年程式語言趨勢預測:Python和JavaScript仍火熱,Go不可小覷
    但是這是在2019年進行的調查,作為一門快速增長的語言,Go的受歡迎程度正在瘋狂增加。Mr Herath 認為統計數據可能會在2020年發生變化。圖源:https ://madnight.github.io/githut/#/pull_requests/2020/2GitHub庫圖源:https : //github.com/python/cpython圖源:https : //github.com/nodejs/node圖源:https : //
  • 量化投資-為什麼選擇Python?
    為什麼量化投資要選擇Python?全球star數排名前十的量化投資開源項目裡,有7個使用的Python作為底層代碼。為什麼數據分析方面如此喜愛Python?數據分析,主要講究性能和計算兩點元素,而沒有任何語言能像python一樣既能精於計算又能保持性能,在時間序列數據的處理上展現了簡單便捷的優勢。
  • Python和Go都很火,我要怎麼選?
    關於 Go 語言Go 於 2009 年由谷歌開發完成。它解決了一個問題,創建出一種沒有 C++等語言的過重包袱和過分設計的語言。這使得 Go 在性能和速度上都有極大提升,使用 Go 工作成為一件樂事。代碼地址:https://github.com/sekarasiewicz/go-python-benchmark二分搜索創建整型列表(從 1 到 100000),使用二分搜索找出數字 729。
  • 為什麼入門大數據選擇Python而不是Java?
    今天我們就來談談學習大數據入門語言的選擇。當然並不只是我個人之見,此外我搜集了各路大神的見解綜合起來跟大家做個討論。java和python的區別到底在哪裡?7月20日,IEEE發布2017年程式語言排行榜:Python高居首位。java和python,都可以運行於linux作業系統,但很多linux可以原生支持python,java需要自行安裝。java和python強於c#的原因大於支持linux,支持osx,支持unix,支持arm。java和python比c++受歡迎的原因在於不需要指針。
  • Python 編程 5 年後,我轉向了 Go!
    為了加強這些知識,我閱讀了電子書Go for Python Programmers(https://golang-for-python-programmers.readthedocs.io/),這使我能夠繼續下一步,嘗試和失敗,我認為這是最具教育意義的。我使用了以前在Python中使用的常用函數,如JSON序列化或使用HTTP調用,並嘗試在Go中編寫它們。
  • 大話go 語言:談談 go 語言的類型系統
    帶領大家複習下,首先 C 語言是一門面向過程程式語言,要想實現面向對象編程,那需要知道面向對象的核心:封裝、繼承和多態。之所以有此回憶,是因為最近接觸到了網際網路的 C 語言:go。今天主要談談 go 語言類型系統,對其天生的並發、類協程留待下一節聊。go 語言的誕生體現了編程大佬們不甘寂寞、追求極簡又極度天才的行為。
  • 為什麼我會捨棄 Python 依靠 Go?
    近日,Python 被納入全國計算機等級考試科目、編入了小學教材、獲得了 2018 年頂級程式語言榮譽,可以說,Python 要多火就有多火。程序要能很快寫出來,而且基本上用完就不會再用了。通常每次任務都是全新並且唯一的,因此幾乎沒有代碼重用的可能。下面是 Go 比 Python 強的地方:
  • 2020年最流行的十個Python庫(上)
    Python之所以強大,還因為它擁有大量的庫,這使得python滲透於任何類型的開發,藉助python可以進行網絡開發,腳本編寫,遊戲開發,數據科學等工作。在本文中,將向您介紹2020年在大廠Python老師傅中最流行的的十大Python庫。本篇介紹其中5個。對於每一個庫,都會說明為什麼會推薦它?
  • LeetCode 009 Python&Go版本
    點擊上方「Python學習開發」,選擇「加為星標」第一時間關注Python技術乾貨!
  • 2020年最新Python視頻教程免費下載,優質的Python全系列視頻教程推薦,百度雲資源python視頻教程
    學習python編程是當今最熱門的項目,為何,當然是為了「工作賺錢」,無他。
  • 為什麼遷移至 Python 3 這麼難?
    作者丨陳思 2020 年 1 月 1 日,Python 2 的生命周期正式截止,Python 核心開發人員也宣布即將不再提供該版本的安全更新,並建議用戶儘快遷移至 Python 3。
  • Go語言和Java、Python等其他語言的對比分析
    但是結合Google當時內部的一些現實情況,如很多工程師都是C系的,所以新設計的語言一定要易學習;20年沒有出新的語言了,所以新設計的語言必須是現代化的(例如內置GC)等情況。根據實戰經驗,他們向著目標設計了Go這個語言。
  • 「對比Python學習Go」- 高級數據結構下篇
    這裡有個標準,通常是在裝填因子(填入表中的元素個數/散列表的長度)[大於 6.5](https://github.com/golang/go/blob/master/src/runtime/map.go#L68 "]bmap數組的擴容。當數據越來越多時,[]bmap數組後邊掛的bmap也會越來越多,bmap的數量越多,在查找時,則大部分時間會花費在鍊表的查找上。
  • 為什麼我要推薦你學Python
    藉助著2017年人工智慧的推動,在去年程式語言排行榜中,Python已躍居榜首。   2017程式語言top20   為什麼要去學Python呢   首先,Python很容易入門
  • [GO語言基礎] 一.為什麼我要學習Golang以及GO語言入門普及
    文章目錄一.為什麼我要學習Golang1.Golang背景知識2.Why二.什麼是Go語言三.如何學習Golang四.程序基本概念那麼,我們為什麼要學習GO語言呢?2.Why就我而言:學習GO語言主要是因為它在安全領域的應用,它是區塊鏈最主流的程式語言,同時也是當前最具發展潛力的語言。
  • 為什麼要在2018年學習Python?
    為什麼? 簡而言之,我正在尋找一種新的程式語言。 我在大學裡學了幾門Java課程,但我好幾年沒用過。 我學習了HTML和CSS, 但我現在正在尋找一種可以用於Web開發以外的語言。 最重要的是,我要確保今天學習的東西在今後五年也能用上。
  • 一次使用 Go 語言編寫腳本的經歷
    然後 env 命令調用 python 命令,執行 python example.py arg1 arg2。最後 python 運行 example.py 腳本,參數是 example.py arg1 arg2。讓我們開始嘗試給 Go 腳本添加 Shebang。
  • Let go of the past 放棄那些放棄你的人
    放棄那些放棄你的人Stop Seeking Acceptance From People Who Are Committed to Not Accepting YouIt is fascinating how often we crave the acceptance and approval