柴树杉:面向数据科学领域的新语言,Go+蓄势待发

在上个世纪 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 语言里需要写:

x := numgo.NdArray([][]float64{        {1.0, 2.0, 3.0},        {1.0, 2.0, 3.0},})

而用 Python 是:

x = numpy.ndarray(    [[1.0, 2.0, 3.0],     [1.0, 2.0, 3.0]])

有了 Go+ 来自动推导数据类型,写法就和 Python 几乎一样了:

x := numgo.NdArray(    [[1.0, 2.0, 3.0],     [1.0, 2.0, 3.0]])

更进一步,Go+ 准备支持  MATLAB  的张量定义语法。这样一来,这个程序就更简单了:

x := numgo.NdArray([    1.0, 2.0, 3.0;    1.0, 2.0, 3.0])

类似的便捷的语法改进在 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 等重逢惊喜大奖等你来。

大会议程:

以下是广告时间:

ECUG 组委会赠送了码农桃花源三张“2021 ECUG Con”的门票,这里转赠给有需要的朋友。本文会从留言中随机抽出三位赠送免费门票(请留下你的微信号),你也可以点击“阅读原文”,以 19 元优惠价格购买门票。另外,蚂蚁杭州也在招聘针对云原生的 DSL 语言专家,有兴趣的可以联系作者。

优惠购票二维码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值