首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

与 Jupyter 交互的 Go 编程

最近几年,Go 语言变得非常流行。我是 Python 的狂热粉丝,三年前我的第一个业余项目也是用 Python 实现的。而现在我开始使用 Go 语言来取代 Python,因为不管是业余爱好的小项目还是公司里的大项目,Go 语言能让我的编码效率更高。

与此同时,随着机器学习和数据科学(data science)变得越来越重要,Python 也更加流行。在机器学习中首选 Python 有很多原因,其中一个原因是 Python 是为交互式代码编写和计算而设计的。另一个重要的原因是 Python 中有一个很好的交互式编程工具:Jupyter Notebook。

虽然我现在在许多以前使用 Python 的项目中使用 Go 语言,但我仍然需要使用 Python 进行机器学习研究和数据分析。Python 中的交互式编程和 Jupyter Notebook 的能力对我来说仍然非常有吸引力。我希望有一个真正有用的 Go 语言的 Jupyter 环境以及能够验证 Go 语言正确性的 Jupyter 内核。但现在还没有这样的项目,有些类似的项目已经终止。虽然其中有一些比较流行,但不适合实际使用,因为它们不支持类型安全、代码取消、代码完成、检查或显示非文本内容。

因此,我决定开发一个新的环境,从头开始在 Jupyter Notebook 上交互式运行 Go 语言。在这,我向大家介绍我构建的软件,以及像 Python 一样交互式编写和执行 Go 的新方法。

GitHub 上项目主页

我向大家介绍的项目是 yunabe/lgo,一个用于 Go 语言的 Jupyter Notebook 内核以及交互式解释器。详情请看以下仓库。

yunabe/lgo

在浏览器试一试

以下链接是 Go 语言的 Jupyter 线上运行环境:

mybinder.org

感谢 binder(mybinder.org), 你可以在你的浏览器上使用 binder 上的临时 docker 容器尝试 Go 语言的 Jupyter环境(lgo)。从上面的按钮打开临时的 Jupyter Notebook,享受交互式 Go 编程!

主要特点

像 Python 一样编写和运行 Go 程序。

Jupyter Notebook 功能

完全符合 Go 语言规范,同时 100% 兼容 Go 语言编译器。

拥有 Jupyter Notebook 一样的代码补全,检查和代码格式化。

显示图像,HTML,JavaScript,SVG 等。

控制台上的交互式解释器

完全支持 goroutine 以及 channel

安装

有两种方法可以将 Go 语言的 Jupyter 环境安装到你的计算机中。

使用预先构建的 Docker 镜像

源码安装(目前仅支持 Linux)

如果您想在计算机上快速尝试 Go 语言的 Jupyter环境,请先尝试 Docker 版本。 如果你使用 Linux 并且想要将 Jupyter 环境与 Go 环境集成到你的计算机中,那么你可以选择源码安装。 由于使用了进行回归,lgo 的代码在 go1.10 中运行起来很慢。 在 go1.10 修正 bug 之前,请使用 go1.9 来尝试 lgo 。 目前 lgo 在 go1.9 以及 go1.8 完美运行。

Windows 和 Mac 用户,请使用 Docker 版本,因为 lgo 不支持 Windows 和 Mac。你可以在 Windows 或 Mac 上的 Docker 来运行 lgo。

使用

像平常一样执行命令来启动 Jupyter Notebook。当你新建一份笔记时,请从菜单中选择。一旦创建了一个新的笔记,你就可以像 Python 那样交互式地编写和执行程序。

在 lgo 中,你可以通过将光标移动到标识符和按来显示变量、函数和类型的相关文档。您可以通过按来补全代码。如果要显示非文本数据,你可以参考这个例子来使用类型。

像控制台的解释器环境那样使用

你同样可以像使用解释器那样使用 lgo。在安装完成后,运行指令即可。当然,在这种模式中你也可以使用or来实现代码补全。

pyter console --kernel

In [1]: a, b := 3, 4

In [2]: func sum(x, y int) int {

: return x + y

: }

In [3]: import "fmt"

In [4]: fmt.Sprintf("sum(%d, %d) = %d", a, b, sum(a, b))

sum(3, 4) = 7

与现有框架的比较

对于那些了解其他现有的 golang Jupyter 内核的人,这里是与竞争对手的比较表。你可以阅读中的这部分获取更多细节。

了解更多

如果你想了解更多,请浏览本项目的主页并阅读中的介绍。此外,你还可以通过这些示例笔记中了解更多 Go 语言的Jupyter环境的真正用途。尽情享受 Go 语言的交互式编程吧!

via:https://medium.com/@yunabe/interactive-go-programming-with-jupyter-93fbf089aff1

作者:Yu Watanabe译者:7Ethan校对:polaris1119

本文由GCTT原创编译,Go语言中文网荣誉推出

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190102B080MV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券