七牛云姜智:Go+ 演进之路
如果说在云计算的时代里,没有人可以错过Go语言;那么在Go语言的领域里,没有人可以错过GopherChinaCon。近日,GopherChina2020大会在上海盛大开幕!七牛云作为中国Go语言第一个吃螃蟹的企业,CEO许式伟是国内Go语言大中华区首席布道师,他在今年面向全球发布了为数据而生的Go+。
本次大会现场,七牛云技术经理姜智受邀分享了《Go+演进之路》的主题演讲。姜智从Go+是如何火起来的、许式伟对Go+的思考以及为什么做Go+、为什么Go+靶心是数据科学、Go+发布后目前已经具备了哪些特性、Go+的运行机制和逻辑等方面深度解析了Go+的演进之路。
七牛云技术经理姜智
Go+发展历程
2020年7月5日,七牛云CEO许式伟面向全球发布了为数据而生的开发语言Go+。Go+的诞生,在HackerNews上引发热议,在Twitter上形成了一道壮丽的风景线,占据了GithubGo趋势榜双榜冠军。
关于为什么是Go+,为什么技术开发者纷纷关注Go+,Python与Go+的区别等问题,主要有下面几方面的背景和原因:
1、数据科学的发展和变化,未来的数据科学将具备全领域、大数据、无处不在等特征。
2、DT时代的到来。数字化信息(数据)极大化地产生,促使我们进入了DT时代,数据地位发生变化,由副产品上升为原材料(石油),无处不在,深植于业务流。DataScience的地位变化,DataScience将基础设施化,数学软件(Application)向基础设施(Infrastructure)演进
3、DataScience本质上是算力革命,是计算密集型的业务。Python不会是DataScience的终局。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+独有的双擎:bytecodebackend和生成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+的力量助力数据科学。