Go+语言迎来了它自2020年7月诞生以来的最新1.0版本。
这一版本被七牛云创始人许式伟称为:真正可以面向商业化、大型软件工程开发。
你可能会第一时间认为这门新编程语言会跟Go相关,后者目前已经成为国内云计算基础设施的主流语言选择,而七牛云也自始至终是Go语言的拥护者。但Go+与Go仍有很大的不同,用最简练的表述来说:它有Go之心Python之形,能够做到低代码、低上手门槛,最终希望面向编程教育、工程开发与数据科学,形成数据科学家与工程师互通的培养体系生态。
这一目标足够远大。
那么,Go+因何而来、为何而去,如何得到发展?许式伟作为Go+语言和社区的主要推动者,有着长期且清晰的判断逻辑。他认为几乎任何一门编程语言的发明,都是有目的的。“只是我们需要有一个非常有仪式感的呈现。让更多的国内开发者有这样一种共识。”
于是,Go+1.0在国内顶尖工程师专家、产业投资观察者、创业者,以及众多开发者的共同瞩目下,拉开了帷幕。
这份沉甸甸的“仪式感”也更像是一种破冰,打包送给所有对中国编程发展有期待的人。
两个趋势的印证
我们今天在谈的科学发展,已经不是过去单纯的计算科学,靠计算机推演理论、模拟现象。而是开始走到下一阶段,面向数据科学发展,利用计算机从海量数据中发现规律,通过数据驱动形成理论,诠释世界应该怎样驱动。
随着全球信息的爆炸式增长和数字化进程的不断推进,所有的行业都需要互联网化(产业互联网),这意味着对工程开发的人才需求会爆发式增长,工程人才的培养需要更为高效,工程开发的入门门槛需要更低。这是“工程与教学一体化”的时代需求。
DT时代的到来,数据科学的需求有了爆发式的增长,数据科学家、数据分析师的人才需求有了爆发式的增长。目前缺乏有效的数据科学家的培养体系,从工程师中招聘、培养数据科学家是非常理想的方式,这也是“工程与数据科学一体化”的自然结果。
数据科学家需要跟工程师对话,工程与数据科学存在一体化发展的趋势;与此同时,学生需要学习一种可以在未来应用的工程语言,工程与STEM教育同样也存在一体化发展趋势。这两个趋势的结合,就是编程语言“三位一体”的发展方向。
而这也是Go+的核心定位,融合了工程开发的Go、数据科学领域的Python、编程教学领域的Scratch,预计希望产生1+1+1>3的效果。Go+首先是一个静态语言,且语法完全兼容Go,但在形式上,Go+可能更像脚本语言,跟Python一样有同样低的学习门槛,这也就是上文提及的“Go之心Python之形”,使得Go+使用门槛是低的,但又具备静态语言的高运行效率。
Go+的“参考答案”
Go+虽然仍是一个初出茅庐,一时间很难与其他主流编程生态社区相抗衡的语言,但它会依据自身的优势特征制定了相应的阶段性发展策略。在此之前,许式伟用过去他对Go语言的精准判断,同样给Go+接下来的发展一个“参考答案”。
Go如今已经成为国内云计算基础设施的主流语言选择,但在变得流行之前,Go经历了很多迭代。以今日之视野看过去,Go的成功有三点要素:价值尺度、开源与社区生态、杀手级应用。
展开来讲:
首先是价值尺度的贯彻。
一是做到最精,将语言特性做到小而精;二是降低学习成本,一两周便可掌握入门,同时也将持续保持语言特性的稳定性,不会在未来提升学习成本;三是在不增加使用负担的情况下,持续提升性能。
其次,替代不是它的本色,与开源社区兼容并蓄才是它的本色。
Go+希望做到三个兼容:一是兼容Go的语法特性,在其基础上添加的特性最小化(目前Go+已经有对Go有90%的兼容能力);二是兼容Scratch的引擎能力和设计,在此基础上实现自动代码转换;三是兼容Python,计划可以直接导入Python包,到2023年实现对Python的兼容。
再然后是具备一个杀手级应用。
虽然Go+定位于“三位一体”,但这并不意味着它会一上来就直接切数据科学场景。在解决数据科学任务方面,Python语言社区在库的数量、语言的简单性方面确实有一定优势,且一定程度上形成了强大的生态。一开始就“鸡蛋碰石头”,并不是个好方法。
为此,Go+会从工程与STEM教育一体化开始。相较之下,Scratch只是个玩具语言,并不适用于后期对工程科学的深入。Go+这是沿用了Code Monkey的教学体验,直接使用代码编程,学习门槛低,并进一步强化产学研融合发展,其优势得以体现。这种策略在过去的一年中已经得到有效性的印证。
目前Go+团队提供了兼容Scratch的2D游戏引擎,可便于学生学习Go+。据了解,此次Go+1.0版本中,一半的小游戏都是一位12岁的学生用Go+写出来的。
应用深化下的探索
Go+1.0仍处于初级的探索阶段。STEM教育仅仅只是Go+的其中一个使用场景。
而面向工程开发,许式伟还指出,如游戏开发、职业培训(包括少儿编程),以及轻量型的IoT场景等,同样也是Go+的潜力应用场景。
其背后的一个重要原因在于,Go+所具备的低代码、去复杂性、低龄化的特性,即语法简单,能够贴近数学的表达方式去工程化,同时完成功能所需的代码量更少,每行代码的能力更强了。这种特性恰恰能够满足越来越多市场中对低门槛工程能力的需求。
而回到当下,Go+仍需要快速获取更多开发者的关注。
例如,社区需要加强对IDE的支持,提升开发者的使用体验,不弱于Go的开发体验;推出生产级游戏引擎;完善数据科学相关功能,支持Jupyter;借助七牛云PaaS的能力,开发者可以通过PaaS进行应用构建,实现对Go+的使用等等。
因为相信所以看见
200多年前,当一台织布机学会读穿孔卡片时,很难有人想象这竟为后来的计算机编程语言创造了先河。
这件事情说来也奇怪,虽然计算机语言发展到如今有上千种,主流和新贵的两极化趋势亦十分明显,但语言仍在快速演进。
在很多人眼里觉得,技术大牛们一言不合就写了个新编程语言,丝毫不顾忌后来人学习和使用门槛会有多高。而在一代又一代的持续改进过程中,这些编程语言逐渐成为在Web、后端、数据库中间件、机器学习等场景下的核心应用语言。
许式伟也表达了另一个观点。如今国内大量的程序员是做前端开发,只有少部分在做后端。随着企业上云动作基本完成后,下一阶段是对云上、云原生下各行各业进行全链路的数字化、智能化,那么数据科学的市场空间逐渐扩大起来后,新场景下开发者也将面临新的转型挑战。此时,编程语言作为一项生产力工具,能不能及时甚至较早就能响应市场的需求?
值得一提的是,Go+语言在国内其实相比国外迎来了更快的发展。而在不久前的GitHub Trending上,Go+首次冲到了榜首。在现在看来可能仍微不足道,但在中国开发者“虹吸效应”溢出的时代下,还有什么不可能发生的事呢?
(雷锋网)