柴树杉:面向数据科学领域的新语言,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 語言專家,有興趣的可以聯系作者。
優惠購票二維碼
總結
以上是生活随笔為你收集整理的柴树杉:面向数据科学领域的新语言,Go+蓄势待发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里、字节为何都如此偏爱Go语言?
- 下一篇: go build -X 的妙用