過去一段時間,Go 語言中文網推過挺多 Python 相關的公眾號,很多人詬異:為什麼推的都是 Python 的呢?其實主要原因是因為 Python 類別的公眾號實在太多了,而且很多粉絲都特別多,我也挺納悶的。不過他們值得我學習,也說明 Go 還有很長的路要走。
您會在 Python 和 Go 之間選擇哪一個?如果您對 Go(Golang)有更深入的了解,那麼您肯定會選擇它。否則將會選擇Python。那我們討論一下。 Python 的夥伴們,有 5 個理由可以讓您選擇 Go。讓我們一起閱讀這篇文章。
「 Python非常強大,尤其是Python 3 具有非同步功能,但Go 將完全取代它在大型企業中的地位…」
如果您真的理解上邊的話,可以嘗試使用Go 程式語言。我認為 Go 是一種非常簡單的程式語言,可以適應任何應用程式環境,甚至比 Javascript 程式設計還要簡單。這可能就是為什麼 Go 程式語言近年來變得流行的原因。
在本文中,我將比較兩種語言的以下方面。這些方面的參數將幫助您確定哪種語言更適合您的手邊專案。
1、效能
2、可擴展性
3、實際應用
4、執行方式
5、程式庫
6、程式碼可讀性
網站TreeScale.com 主頁和API 是基於某些分析工具的Web 應用程式。這是他們的技術堆疊:
React.js 主頁前端
Django Python 主頁後端和身份驗證服務
#Node.js API 服務
PostgreSQL 資料庫,Cassandra 日誌記錄系統
為什麼選擇 Go 程式設計?
1、編譯為單一二進位檔案
#Golang 是一種編譯語言,Googe 的開發人員為此付出了很多努力。它使用靜態連結根據作業系統類型和環境將所有相關的庫檔案和模組實際組合到一個二進位檔案中,這也意味著如果要將後端應用程式編譯到Linux 作業系統和基於X86 CPU 的應用程序,您只需將已編譯的二進位應用程式下載到伺服器,然後後端應用程式就可以工作,不需要任何相關檔案。2、靜態型別系統
類型系統對於大規模應用非常重要。 Python 是一種很棒的有趣的語言,但是有時您會看到一些奇怪的異常,因為當您嘗試將變數用作整數變數時,而實際它是字串類型。
def some_view (request): user_id = request.POST.get ('id', 0)這樣的程式碼將導致 Django 崩潰。
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 語言功能提供的非常強大的功能。
更多go語言知識請關注php中文網go語言教學欄位。
以上是2021年放棄Python選擇Go的原因的詳細內容。更多資訊請關注PHP中文網其他相關文章!