大家好,我是站長 polarisxu。
Go 是一門通用編程語言,Go1.5 實現了自舉,也就是說,Go 語言是用它自身實現的。經過十來年的發展,開源界使用 Go 語言實現的編程語言不少,那它們發展的怎么樣?本文進行一下梳理。
01 Go+
這是國內七牛老大許式偉主導的,對 Go 語言的擴展,專為數據科學領域打造。目標是取代 Python 在數據科學領域的位置。
項目地址:https://github.com/goplus/gop,Star 數:4.2k+。
該語言的前身是 qlang,2020 年 6 月份左右將其重命名為 Go+,并定位為數據科學領域。截止目前最新版本是 2021 年 1 月 8 日發布的 0.7.17,還不是穩定版本。
這是一門靜態編程語言,完全兼容 Go 語言,類似腳本語言的風格,比 Go 更具可讀性的數據科學代碼。
例如下面的 Go 代碼:
package main
func main() {
a := []float64{1, 2, 3.4}
println(a)
}
對應的 Go+ 代碼如下:
a := [1, 2, 3.4]
println(a)
今天剛看到許大在尋找 Go+ 語言開發團隊的負責人,有興趣的可以聯系許大(找我轉達也沒問題)。
目前看,距離目標還有很長的路要走,最少先推出穩定版本,然后有一個線上實際的應用。
02 Tengo
Tengo 是一種小型、動態、快速、安全的腳本語言,它使用 Go 語言實現,并且可以嵌入 Go 程序中。它的語法和 Go 語言類似。
項目地址:https://github.com/d5/tengo,Star 數:2.2k+,目前最新版本是 2.6.2(2020 年 9 月 18 日發布)。
代碼示例:
/* The Tengo Language */
fmt := import("fmt")
each := func(seq, fn) {
for x in seq { fn(x) }
}
sum := func(init, seq) {
each(seq, func(x) { init += x })
return init
}
fmt.println(sum(0, [1, 2, 3])) // "6"
fmt.println(sum("", [1, 2, 3])) // "123"
03 CX
CX 是一種用于區塊鏈的新編程語言,使用 Go 語言實現,語法類似 Go 語言。
項目地址:https://github.com/skycoin/cx,Star 數 27,很凄慘。目前最新 tag 是 0.7.5,我查了下,該項目幾年前就存在了。目前看屬于半死不活的狀態,是 skycoin 主導開發的。對區塊鏈不太熟悉,不知道這個語言能為區塊鏈開發帶來什么革命性的功能。
我安裝試用了下,寫了一個 Hello World 程序:
package main
func main() {
str.print("Hello, World!")
}
哈哈哈,我又掌握了一門語言的 Hello World!
04 Goby
受 Ruby 啟發的面向對象的解釋型語言,核心代碼 100% 使用 Go 實現。它具有標準庫,可提供多種功能,例如插件系統。
項目地址:https://github.com/goby-lang/goby,Star 數 3.2k+,目前最新版本 0.1.13(2020 年 4 月 26 日發布)。
Goby 的預期是用于后端開發。它具備(但不限于)以下功能:
- 基于 Go goroutine 的 thread/channel 機制;
- 內置 database 庫;
- json 支持;
- 插件系統,支持動態加載 Go 庫(目前不支持 Windows 系統);
- 可以直接訪問 Go 對象;
一個 Server 端 Hello World 的例子:
require "net/simple_server"
server = Net::SimpleServer.new("3000")
i = 0
server.get("/") do |req, res|
puts(i)
i = i+1
res.body = req.method + " Hello World"
res.status = 200
end
server.get("/not_found") do |req, res|
res.body = "Not Found"
res.status = 404
end
server.start
不知道 Ruby 愛好者喜歡不?!
05 總結
除了上面介紹的,還有其他一些 Go 語言實現的語言,比如 chai2010 的 wa 語言[1],以及其他一些腳本語言,如 Lua 虛擬機 Go 實現、JS 虛擬機實現、Python 解釋器等。
有興趣的可以通過 https://github.com/d5/tengo 項目的性能測試部分了解。
以上介紹的語言,你有看好的嗎?會嘗試哪個語言嗎?如果你對編程語言實現感興趣,可以參與其中。
原文地址:https://mp.weixin.qq.com/s?__biz=MzAxNzY0NDE3NA==&mid=2247486210&idx=1&sn=13063f7c3a46f8d6cb3de3d328748583&chksm=9be324e3ac94adf58540175aa2c95d9f03141c9a9f027ec2e7d72d526d30e846e2c8e9f5bf8b&mpshare=1&