柴树杉:面向数据科学领域的新语言,Go+蓄势待发
共 2207字,需浏览 5分钟
·
2021-03-13 03:56
在上个世纪 70 年代,贝尔实验室的 Ken Thompson 和 Dennis M. Ritchie 合作发明了 UNIX 操作系统,同时 Dennis M. Ritchie 为了解决 UNIX 系统的移植性问题而发明了 C 语言,贝尔实验室的 UNIX 和 C 语言两大发明奠定了整个现代 IT 行业最重要的软件基础。到了 80 年代中期,Rob Pike、Ken Thompson 等贝尔实验室的工程师们已经开始研究下一代的分布式系统 Plan9。在 Plan9 系统之上就曾经出现过一个名字为 Aelf 的并发编程语言,它是增加了 proc、task 和 chan 等特性的 C 语言(据说 C 语言之父喜欢 Alef 语言)。而 Alef 最终演变成为了 Go 语言,Plan9 操作系统也被 Kubernetes 系统替代。因此我们可以通过参考对比 C 语言的发展历史来预测 Go 语言的未来发展路线,对比如下:K&R 圣经:在 C 语言发明之后约 5 年的时间之后诞生了 K&R 圣经,同样在 Go 诞生约 5 年后诞生了 D&K 圣经。交互式语言:在 UNIX 系统的第一个 10 年内诞生了 C 语言实现的各种 shell(还有 sed、awk 等脚本语言),而 K8S 平台则诞生了 Go 语言实现的 CUE 和 CEL 等交互语言。另外 Go 语言自诞生之日起,被诟病最多的就是没有泛型特性(在 Go2 的草稿中已经正式提出)。其实泛型要解决的不是性能问题,而是从类型系统角度解决类型的安全问题(比如 func Add(a, b T) T)。有了泛型之后作为静态语言的 Go 就可以较容易地封装动态语言很容易实现的泛型容器,同时静态类型比动态类型语言保留了类型安全和性能的优势。而在其他领域的扩展上,C 语言在 10 年之后出现了“C with class”的 C++,而 Go 语言也出现了面向数据科学领域的 Go+,在互联网上带来了非常大的反响:Go+ 针对数据科学设计了简洁而易用的语法,比如 Go+ 对 List 和 Map 简洁实现,以及利用 List 和 Map 进行计算时的简洁语法。Go+ 保持对 Go 兼容:Go+ 目前支持了大部分 Go 语言的特性(比如流程控制、goroutine、channel、defer等);Go+ 可以 import 所有 Go 的包;所有 Go+ 的包都能被转换成 Go 的包。Go+ 独有的双擎:bytecode backend 和生成 Go 源码运行。Go+ 实现了自己的 playground、REPL、vscode 插件等。我们一起看看 Go+ 语言的一些特性。例如,用 Go 定义一个 ndarray 类型的常量,用户在 Go 语言里需要写:
而用 Python 是:x := numgo.NdArray([][]float64{
{1.0, 2.0, 3.0},
{1.0, 2.0, 3.0},
})
有了 Go+ 来自动推导数据类型,写法就和 Python 几乎一样了:x = numpy.ndarray(
[ ],
[ ]])
更进一步,Go+ 准备支持 MATLAB 的张量定义语法。这样一来,这个程序就更简单了:x := numgo.NdArray(
[ ],
[ ]])
类似的便捷的语法改进在 Go+ 已经积累了不少,这些语法扩展足以极大简化数据科学编程。例子在: https://github.com/qiniu/goplus/tree/master/tutorial有人说过:“想写出终极程序的程序员,最终都去写操作系统和编程语言了”。而 Go 这些自带runtime 的语言甚至自身包含了操作系统的雏形,因此可以说编程语言是很多程序员的终极追求目标。如果你对 Go+ 语言的内部原理和背后的故事感兴趣,那正好!Go+ 的创始人许式伟今年准备大力发展 Go+,他正在寻找共建 Go+ 语言的开发者,欢迎大家自荐/推荐,推荐成功有大奖,地域不限。若大家有兴趣了解一下,可以直接联系老许聊聊。同时可以关注 4 月份即将召开的 ECUG 大会,这是由 ECUG (Effective Cloud User Group)社区主办的全球顶级技术盛会。届时 ECUG 大会上老许将会分享《数据科学与 Go+》的主题,大家可以关注一下。大佬云集:ECUG Con 本次为专门所有到场同学准备了丰盛的「重逢大礼包」,并引入了技术嘉年华环节,还有 iPhone12、PS5、Switch 等重逢惊喜大奖等你来。大会议程:x := numgo.NdArray([
1.0, 2.0, 3.0;
1.0, 2.0, 3.0
])
以下是广告时间:ECUG 组委会赠送了码农桃花源三张“2021 ECUG Con”的门票,这里转赠给有需要的朋友。本文会从留言中随机抽出三位赠送免费门票(请留下你的微信号),你也可以点击“阅读原文”,以 19 元优惠价格购买门票。另外,蚂蚁杭州也在招聘针对云原生的 DSL 语言专家,有兴趣的可以联系作者。优惠购票二维码