如果说在云计算的时代里,没有人可以错过 Go 语言;那么在 Go 语言的领域里,没有人可以错过 Gopher China Con。近日,Gopher China 2020 大会在上海盛大开幕!七牛云作为中国 Go 语言第一个吃螃蟹的企业,CEO 许式伟是国内 Go 语言大中华区首席布道师,他在今年面向全球发布了为数据而生的 Go+ 。
本次大会现场,七牛云技术经理姜智受邀分享了《Go+ 演进之路》的主题演讲。姜智从 Go+ 是如何火起来的、许式伟对 Go+ 的思考以及为什么做 Go+、为什么 Go+ 靶心是数据科学、Go+ 发布后目前已经具备了哪些特性、Go+ 的运行机制和逻辑等方面深度解析了 Go+ 的演进之路。
七牛云技术经理姜智
Go+ 发展历程
2020 年 7 月 5 日,七牛云 CEO 许式伟面向全球发布了为数据而生的开发语言 Go+ 。 Go+ 的诞生,在 Hacker News 上引发热议,在 Twitter 上形成了一道壮丽的风景线,占据了 Github Go 趋势榜双榜冠军。
关于为什么是 Go+,为什么技术开发者纷纷关注 Go+,Python 与 Go+ 的区别等问题,主要有下面几方面的背景和原因:
1、数据科学的发展和变化,未来的数据科学将具备全领域、大数据、无处不在等特征。
2、DT 时代的到来。数字化信息(数据)极大化地产生,促使我们进入了 DT 时代,数据地位发生变化,由副产品上升为原材料(石油),无处不在,深植于业务流。Data Science 的地位变化,Data Science 将基础设施化,数学软件 (Application) 向基础设施 (Infrastructure)演进
3、Data Science 本质上是算力革命,是计算密集型的业务。Python 不会是 Data Science 的终局。Python 有很多强大的地方,非常灵活,但灵活性却导致 Python 有其局限。相比之下,Go 语言语法简洁。Python 是脚本语言,无法承担算力密集型。所以,Python 成不了基础设施(Infrastructure)。
未来的数据科学,必然是数学软件和通用语言的结合,所以 Go+ 来了!
Go+ 特性与实现解析
这一部分,姜智在现场详细为大家介绍了 Go+ 当前所处的阶段,支持了哪些语言特性、具备的功能,同时 Go+ 是如何去实现这些特性的。
Go+ 的主要特性:
1、 Go+ 针对数据科学设计了简洁而易用的语法,比如 Go+ 对 List 和 Map 简洁实现,以及利用 List 和 Map 进行计算时的简洁语法。
2、Go+ 保持对 Go 兼容:Go+ 目前支持了大部分 Go 语言的特性(比如流程控制、goroutine、channel、defer等);Go+ 可以 import 所有 Go 的包;所有 Go+ 的包都能被转换成 Go 的包。
3、Go+ 独有的双擎:bytecode backend 和生成 Go 源码运行。
4、Go+ 实现了自己的 playground、REPL、vscode 插件等。
基于一个简单的示例,姜智在现场演示了 Go+ 的运行机制,包括:
1、利用 Go+ 的词法分析,将 Go+ 源码生成 Go+ 的 token 序列。
2、利用 Go+ 的语法分析,将 token 序列生成 Go+ 的抽象语法树(AST)。
3、Go+ 是如何基于双擎设计,将 Go+ 语法树转换成 bytecode 并运行,或者生成 Go 源码。
Go+ 下一步会是什么?
语言的选择标准必须包括:语法清晰简练和语法稳定容易学习。也希望语言的使用者是比较有探索精神的一个群体。Go+ 及其基于 Go 社区的用户群体刚好符合这些条件。
当前 Go+ 的主要精力还是做它语法的一些实现,以及支持 Go 的特性。在维持 Go 的语法简洁性的本色之上,合理准入简化语法,是 Go+ 项目的核心战术工作。未来,七牛云希望借助更多开源的力量,用“坐十年冷板凳”的态度去探索及维护 Go+,以 Go+ 的力量助力数据科学。