【技术猩球】七牛云姜智:Go+ 演进之路
姜智,七牛云QCDN技术经理,曾就职于朗讯、中兴。具备十余年服务端研发经验和多年的团队管理经验。对高可用、高性能服务端开发和微服务架构有深入理解。一直深耕于业务一线,致力于将对技术和架构的理解,在业务场景中完美落地。
如果说在云计算的时代里,没有人可以错过 Go 语言;那么在 Go 语言的领域里,没有人可以错过 Gopher China Con。七牛云作为中国 Go 语言第一个吃螃蟹的企业,CEO 许式伟是国内 Go 语言大中华区首席布道师,他在今年面向全球发布了为数据科学而生的 Go+ 。本次大会现场,七牛云技术经理姜智受邀分享了《Go+ 演进之路》的主题演讲。姜智从 Go+ 是如何火起来的、许式伟对 Go+ 的思考以及为什么做 Go+、为什么 Go+ 靶心是数据科学、Go+ 发布后目前已经具备了哪些特性、Go+ 的运行机制和逻辑等方面深度解析了 Go+ 的演进之路。
Go+ 发展历程
2020 年 7 月 5 日,七牛云 CEO 许式伟面向全球发布了为数据科学而生的开发语言 Go+ 。Go+ 的诞生,在 Hacker News 上引发热议,在 Twitter 上形成了一道壮丽的风景线,占据了 Github Go 趋势榜双榜冠军。
首先是数据科学的发展和变化。未来的数据科学将具备全领域、大数据、无处不在等特征。并且随着 DT 时代的到来,数字化信息(数据)极大化地产生,促使我们进入了 DT 时代,数据地位发生变化,由副产品上升为原材料(石油),无处不在,深植于业务流。Data Science 的地位变化,Data Science 将基础设施化,数学软件 (Application) 向基础设施 (Infrastructure)演进。
另外,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+ 的运行机制,包括:利用 Go+ 的词法分析,将 Go+ 源码生成 Go+ 的 token 序列;利用 Go+ 的语法分析,将 token 序列生成 Go+ 的抽象语法树(AST);Go+ 是如何基于双擎设计,将 Go+ 语法树转换成 bytecode 并运行,或者生成 Go 源码。
Go+ 下一步会是什么?
语言的选择标准必须包括:语法清晰简练和语法稳定容易学习。也希望语言的使用者是比较有探索精神的一个群体。Go+ 及其基于 Go 社区的用户群体刚好符合这些条件。当前 Go+ 的主要精力还是做它语法的一些实现,以及支持 Go 的特性。在维持 Go 的语法简洁性的本色之上,合理准入简化语法,是 Go+ 项目的核心战术工作。未来,七牛云希望借助更多开源的力量,用「坐十年冷板凳」的态度去探索及维护 Go+,以 Go+ 的力量助力数据科学。
