2017 年 Go 語言程式設計的五大關注點

Susan Conant發表於2017-02-28

今年像動態外掛,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

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關文章