去年(2021年)Go+ 的 slogan 从 “面向数据科学” 的语言升级到了 “面向工程、STEM 教育与数据科学” 三位一体的语言。也就是说,我们希望 Go+ 可以同时被软件工程师、中小学生、数据分析师这三个截然不同的人群所广泛使用。
对 Go+ 来说,“面向数据科学” 这个目标注定有非常长远的路要走。所以去年 Go+ 的版本迭代主要精力都花在了 “低门槛” 上。我们努力让 Go+ 的使用门槛低到和 Python 相当的水平。这是从 Go+ 作为 “面向 STEM 教育”,作为一种中小学生就能够学习和掌握的教学语言而做出的努力。我认为这些努力对 Go+ 的发展来说非常重要。2022 年我们仍然会继续去加强 Go+ 在低门槛方向上的工作。
但是在去年年底的时候,我们将 Go+ 下一个里程碑(v1.2)的版本计划做了非常巨大的调整:我们从之前的一箩筐的 Go+ 生态发展的计划,调整成为就干一个非常硬的硬骨头:实现对 C 语言的完美支持。
为什么需要做这个改变?
因为到目前为止,Go+ 从 “面向工程” 这个目标来说,它只是 “更好的 Go”。客观来讲,这个 “更好” 并不足以让软件工程师们心动到改变自己的习惯,采用 Go+ 来进行日常的开发工作。这个 Why Go+ 如果回答不好,那么 Go+ 的面向工程这个目标就仅仅停留于口号。
Go 语言足够好,在它擅长的服务端开发领域上,你甚至几乎可以肯定地说它是最好的。但是在其他所有领域,无论是 PC、Mobile、Web、小程序、嵌入式、区块链与 Web3、大数据与 AI、编程教学领域等等,Go 都显得不够好。如果用学生来打比方,Go 像是一个偏科偏的非常严重的学生,有一门学科特别擅长考 99 分,但是其它学科都只是勉强的及格线。
是什么制约了 Go 语言在其他领域的发展?
我们以 Web3 为例。这很可能是与服务端开发最为接近,Go 最容易取得压倒性优势的领域。但是实际的战绩如何呢?我花时间对几十个头部的 Web3 项目进行了分析,最后的统计结果很意外:在这个领域 Go 语言的确采用率很高的确没错,但是有另一个语言 Rust 的采用率也很高,两者的采用率基本上接近 1:1,甚至一些项目同时采用 Go 和 Rust。
为什么会这样?在正统的服务端开发中 Rust 的采用率可能连 Go 的 1/10 都没有,为什么一个看起来完全类似的同样都是网络应用类的场景,其采用率居然有这么大的差别?
我知道一些人把这个事情归因到 Go 是 GC 语言,Rust 性能更好这一点上。但我认为这并不成立。如果对网络服务性能是重要的,那么在服务端开发(尤其是云计算)这样一个成本很敏感的领域,Rust 应该比 Go 更有市场竞争力才对。
我认为最有可能的关键因素是两个:
语言带给人的安全感