年4月,七牛云CEO许式伟以“Go+与数据科学”为主题,分享了自己团队孕育的新编程语言——Go+的设想和规划。六个月后Go+1.0版本的发布,实现了国人数据科学语言“从0到1”的突破。
而在数字信息爆炸式增长的今天,仅仅突破“0”显然不够。面对编程人才缺口,工程开发与数据科学之间语言不互通等现实问题,Go+的解法是什么?而Go+又具备了什么特质,让我们对它的未来充满期待?
编程语言巴别塔
《圣经》中记载,人类联合起来兴建希望能通往天堂的高塔——巴别塔;为了阻止人类的计划,上帝让人类说不同的语言,使人类相互之间不能沟通,计划因此半途而废。巴别塔也成为语言不通,沟通障碍的象征。
人才是实现发展的第一资源。当下产业互联网蓬勃发展,随着数据时代到来,社会对工程开发和数据科学人才的需求量超乎以往。
高效培育工程开发人才的关键在于降低工程开发入门门槛,从工程师群体招聘及培育未来的数据科学家则是目前数据科学人才培育的理想方式。因此编程教学、工程开发和数据科学这三个领域的衔接和互通尤为重要,然而当前三个领域的主流编程语言各不相同,也各不相通。
编程教学领域中,教学难度大、效率低、周期长等现实问题始终存在。年,玩具语言Scratch横空出世,其积木式逻辑和自然直观的表现形式很大程度上解决了编程教学入门门槛高的问题。
但是社会中真实的工程开发显然不是简单的搭积木游戏。Scratch语言学习过程与真正工程开发体验是不相符的,这一事实也导致Scratch语言只能被用于教学,甚至在教学阶段后期便会被抛弃。对于初入工程开发阶段的编程人才而言,另学其他编程语言几乎是家常便饭,而能应用于工程开发的编程语言仍然存在入门门槛高、培训周期长等问题。
在真正运用编程语言的工程开发和数据科学领域,它们对于编程语言的诉求各不相同。C、Go等静态语言运行效率较高,适合对程序运行速度有高要求的工程开发程序员。相对的,虽然Python等脚本语言运行效率低,但是其单步执行方式更适合重视每一步计算结果的数据科学家。而当数据科学家在最终交付使用模型时,他仍会希望模型执行效率最大化,这时高效的静态编译执行也会成为他的首选。
不同工作模式下,甚至是不同工作阶段中,语言使用者的诉求都会有所不同,而静态和脚本语言互不相通导致编程人员需要进行语言切换。这就是一件成本极高的事情。
因此,为了实现教学、工程和数据三领域的“三位一体”,新编程语言在保证功能强大和上手门槛低的基础上,还要能够满足程序员和数据科学家对于编程语言的不同需求。
三位一体,推倒巴别塔
年,一门名为“Go+”的新编程语言在许式伟的手中初有模样。许式伟这样描述设计Go+的初心与核心思想,“我们试图用Go+来统一程序员和数据科学家,让他们之间有共同话语,让双方能自然对话”。
作为一门能够正式应用于工程与数据的编程语言,Go+兼容Go语言,拥有强大数据处理能力的同时,强化每行代码表达能力,使完成功能所需代码量更少。
为什么选择兼容Go语言?
首先Go+必须是静态语言。编程语言的发展缓慢,需要长时间积累用户,所以语言应有能够跨越周期的生命力,语言设计并不能追随潮流,而是应寻找那些能够跨越周期的元素。静态语言符合语言发展趋势,脚本语言是特定历史阶段的产物,在未来“三位一体”的发展趋势中,静态语言会占据主导地位,脚本语言发展空间有限。
接着,在众多静态语言中选择Go的原因是Go的语法设计最为精简,学习门槛最低。由于数据科学语言门槛要更低,所以Go+在简化上手难度上做到了青出于蓝而胜于蓝,1.0版本的门槛甚至比Python更低,同时也兼容了Scratch的2D游戏引擎,使Go+更适合STEM教育的场景。
即便是处于少儿阶段的孩童也可轻易地理解并运用Go+语言。Go+1.0贡献团队里有一位12岁的小朋友Ken,他能够理解并自如地使用Go+编写了许多小游戏。其中猴子过河、飞机大战等作品,虽然画面稍显稚嫩,但是其成熟的内置逻辑和游戏体验令人赞叹。
Go+沿用CodeMonkey的教学体验,直接使用代码编程,学习难度低,且所学即所用,应用Go+教学时能够做出具有生产体验的产品,学习曲线具有延续性,这对工程人才的培养是革命性的进步。
如果说功能强大是基础,降低门槛是超越,那么双引擎就是革新。
Go+是唯一一个选择了双引擎的静态语言,既支持静态编译,也支持可解析执行,同时兼顾便捷与效率。
在工程开发领域,Go+继承Go的开发理念,同样适用于大型软件工程开发,而语法和结构更为精简;在数据科学领域,Go+的语法表达方式比Python更接近自然语言,内置Pyhton所不具备的有理数支持。而和Go与Python的区别中最为重要的就是,Go+可以在工程开发和数据科学两个领域同时发光发热。
Go+从设计理念到语言特性均紧紧围绕“三位一体”,融合工程开发的Go、数据科学的Python和教学领域的Scratch,让程序员与数据科学家沟通无碍,使初学者更易入门。
稳健基础建设是语言延续的根本
Google开发了许多编程语言,但并不是所有的语言都像Go语言这么成功。究其原因,Go发明人RobPike彻底贯彻自己所言“少就是指数级的多”,将语言特性最小化作为Go的最大卖点。
Go作为一门“年轻”的编程语言,现在已经进入编程语言排行榜前20。字节跳动、Bilibili等大厂都在生产环节应用Go语言。我们有理由相信,兼容Scratch和Go的Go+拥有更大的发展前景。
当然,Go+开发团队不会让自己的心血空有前景,没有计划。
除了加强集成开发环境(IDE)的支持,提升开发者使用体验这样的常规操作,Go+最先切入STEM教育,也是目前应用最成熟的一个领域,学习网站等后续配套服务正在跟进。未来三年内,Go+也将实现对Python的兼容,彻底实现工程开发与数据科学的无障碍交流。
Go+语言发明人许式伟认为,未来编程会成为人类文明的基础设施,因为它改变了人类记录工程技术的方式。他也相信,虽然编程语言目前还有很多分支,没有像数学语言经过千百年的演变已经达成全球统一,但未来编程语言的发展趋势一定是收敛统一。人类文明密码不需要多个语言,未来只需要少数几门编程语言。
相比启迪西方文明的希腊文,许式伟更希望Go+能够成为秦朝统一文字——小篆。这也是“三位一体”的Go+所背负的期待。