亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

我放棄Python轉Go語言的9大理由(附優秀書籍推薦)

系統 1520 0

前言

我放棄Python轉Go語言的9大理由(附優秀書籍推薦)_第1張圖片

Go大概2009年面世以來,已經8年了,也算是8年抗戰。在這8年中,已經有很多公司開始使用Go語言開發自己的服務,甚至完全轉向Go開發,也誕生了很多基于Go的服務和應用,比如Dokcer、k8s等,很多的大公司也在用,比如google(作為開發Go語言的公司,當仁不讓)、Facebook、騰訊、百度、阿里、京東、小米以及360,當然除了以上提到的,還有很多公司也都開始嘗試Golang,這其中是什么原因呢?讓我們來一起分析分析。

原因 1:性能

我放棄Python轉Go語言的9大理由(附優秀書籍推薦)_第2張圖片

Go 極其地快。其性能與 Java 或 C++相似。在我們的使用中,Go 一般比 Python 要快 30 倍。

以下是 Go 與 Java 之間的基準比較:

我放棄Python轉Go語言的9大理由(附優秀書籍推薦)_第3張圖片

我放棄Python轉Go語言的9大理由(附優秀書籍推薦)_第4張圖片

我放棄Python轉Go語言的9大理由(附優秀書籍推薦)_第5張圖片

我放棄Python轉Go語言的9大理由(附優秀書籍推薦)_第6張圖片

原因 2:語言性能很重要

對很多應用來說,編程語言只是簡單充當了其與數據集之間的膠水。語言本身的性能常常無關輕重。

但是 Stream 是一個 API 提供商,服務于世界 500 強以及超過 2 億的終端用戶。數年來我們已經優化了 Cassandra、PostgreSQL、Redis 等等,然而最終抵達了所使用語言的極限。

原因 3:開發者效率&不要過于創新

看一下絕佳的入門教程《開始學習 Go 語言》(http://howistart.org/posts/go/1/)中的一小段代碼:

            
package main
type openWeatherMap struct{}

func (w openWeatherMap) temperature(city string) (float64, error) {
 resp, err := http.Get("http://api.openweathermap.org/data/2.5/weather?APPID=YOUR_API_KEY&q=" + city)
 if err != nil {
 return 0, err
 }

 defer resp.Body.Close()

 var d struct {
 Main struct {
 Kelvin float64 `json:"temp"`
 } `json:"main"`
 }

 if err := json.NewDecoder(resp.Body).Decode(&d); err != nil {
 return 0, err
 }

 log.Printf("openWeatherMap: %s: %.2f", city, d.Main.Kelvin)
 return d.Main.Kelvin, nil
}
          

如果你是一個新手,看到這段代碼你并不會感到吃驚。它展示了多種賦值、數據結構、指針、格式化以及內置的 HTTP 庫。

當我第一次編程時,我很喜歡使用 Python 的高階功能。Python 允許你創造性地使用正在編寫的代碼,比如,你可以:

  • 在代碼初始化時,使用 MetaClasses 自行注冊類別
  • 置換真假
  • 添加函數到內置函數列表中
  • 通過奇妙的方法重載運算符

毋庸置疑這些代碼很有趣,但也使得在讀取其他人的工作時,代碼變得難以理解。

Go 強迫你堅持打牢基礎,這也就為讀取任意代碼帶來了便利,并能很快搞明白當下發生的事情。

注意: 當然如何容易還是要取決于你的使用案例。如果你要創建一個基本的 CRUD API,我還是建議你使用 Django + DRF,或者 Rails。

原因 4:并發性&通道

Go 作為一門語言致力于使事情簡單化。它并未引入很多新概念,而是聚焦于打造一門簡單的語言,它使用起來異常快速并且簡單。其唯一的創新之處是 goroutines 和通道。Goroutines 是 Go 面向線程的輕量級方法,而通道是 goroutines 之間通信的優先方式。

創建 Goroutines 的成本很低,只需幾千個字節的額外內存,正由于此,才使得同時運行數百個甚至數千個 goroutines 成為可能。你可以借助通道實現 goroutines 之間的通信。Go 運行時間可以表示所有的復雜性。Goroutines 以及基于通道的并發性方法使其非常容易使用所有可用的 CPU 內核,并處理并發的 IO――所有不帶有復雜的開發。相較于 Python/Java,在一個 goroutine 上運行一個函數需要最小的樣板代碼。你只需使用關鍵詞「go」添加函數調用:

我放棄Python轉Go語言的9大理由(附優秀書籍推薦)_第7張圖片

Go 的并發性方法非常容易上手,相較于 Node 也很有趣;在 Node 中,開發者必須密切關注異步代碼的處理。

并發性的另一個優質特性是競賽檢測器,這使其很容易弄清楚異步代碼中是否存在競態條件。下面是一些上手 Go 和通道的很好的資源:

  • https://gobyexample.com/channels
  • https://tour.golang.org/concurrency/2
  • http://guzalexander.com/2013/12/06/golang-channels-tutorial.html
  • https://www.golang-book.com/books/intro/10
  • https://www.goinggo.net/2014/02/the-nature-of-channels-in-go.html

原因 5:快速的編譯時間

當前我們使用 Go 編寫的最大微服務的編譯時間只需 6 秒。相較于 Java 和 C++呆滯的編譯速度,Go 的快速編譯時間是一個主要的效率優勢。我熱愛擊劍,但是當我依然記得代碼應該做什么之時,事情已經完成就更好了。

我放棄Python轉Go語言的9大理由(附優秀書籍推薦)_第8張圖片

Go 之前的代碼編譯

原因 6:打造團隊的能力

首先,最明顯的一點是:Go 的開發者遠沒有 C++和 Java 等舊語言多。據知,有 38% 的開發者了解 Java,19.3% 的開發者了解 C++,只有 4.6% 的開發者知道 Go。GitHub 數據表明了相似的趨勢:相較于 Erlang、Scala 和 Elixir,Go 更為流行,但是相較于 Java 和 C++ 就不是了。

幸運的是 Go 非常簡單,且易于學習。它只提供了基本功能而沒有多余。Go 引入的新概念是「defer」聲明,以及內置的帶有 goroutines 和通道的并發性管理。正是由于 Go 的簡單性,任何的 Python、Elixir、C++、Scala 或者 Java 開發者皆可在一月內組建成一個高效的 Go 團隊。

原因 7:強大的生態系統

Go 有著強大的工具支持,面向 Redis、RabbitMQ、PostgreSQL、Template parsing、Task scheduling、Expression parsing 和 RocksDB 的穩定的庫。

Go 的生態系統相比于 Rust、Elixir 這樣的語言有很大的優勢。當然,它又略遜于 Java、Python 或 Node 這樣的語言,但它很穩定,而且你會發現在很多基礎需求上,已經有高質量的文件包可用了。

原因 8:GOFMT,強制代碼格式

Gofmt 是一種強大的命令行功能,內建在 Go 的編譯器中來規定代碼的格式。從功能上看,它類似于 Python 的 autopep8。格式一致很重要,但實際的格式標準并不總是非常重要。Gofmt 用一種官方的形式規格代碼,避免了不必要的討論。

原因 9:gRPC 和 Protocol Buffers

Go 語言對 protocol buffers 和 gRPC 有一流的支持。這兩個工具能一起友好地工作以構建需要通過 RPC 進行通信的微服務器(microservices)。我們只需要寫一個清單(manifest)就能定義 RPC 調用發生的情況和參數,然后從該清單將自動生成服務器和客戶端代碼。這樣產生代碼不僅快速,同時網絡占用也非常少。

對每位程序員來說,不管哪種語言,“學的扎實,能學以致用”才是王道!本文就為對 Go 語言感興趣的朋友們提供一些口碑不錯的學習書籍建議。

?一、《Go語言學習筆記》

我放棄Python轉Go語言的9大理由(附優秀書籍推薦)_第9張圖片

(未找到對應版本的電子書,大家可以去作者github:https://github.com/qyuhen/book)

推薦理由: 作為時下流行的一種系統編程語言,Go 簡單易學,性能很好,且支持各類主流平臺。已有大量項目采用 Go 編寫,這其中就包括 Docker 等明星作品,其開發和執行效率早已被證明。本書經四年多逐步完善,內容覆蓋了語言、運行時、性能優化、工具鏈等各層面知識。且內容經大量讀者反饋和校對,沒有明顯的缺陷和錯誤。

適合人群: 本書不適合編程初學入門,可供有實際編程經驗或正在使用Go 工作的人群參考。

二、《Go語言實戰》

我放棄Python轉Go語言的9大理由(附優秀書籍推薦)_第10張圖片

(點擊這里下載電子書)?

推薦理由 :William Kennedy是一位熟練的軟件開發者,也是博客GoingGo.Net的作者。本書向讀者提供一個專注、全面且符合語言習慣的視角。Go語言實戰同時關注語言的規范和實現,涉及的內容包括語法、類型系統、并發、管道、測試,以及其他一些主題。

適合人群: 全覆蓋,側重初學者

三、《Go Web編程》

我放棄Python轉Go語言的9大理由(附優秀書籍推薦)_第11張圖片

(點擊這里下載電子書)?

推薦理由: 《Go Web編程》介紹如何用Go語言進行Web應用的開發,將Go語言的特性與Web開發實戰組合到一起,幫讀者成功地構建跨平臺的應用程序,節省Go語言開發Web的寶貴時間。有了這些針對真實問題的解決方案放在手邊,大多數編程難題都會迎刃而解,讀者可以更加方便地找到各種編程問題的解決方案,內容涵蓋文本處理、表單處理、Session管理、數據庫交互、加/解密、國際化和標準化,以及程序的部署維護等運維方面的知識,最后還介紹了一個快速開發的框架幫助您迅速進入Go語言的Web開發。

適合人群: 全覆蓋

四、《Go語言編程》

? 我放棄Python轉Go語言的9大理由(附優秀書籍推薦)_第12張圖片

(點擊這里下載電子書)

推薦理由: 作者是業界大神級別的人物,七牛云存儲團隊的核心技術人員,也是國內最早應用和推廣 Go 語言技術的專家!本書內容簡煉,重點突出,將 Go 語言的特性做了充分的分析和總結,并給出 Go 實例的代碼;內容體系可能更適合有一定編程基礎的程序員閱讀!本書是國內最早的中文版的 Go 技術書籍之一,雖然發行時間比較早,但仍可以作為重要參考!電子版和紙質版都有!

適合人群: 全覆蓋,側重有經驗的程序員

五、《Go并發編程實戰(第2版)》

? 我放棄Python轉Go語言的9大理由(附優秀書籍推薦)_第13張圖片

(點擊這里下載電子書)

推薦理由: 本書首先介紹了Go語言的優秀特性、安裝設置方法、工程結構、標準命令和工具、語法基礎、數據類型以及流程控制方法,接著闡述了與多進程編程和多線程編程有關的知識,然后重點介紹了goroutine、channel以及Go提供的傳統同步方法,最后通過一個完整實例――網絡爬蟲框架進一步闡述Go語言的哲學和理念,同時分享作者在多年編程生涯中的一些見解和感悟。

適合人群: 適用于有一定計算機編程基礎的從業者以及對Go語言編程感興趣的愛好者,非常適合作為Go語言編程進階教程。

六、《Go 語言程序設計》

? 我放棄Python轉Go語言的9大理由(附優秀書籍推薦)_第14張圖片

(點擊這里下載電子書)

推薦理由: 國外最經典的Go語言著作,Go語言編程的先驅者Mark Summerfield的實踐經驗總結。這是一本Go語言實戰指南,幫你了解Go語言,按Go語言的方式思考,以及使用Go語言來編寫高性能軟件。

作者展示了如何編寫充分利用Go語言突破性的特性和慣用法的代碼,以及Go語言在其他語言之上所做的改進,并著重強調了Go語言的關鍵創新。

注重實踐教學,每章都提供了多個經過精心設計的代碼示例。

由國內第一個核心服務完全采用Go語言實現的團隊――七牛團隊核心成員翻譯。

適合人群: 適用于有一定Go語言編程編程的愛好者,非常適合作為Go語言編程進階教程。

還想要更多學習的書籍!?

看這里↓↓

我放棄Python轉Go語言的9大理由(附優秀書籍推薦)_第15張圖片

總結

Go 是一種非常高效的語言,高度支持并發性。同時,它也像 C++和 Java 一樣快。雖然相比于 Python 和 Ruby,使用 Go 建立東西需要更多的時間,但在后續的代碼優化上可以節省大量時間。這也是為什么向大家推薦這篇文章的原因。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 91精品国产麻豆国产自产在线 | 久久精品视频一区 | 国内拍拍自拍视频在线观看 | 最近在线更新中文字幕1 | 欧美另类成人 | 嗯啊在线观看免费影院 | 亚洲 欧洲 另类 综合 自拍 | 美妇乱人伦性 | 免费看一级a一片毛片 | 久草热视频在线 | 五月婷婷之综合激情 | 深夜激情网站 | 亚洲综合精品一区 | 国产精品久久久久久久久久久搜索 | 一级女性全黄生活片免费看 | 色狠狠狠色噜噜噜综合网 | 中文字幕在线综合 | 一级特级aaaa毛片免费观看 | 噜噜色噜噜色 | 免费看羞羞视频的网站 | 性欧美欧美之巨大69 | 亚洲伊人久久综合一区二区 | 修修视频在线观看 | 99在线视频网站 | 日韩欧美国产中文字幕 | 国产日产综合 | 激情国产视频 | 四虎影视国产精品亚洲精品hd | 日韩午夜小视频 | 亚洲高清色 | 精品欧美一区二区精品久久 | 12至16末成年毛片 | 老子影院无码午夜伦不卡 | 久久伊人久久 | 国产精品视频分类一区 | 国产成人精品视频一区二区不卡 | 婷婷激情视频 | 欧美午夜场 | 日本在线观看www鲁啊鲁视频 | 91日韩精品天海翼在线观看 | 中文字幕亚洲图片 |