Go+: 编程语言跨界之旅
一则在程序员圈广为人知的笑话:如何让一群程序员在最短的时间争吵起来?只要告诉他们,“PHP 是最好的语言。”
这只是编程语言的无数争论的一个缩影,在最新的TIOBE 语言排行榜中,Python 首次超越C,成为最受欢迎的编程语言。在过去 20 年中,这份榜单记录了无数编程语言的流行和趋势。
人们难免会产生疑惑,我们是否真的需要那么多种编程语言,我们有没有可能用同一种编程语言来解决大多数问题?
“Go+ 的目标,是跨界融合,”七牛云创始人,Go+ 语言的创造者许式伟接受记者采访时表示,“我们的第一个目标是工程和STEM 教育的一体化,下一个目标是工程和数据科学的一体化。”这两个一体化,就是被许式伟称为“三位一体”的编程语言 Go+ 的设计目标。
Go+ 语言是许式伟在一年前推出的,基于 Go 的一种静态语言。近日,Go+ 推出了1.0版本,以工程、STEM 教育和数据科学为目标,正式成为生产级的编程语言。
编程语言的三个维度
在许式伟的眼中,一个编程语言的流行有三个维度,分别是语言的价值尺度,开源社区生态以及杀手级应用。在 Go 语言还在“婴儿期”时,许式伟看出了其在这三个维度的优势,便坚定的认为 Go 语言必定会流行。在多年推广和使用 Go 之后,他对这三个维度的理解更加深刻。 Go+ ,就是其思考的结果。
首先是价值尺度,Go 语言核心的价值尺度就是语言的最小化特性,即“少就是指数级的多”。Go 语言的语言特性少,但是能用最精简的特性去完成功能。Go+ 在基于 Go 的基础上,进一步优化。受益于精简的语法特性,Go+ 的入门门槛进一步降低。同时,语言本身要保持稳定,C 语言出现了五六十年,但是今天看到的样子还是和当初一样,这也是它可以长时间排名第一的原因。Go+ 在其最新发布的1.0版本中,已经将绝大部分语法和特性都已经固定下来。还有性能,在不增加使用者的额外负担的情况下,语言需要天然的具备性能优势,而不用开发者做额外的优化。
开源和生态,是语言流行的第二维度。编程语言是非常底层且靠近内核的东西。让一个程序员切换语言,是一件非常困难的事情。需要一个非常有力的逻辑才可以做到。Go+ 选择的逻辑是开放和兼容,继承社区生态。在工程领域,Go+ 兼容 Go ,是 Go 的超集。这样就将Go 开发的所有生态都继承过来。而教育领域已经有一个非常厉害的语言Scratch,Go+ 在引擎上完全兼容。而数据科学的生态中,Python 是目前绝对的王者。Go+ 也计划可以直接导入Python包,到2023年实现对Python的兼容。
最后促进一个语言流行的是杀手级的应用,Go 的杀手级应用是后端领域。目前几乎所有云计算的基础设施,都是 Go 写的。而 Go+ 的杀手级应用,根据许式伟的设计,是从工程和STEM 教育一体化的融合开始,从工程师的培养体系构建开始。
12岁的Go+ 贡献者
“我们从工程师的培养体系开始,我希望通过这个变革让中国的工程师远远超过其他国家。”许式伟的这个愿望,来源于 Go+ 低代码化、去复杂性、低龄化的核心逻辑。
实际上,在 Go+的贡献者中,年龄最小的只有12岁。有一半的游戏案例的代码都是这位小朋友写的的。这里面其实蕴藏着一个问题,为什么Go+ 可以做到?
七牛云CEO 许式伟
学习 Go+ 语言,并不需要特别多的前置条件,有一些英语能力,有一些基础的逻辑能力。“二年级8岁,差不多就可以逐步开始了”,许式伟认为,“当然,如果认为太激进,10岁开始也没有问题”。Go+ 的门槛,实际上比 Python 还要低,因为Python语言本身还是有一些复杂性。Go+ 的目标,是在触达初学者时,进一步降低入门的难度。许式伟认为,语言设计好不好的标准之一就是中小学生学不学得会。
Go+ 隐蔽了工程上的复杂性,初学者不用去理解什么是函数,什么是包等工程上的概念。这些概念对于小朋友太复杂。
在语法层面,Go+ 更加贴近自然语言的表达,许式伟解释:“我们一直试图消除大家对编程的恐惧,编程和写文章一样。因为编程语言的语法比自然语言少太多了。”
Go+ 在 STEM 教育领域对标 Scratch ,迈出的第一步是生态资源兼容。所有基于Scratch的教育资源都可以直接在 Go+ 的体系下使用。而 Go+的杀手锏,是产学研融合。Scratch 是做不到这一点的,因为没人会真正把用 Scratch 用在工程领域。Go+ 的优势,是从入门到实际工程,用的都是同一种语言,直接把生产力工具推到教育场景下,学到的知识能够直接去创造真实的工程。Go+ 以此尝试解决编程教育反馈环太长的问题。
Go+的工程开发能力是工程和教育一体化的基础,否则 Go+ 也会和Scratch一样,成为一种玩具语言。Go+在工程师培养体系上的期望,不仅仅是 STEM,还包括职业教育,为很多公司去培养急需的编程人才,这也是工程师培养体系的一部分。
编程语言的融合之路
Go+ 从设计之初,便选择了融合。最新的口号也体现了这一点:“for engineering,STEM education,and data science”。许式伟介绍道:“语言的底层逻辑是一致的,大家需要的,其实是低代码,低龄化的工程能力”。看起什么都想做的 Go+, 其实只想把这一件事做到最好。
未来十年,软件自动化还有会巨大的发展,还会有更多的行业被互联网席卷。对工程师来说,Go+ 带来的变革是提供了一个简洁的,连小朋友都能掌握的一种语言用于工作。对小朋友来说,从入门开始,学习的就是将来可以用来工作的语言。
未来五十年,软件自动化将从代码驱动转向数据驱动,这代表着数据科学家人才需求的爆发性增长。数据科学家的综合能力要求非常高,包括工程能力,数学功底和商业嗅觉。而现在的数据科学家的培养体系还不成熟,好的培养途径还是要从工程师里来。
Go+ 工程与数据科学的融合,为解决数据科学家的培养提供了一种可能。数据科学领域有自己的专属语言,如 R语言、Julia。但使用最广泛的语言还是 Python。这背后的道理很简单,Python工程师足够多,而数据科学家太少。Python 的流行本身就代表了一个重大的趋势,即工程和数据科学家的一体化。Go+的低门槛,让数据科学家也能很快上手,并可以和工程师用同一种语言进行对话。
国产开源的商业化之路
随着国内互联网行业发展,涌现了很多优秀的应用和框架。但在编程语言的层面上,一直都缺乏国人的身影,这也跟IT行业首先在国外兴起有关。但许式伟认为,“我们已经想好了Go+的成长路径”。他对做好 Go+ 充满信心。
作为一个 PaaS 企业,提供的核心产品便是生产力工具,而编程语言就是最基础的生产工具。因此七牛云有动力,去做一款编程语言并将其开源。Go+ 在七牛云的使命就是去触达并占领开发者群体的入口。在七牛云的规划中,未来其PaaS能力都会通过 Go+ 提供。
Go+ 要做的事情很专一,就是确保它生产级的水准。语言是有虹吸效应的,Go 之所以在国内这么流行,一方面是做的确实非常好,另一个则是 Go 的应用领域是后端开发,在国内也有着巨大的需求。实际上Go+ 凭借其低代码,低龄化的特性,足以超越 Go 的局限,应用会更加广泛。许式伟表示:“在 Go+之前,所有的编程语言都认为它是给工程师用的,而Go+是认认真真告诉大家,编程语言是所有人都要用的。”
面对所有人都可能面对的编程问题,苹果也推出过一个基于 Swift 语言的“人人能学编程”的项目,但Swift本身门槛较高。目前除了传统大型工程开发需要非常高门槛的能力之外,新增的很多代码需求都是低代码需求,且需求十分庞大。因此,低门槛的语言工具,实际上是整个社会的诉求。
对于 Go+开源和商业化,许式伟也有自己的理解,“开源是 PaaS最好的商业模式”,他解释道,“基础语言一定是开源的,因为大多数人都需要的东西,大概率是免费的”。开源的目的是为了吸引更多的使用群体,共建语言生态。而商业化的目标,则是通过庞大的语言使用者基数,去转化其中专业性的需求。
开源增加了巨头们的“抄袭成本”。因此,选择开源,实际上是构建竞争壁垒的最佳手段,也是对知识产权的最大保护。
未来世界,我们需要什么样的编程语言
编程语言出现的时间比自然语言晚了很多,但它的出现改变了人类记录工程技术的方式。随着社会的发展,科技的进步,编程会成为人类文明的基础设施。人类工程技术的规则,行为和范式,都会被编程语言记录下来。未来人类对代码的依赖度会前所未有的高。如果没有掌握编程能力,就无法理解工程技术,获取的知识可能不足所有知识的千分之一。
人类文明另一个重要部分:数学,它的语言是统一的,但编程语言目前还没有做到。而Go+的定位——工程开发的 Go、数据科学领域的 Python、编程教学领域的 Scratch,工程和 STEM 教育一体化,工程和数据科学一体化,恰恰正是充满希望的一个全新尝试。