TranslateProject/translated/tech/20170103 5 things to watch in Go programming in 2017.md
jasminepeng bd6a93a754 校对完毕
校对完毕
2017-01-10 16:47:19 +08:00

7.8 KiB
Raw Blame History

2017 年 Go 语言编程值得关注的 5 点

今年像动态插件serverless 的 Go 以及 HTTP/2 这些创新对你的开发意味着什么?

Go 1.8 将于下个月发布,它将有几个新功能,包括:

  • [HTTP/2 Push] 1
  • [HTTP 服务器平滑关闭] 2
  • [插件] 3
  • [缺省 GOPATH] 4

这些新功能的影响力取决于你和开发团队如何使用 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 基础学习路径 让 OReilly 专家来带你开始。

Go 解释器在开发中:再见 Read-Eval-Print-Loop

有一些真正的聪明人正在做一个 Go 解释器,我一定会持续关注它。如你所知的那样,有几个 Read-Eval-Print-LoopREPL的解决方案可以用来评估表达式并确保代码按预期工作但这些方法通常意味着容忍不便的事项或费力从几个方案中找到一个适合你的案例。有一个健壮、一致的解释器就太好了一旦我了解到更多我会告诉你们。

在开发中使用 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 年 12月的年度文章那样,你会注意到 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中国 荣誉推出