2017 年 Go 語言程式設計的五大關注點
今年像動態外掛,Serverless Go 以及 HTTP/2 這些創新對你的開發意味著什麼?
Go 1.8 剛剛釋出,它有幾個新功能,包括:
這些新功能的影響力取決於你和開發團隊如何使用 Go。 自從 Go 1.0 於 2012 年釋出以來,其簡單性、併發性和內建支援使其保持普及度不斷增長,所以對“Go 擅長什麼”的答案一直在增長。
這裡我會提供一些想法,包括新到來的版本及 Go 世界最近其它吸引我的地方。這不是一個詳盡的列表,所以請讓我知道你認為在 2017 年 Go 還會發生哪些重要的事。
Go 的超級可部署性 + 外掛 = 容器、任何東西?
1.8 版本已經發布,我已經與其中幾個人交談過新增動態外掛會如何影響像容器之類的事物,動態外掛是為了載入在編譯時不是程式一部分的共享庫的程式碼。 動態外掛使容器中的高併發微服務變得更加簡單。 你可以輕鬆地以外部程式的方式載入外掛,同時具備在容器中微服務的所有好處:保護你的主程式不會崩潰,並且沒有任何東西會搞亂你的記憶體空間。 對外掛的動態支援應該是在 Go 中使用容器的福音。
關於專家現場 Go 培訓,請註冊 Go Beyond the Basics。
跨平臺支援仍在吸引開發人員
在 Go 開源之後的 7 年裡,它已被全球採用。Daniel Whitenack 是一名資料科學家和工程師,他為 Jupyter 維護 Go 核心,告訴我最近他在西伯利亞做資料科學和 Go 語言培訓,(是的,在西伯利亞!資料科學和 Go - 之後再細講一下...)並 “很驚訝地看到那裡 Go 社群是如此活躍和積極。” 人們繼續在專案中採取 Go 的另一個很大的原因是交叉編譯,對此,幾個 Go 專家解釋說這在 Go 1.5 版本中變得更容易了。來自其他語言(如 Python)的開發人員應該發現,在沒有 VM 的目標平臺上,能夠為多個作業系統構建捆綁的、可部署的應用程式是在 Go 中工作的關鍵。
在 1.8 版本中對跨平臺的支援,再加上提升了 15% 的編譯速度,你就可以看到為什麼 Go 是初創公司最喜歡的語言。
有興趣瞭解 Go 的基礎知識嗎?檢視 Go 基礎學習路徑 讓 O’Reilly 專家來帶你開始。
Go 直譯器在開發中;再見 Read-Eval-Print-Loop
有一些聰明的傢伙正在做一個 Go 直譯器,我一定會持續關注它。如你所知的那樣,有幾個 Read-Eval-Print-Loop(REPL)的解決方案可以用來評估表示式,以確保程式碼如你預期的工作,但那些方法通常意味著容忍一些不便,或需要費力從幾個方案中找到一個適合你的用例的。有一個健壯、一致的直譯器就太好了,一旦我瞭解到更多訊息,我會告訴你們。
在開發中使用 Go 複雜特性?觀看 O'Reilly 的影片訓練 中級 Go 。
Go 的 serverless - 會是什麼樣子?
是的,現在圍繞 serverless 架構(功能即服務(FaaS))有很多炒作。但有時候也有些捉摸不定的地方,那麼關於 Go 的 serverless 發生了什麼?我們能在今年看到一個 Go 語言原生支援的 serverless 服務麼?
AWS Lambda 是最知名的 serverless 提供商,不過 Google 最近也推出了 Google Cloud Functions。這兩個 FaaS 解決方案使你可以在無須管理伺服器的情況下執行程式碼,你的程式碼儲存在別人為你管理的伺服器叢集上,並且僅在觸發事件呼叫它時執行。AWS Lambda 目前支援 JavaScript、Python 和 Java,還可以啟動 Go、Ruby 和 bash 程式。 Google Cloud Functions 只支援 JavaScript,但很可能不久將支援 Java 和 Python。許多物聯網裝置已經使用 serverless 方案,隨著 Go 越來越多地被創業公司採用,serverless 似乎是一個可能的增長點,所以我在關注這些 serverless 解決方案中 Go 的開發情況。
已經有幾個框架可以支援 AWS Lambdas:
- λ Gordon - 使用 CloudFormation 建立、連線及部署 AWS Lambdas
- Apex - 構建、部署及管理 AWS Lambda 函式
- Sparta - AWS Lambda 微服務的 Go 框架
還有一個 AWS Lambda 替代品支援 Go:
- Iron.io:建立在 Docker 和 Go 之上;語言未知;支援 Golang、Python、Ruby、PHP 和 .NET
有關 serverless 架構的更多資訊,請觀看 Mike Roberts 在舊金山 O'Reilly 軟體架構會議上的演講主題:serverless介紹。
資料科學中的 Go
我在本文開頭暗示了這一點:也許令人驚訝的是很多人都在使用 Go 進行資料科學和機器學習。關於它是否適合還有一些爭論,但基於像 《Gopher 學院之 2016 年終》那樣的年度文章中,你會注意到 30 篇文章中至少有 4 篇是關於機器學習或分散式資料處理,它們正在像我們走來。
我之前關於 Go 的易部署性的觀點可能是資料科學家使用 Go 的一個關鍵原因:他們可以更輕鬆地在易讀而可用於生產環境的應用程式中向他人展示資料模型。與此相結合的是 Go 的廣泛使用(正如我前面提到的,它正變得越來越流行!),而且有資料專家建立“可用並且與其它程式配合”的程式。任何使用 Go 構建的應用資料科學家會在公司其他部分使用相同的語言,或者至少它非常適合現代架構。
更多關於 Go 的資料科學,Daniel Whitenack 寫了一個很好的概述,解釋瞭如何使用它: Data Science Gophers。
作者簡介:
O'Reilly Media 的監督編輯,與編輯團隊合作,涵蓋各種各樣的程式設計主題。
via: https://medium.com/@sconant/5-things-to-watch-in-go-programming-in-2017-39cd7a7e58e3#.8t4to5jr1
作者:Susan Conant 譯者:geekpi 校對:jasminepeng
相關文章
- 2017年最值得關注的設計工具
- Go 語言程式設計規範Go程式設計
- Go語言併發程式設計Go程式設計
- GO 語言的修飾器程式設計Go程式設計
- Go語言程式設計快速入門Go程式設計
- Go 語言的網路程式設計簡介Go程式設計
- GO語言泛型程式設計實踐Go泛型程式設計
- 許式偉《Go語言程式設計》章節摘錄:Go語言簡史Go程式設計
- 使用 Go 泛型的函數語言程式設計Go泛型函數程式設計
- 體驗go語言的風騷式程式設計Go程式設計
- 一個 Java 程式設計師眼中的 Go 語言Java程式設計師Go
- 一個Go語言程式設計的好選題Go程式設計
- 純函數語言程式設計的缺點函數程式設計
- 《Go 語言程式設計》讀書筆記(十一)底層程式設計Go程式設計筆記
- PHP 程式設計師轉 Go 語言的經歷分享PHP程式設計師Go
- C語言程式設計-漢字點陣C語言程式設計
- 分享Go語言的常用的五大IDEGoIDE
- 小眾程式語言同樣值得你關注
- Go語言設計模式彙總Go設計模式
- 《Go 語言程式設計》讀書筆記(四)介面Go程式設計筆記
- 《Go 語言程式設計》 讀書筆記 (八) 包Go程式設計筆記
- 《Go 語言程式設計》讀書筆記(十)反射Go程式設計筆記反射
- 《Go 語言程式設計》讀書筆記 (三) 方法Go程式設計筆記
- Go語言併發程式設計簡單入門Go程式設計
- go語言遊戲程式設計-Ebiten渲染一張圖片Go遊戲程式設計
- 為什麼Go是一種設計糟糕的程式語言Go
- GO語言必備的五大開源工具!Go開源工具
- 關於函數語言程式設計的思考(1)函數程式設計
- 關於函數語言程式設計的思考(2)函數程式設計
- 關於C語言的圖形程式設計薦C語言程式設計
- 程式設計師必知的程式語言編年史程式設計師
- 程式語言BASIC程式設計師的啟蒙語言C程式程式設計師
- 你為什麼不應該過度關注go語言的逃逸分析Go
- Coco學程式設計--《設計模式》,語言無關的好書 (轉)程式設計設計模式
- 函數語言程式設計functional programming的特點函數程式設計Function
- 《Go 語言程式設計》讀書筆記 (二)函式Go程式設計筆記函式
- 我關注的那些程式設計師大佬程式設計師
- 第二小節 go 語言設計Go