Go 破圈:Go+ 帶你快速了解數(shù)據(jù)科學(xué)領(lǐng)域
本文轉(zhuǎn)載自微信公眾號「腦子進(jìn)煎魚了」,作者陳煎魚 。轉(zhuǎn)載本文請聯(lián)系腦子進(jìn)煎魚了公眾號。
大家好,我是煎魚。
前段時間,Go 語言圈子內(nèi)有一件事情特別的火,就是七牛云的許式偉帶頭基于 Go 語言,研發(fā)了一門新的語言 Go+,其面向的技術(shù)領(lǐng)域是數(shù)據(jù)科學(xué)領(lǐng)域。
Go+ 所關(guān)注的賽道,是數(shù)據(jù)科學(xué)領(lǐng)域,主要的佼佼者是 Python 和 R 語言(近期還有新秀 Julia 語言):
- Python 的使用量日益增高,相比下 R 有所下降。
- 程序員更傾向于在數(shù)據(jù)挖掘、分析、機(jī)器學(xué)習(xí)的領(lǐng)域使用 Python,統(tǒng)計(jì)專業(yè)等會傾向于 R。
- Python 在文檔資源、社區(qū)等上更好,很多 R 的包 Python 也有,有一些互補(bǔ),畢竟 Python 也能調(diào)用 R。
為什么需要 Go+
為什么是 Go+,Python 與 Go+ 的區(qū)別有什么區(qū)別,我們主要從下面幾方面的背景和原因來分析。
- 數(shù)據(jù)科學(xué)的發(fā)展:未來數(shù)據(jù)科學(xué)將具備全領(lǐng)域、大數(shù)據(jù)、無處不在等特征,由 “副產(chǎn)品”上升為 “原材料”。
- 數(shù)據(jù)科學(xué)的地位變化:數(shù)據(jù)科學(xué)將基礎(chǔ)設(shè)施化,由數(shù)學(xué)軟件 (Application) 向基礎(chǔ)設(shè)施(Infrastructure)演進(jìn)。
- 數(shù)據(jù)科學(xué)是算力革命:是計(jì)算密集型的業(yè)務(wù)。Python 不會是數(shù)據(jù)科學(xué)的終局。
- Python 的缺陷:Python 的靈活性卻導(dǎo)致 Python 有局限,Python 是腳本語言,無法承擔(dān)算力密集型。Python 成不了基礎(chǔ)設(shè)施。
未來的數(shù)據(jù)科學(xué),必然是數(shù)學(xué)軟件和通用語言的結(jié)合,所以 Go+ 來了!
Go+ 的下一步
七牛云正在尋找共建 Go+ 語言的開發(fā)者們,歡迎大家自薦/推薦,推薦成功有大獎,地域不限。
Go+ 語言的目標(biāo):
- 把 Go 帶到數(shù)據(jù)科學(xué)領(lǐng)域,取代今天 Python 在數(shù)據(jù)科學(xué)領(lǐng)域中的位置。
- 希望 Go+ 能夠成為更好的 Go。
若大家有興趣參與,可以直接聯(lián)系許式偉大佬聊聊。同時也非常歡迎大家針對 Go+ 提出建議和交流,郵箱:jobs@qiniu.com。
Go+ 快速使用
快速上手
Go+ 安裝命令:
- $ git clone git@github.com:goplus/gop.git
- $ cd gop && go install -v ./...
完畢后,可直接執(zhí)行 gop 命令查看效果,其目前一共支持 7 個指令:
- run Run a Go+ program
- go Convert Go+ packages into Go packages
- fmt Format Go+ packages
- export Export Go packages for Go+ programs
- repl Play Go+ in console
- install Build go+ files and install target to GOBIN
- build Build go+ files and execute go build command
創(chuàng)建一個 test.gop 文件,寫入如下樣例:
- a := [1, 3, 5, 7, 11]
- b := [x*x for x <- a, x > 3]
- println(b)
- mapData := {"煎魚": 1, "腦子進(jìn)": 2, "Go+": 3}
- reversedMap := {v: k for k, v <- mapData}
- println(reversedMap)
輸出結(jié)果:
- $ gop run test.gop
- [25 49 121]
- map[1:煎魚 2:腦子進(jìn) 3:Go+]