如果說在云計算的時代里,沒有人可以錯過 Go 語言;那么在 Go 語言的領域里,沒有人可以錯過 Gopher China Con。近日,Gopher China 2020 大會在上海盛大開幕!七牛云作為中國 Go 語言第一個吃螃蟹的企業,CEO 許式偉是國內 Go 語言大中華區首席布道師,他在今年面向全球發布了為數據而生的 Go+ 。
本次大會現場,七牛云技術經理姜智受邀分享了《Go+ 演進之路》的主題演講。姜智從 Go+ 是如何火起來的、許式偉對 Go+ 的思考以及為什么做 Go+、為什么 Go+ 靶心是數據科學、Go+ 發布后目前已經具備了哪些特性、Go+ 的運行機制和邏輯等方面深度解析了 Go+ 的演進之路。
七牛云技術經理姜智
Go+ 發展歷程
2020 年 7 月 5 日,七牛云 CEO 許式偉面向全球發布了為數據而生的開發語言 Go+ 。 Go+ 的誕生,在 Hacker News 上引發熱議,在 Twitter 上形成了一道壯麗的風景線,占據了 Github Go 趨勢榜雙榜冠軍。
關于為什么是 Go+,為什么技術開發者紛紛關注 Go+,Python 與 Go+ 的區別等問題,主要有下面幾方面的背景和原因:
1、數據科學的發展和變化,未來的數據科學將具備全領域、大數據、無處不在等特征。
2、DT 時代的到來。數字化信息(數據)極大化地產生,促使我們進入了 DT 時代,數據地位發生變化,由副產品上升為原材料(石油),無處不在,深植于業務流。Data Science 的地位變化,Data Science 將基礎設施化,數學軟件 (Application) 向基礎設施 (Infrastructure)演進。
3、Data Science 本質上是算力革命,是計算密集型的業務。Python 不會是 Data Science 的終局。Python 有很多強大的地方,非常靈活,但靈活性卻導致 Python 有其局限。相比之下,Go 語言語法簡潔。Python 是腳本語言,無法承擔算力密集型。所以,Python 成不了基礎設施(Infrastructure)。
未來的數據科學,必然是數學軟件和通用語言的結合,所以 Go+ 來了!
Go+ 特性與實現解析
這一部分,姜智在現場詳細為大家介紹了 Go+ 當前所處的階段,支持了哪些語言特性、具備的功能,同時 Go+ 是如何去實現這些特性的。
Go+ 的主要特性:
1、 Go+ 針對數據科學設計了簡潔而易用的語法,比如 Go+ 對 List 和 Map 簡潔實現,以及利用 List 和 Map 進行計算時的簡潔語法。
2、Go+ 保持對 Go 兼容:Go+ 目前支持了大部分 Go 語言的特性(比如流程控制、goroutine、channel、defer等);Go+ 可以 import 所有 Go 的包;所有 Go+ 的包都能被轉換成 Go 的包。
3、Go+ 獨有的雙擎:bytecode backend 和生成 Go 源碼運行。
4、Go+ 實現了自己的 playground、REPL、vscode 插件等。
基于一個簡單的示例,姜智在現場演示了 Go+ 的運行機制,包括:
1、利用 Go+ 的詞法分析,將 Go+ 源碼生成 Go+ 的 token 序列。
2、利用 Go+ 的語法分析,將 token 序列生成 Go+ 的抽象語法樹(AST)。
3、Go+ 是如何基于雙擎設計,將 Go+ 語法樹轉換成 bytecode 并運行,或者生成 Go 源碼。
Go+ 下一步會是什么?
語言的選擇標準必須包括:語法清晰簡練和語法穩定容易學習。也希望語言的使用者是比較有探索精神的一個群體。Go+ 及其基于 Go 社區的用戶群體剛好符合這些條件。
當前 Go+ 的主要精力還是做它語法的一些實現,以及支持 Go 的特性。在維持 Go 的語法簡潔性的本色之上,合理準入簡化語法,是 Go+ 項目的核心戰術工作。未來,七牛云希望借助更多開源的力量,用“坐十年冷板凳”的態度去探索及維護 Go+,以 Go+ 的力量助力數據科學。