2007年,Google的三位工程师Rob Pike、Ken Thompson和Robert Griesemer希望为 Google 的工作流设计一款更好的语言,构建简单、快速、可靠的应用程序,于是他们创造了 Go 语言。
(Robert Griesemer, Rob Pike, and Ken Thompson)
2009年,Go 语言正式推出,成为开放源代码项目。
2011年,许式伟创办七牛云时,选择用 Go 语言来构建核心产品,是国内第一批在 Go 语言方面进行实践的公司,七牛云也因此成为全球最早将 Go 语言大规模应用于商业化产品的团队。
2020年,根据HackerEarth对来自76个国家和地区的16000多名开发者的调查,Go语言已成为当前最受欢迎的编程语言。
2020年7月,七牛云向全球发布Go 语言,对Go语言进行补充,打破了国人在数据科学语言方面“0”的空白。
“三位一体”趋势催生编程语言Go
据许式伟介绍,第一个顺应工程开发、STEM教育、数据科学“三位一体”发展潮流的编程语言。
如今,所有行业都需要互联网化,这意味着对工程开发人才的需求将出现爆发式增长,工程人才的培养要更高效,工程开发的入门门槛也要更低,这是工程与教学一体化的需求。而在工程实践中,基础的汇编语言和机器语言早已无法满足现实需求。由于目前所用模型的动态类型过于灵活、代码可读性较差、运行速度较慢,作为后端工程代码难以维护。在编程教学方面则存在教学难度大、效率低等棘手问题,其语法要求的精确性、学习结果的自导性、后期配置问题的复杂性都在极大程度上阻碍了编程教学,需要一种更高级的编程语言。
与此同时,随着数据爆炸式增长和数字化进程不断推进,对数据科学的需求有了爆发式增长,对数据科学家、数据分析师等人才的需求也有了爆发式增长。但目前缺乏有效的数据科学家培养体系,从工程师中招聘、培养数据科学家变成了理想的方式,这是工程与数据科学一体化的结果。
许式伟解释到:“工程与教学一体化、工程与数据科学一体化,这两个趋势的结合,就是编程语言三位一体的发展方向。”
Go :让商业组织和个人受益于数据科学
熟悉编程语言的人都知道,相比脚本语言,静态语言更具有生命力,而在静态语言中,Go语言最为简洁,学习门槛最低。
所以,在Go 的基础设计理念中,Go 继承了Go的开发理念,也属于静态语言,语法更加简单、优雅,与Go完全兼容,还新增了12个语法;在形式上,Go 也比Go更像脚本,简化了使用门槛,比Go更易学易用,处理数据的能力更强大,每行代码的能力也更加强大,完成功能所需的代码数量更少。Go 还支持双引擎,既支持静态编译可执行文件,也支持编辑成字节码方式解释执行。此外,Go 还具有低代码化、去复杂性、低龄化、去工程化、投入产出比高、表达能力强等优势,可以说是性价比最好的语言。
作为完全由国内团队开发、开源,自主可控的编程语言,Go 解决了数据科学家的培养问题,让程序员和数据科学家统一使用同一种语言,让程序员更容易向数据科学家转换。
对此,许式伟表示,Go 的愿景就是融合工程开发的 Go、数据科学领域的Python、编程教学领域的Scratch,以Python之形,结合Go之心,让工程师不需要学习新的开发语言,就能处理数据;让初学者学习编程、开发作品的门槛更低,让任何商业组织、个人的决策,都能受益于数据科学的进步。
Go 凭什么胜过其他数据科学语言?为什么是Go ?
那么,与其他较为成熟的数据科学语言相比,Go 拥有哪些优势呢?
许式伟指出,在众多性能很好的数据科学语言中,Go 是使用门槛最低的。因为工程师要解决复杂性问题,数据科学家要解决商业问题,他们对更简单、更高效的处理手段有强烈的需求。而且,数据科学的需求在变化:计算参数越来越多,计算过程越来越复杂,计算时间越来越久。他们选择技术路线时会发现:Python等脚本语言的运行效率较低,静态语言的运营效率较高。
具体来说,与Go相比,Go 更适用于大型软件工程和工程的开发,并且进入了数据科学领域。虽然Go是最简单的静态语言,但使用门槛较高,在语法和结构上不如 Go 精简。
与 Python相比,Go 在语法表达方式更接近于自然语言,有理数表达更贴近数学的表达方式;Python是数据科学,但Go 不止于数据科学,也可应用于大型软件工程开发,工程能力更强。
与 Scratch 相比,Go 沿用了Code Monkey的教学体验,直接用代码编程,学习难度并不比积木式编程的门槛高,学习曲线具有延续性,较为平滑。Scratch则是玩具语言,只能用于教学,它用积木式的方式学习编程,比较自然直观,但和真正的工程体验是不相符的,到了教学后期就会被抛弃。Go 创新性地实现了工程与教学一体化,学习的是工作语言,有助于教学体验,教学时可以做出更具有生产体验的作品,学生的成就感更强。
Go 迎升级,1.0版问世
不过,作为一门新的语言,从通用角度来说,Go 还需要加强IDE的支持,提升开发者的使用体验——不弱于Go的开发体验。许式伟计划,在未来三年内实现Go 对Python的兼容,七牛云的PaaS能力也将通过Go 来提供。
可喜的是,在Go 发布一年之后,近日 Go 1.0版本问世。许式伟指出,2020年诞生的Go 还不能用于生产,而Go 1.0已经可以用于工程开发了,语言的使用门槛也进一步降低,更接近自然语言,更适合STEM教育场景。此外,Go 1.0还自带兼容Scratch的2D游戏引擎,便于学生学习。
特别值得一提的是,Go 1.0贡献团队里还有一个12岁的小朋友,Go 1.0里约一半的小游戏都是由这位小朋友用Go 写出来的。充分体现了Go 1.0适合编程教学、入门门槛低、方便小朋友学习的优势。
Go 或成统一未来的编程语言
在业内人士看来,Go 非常有成为未来流行语言的潜质,因为Go 在STEM教育领域中并没有很强大的对手。按照目前的编程人才培养方式,需要多门语言,第一门往往是Scratch,但Scratch是单纯面向编程教学的,不足以培养工程人才。如果涉及生产级的应用还需要另学其他语言。如果用Go 来进行编程教学,就可以从头学到尾,这对工程人才的培养是革命性的进步!
许式伟表示,编程之所以会成为人类文明的基础设施,是因为它改变了人类记录工程技术的方式。但目前编程语言还有很多分支,在程序员群体中还没有统一。“未来的编程语言会实现统一,这也是我们为什么要追求‘三位一体’的原因。人类文明的密码不需要多个语言,未来只需要几门编程语言。”许式伟总结到。