2017 年 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介紹](https://www.safaribooksonline.com/library/view/oreilly-software-architecture/9781491976142/video288473.html?utm_source=oreilly&utm_medium=newsite&utm_campaign=5-things-to-watch-in-go-programming-body-text-cta)。
數據科學中的 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
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive