那些 Go 语言实现的语言现在发展怎么样了?

开发 后端
Go 是一门通用编程语言,Go1.5 实现了自举,也就是说,Go 语言是用它自身实现的。经过十来年的发展,开源界使用 Go 语言实现的编程语言不少,那它们发展的怎么样?本文进行一下梳理。

[[384324]]

大家好,我是站长 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 代码:

  1. package main 
  2.  
  3. func main() { 
  4.     a := []float64{1, 2, 3.4} 
  5.     println(a) 

对应的 Go+ 代码如下:

  1. a := [1, 2, 3.4] 
  2. println(a) 

今天刚看到许大在寻找 Go+ 语言开发团队的负责人,有兴趣的可以联系许大(找我转达也没问题)。

目前看,距离目标还有很长的路要走,最少先推出稳定版本,然后有一个线上实际的应用。

02 Tengo

Tengo 是一种小型、动态、快速、安全的脚本语言,它使用 Go 语言实现,并且可以嵌入 Go 程序中。它的语法和 Go 语言类似。

项目地址:https://github.com/d5/tengo,Star 数:2.2k+,目前最新版本是 2.6.2(2020 年 9 月 18 日发布)。

代码示例:

  1. /* The Tengo Language */ 
  2. fmt := import("fmt"
  3.  
  4. each := func(seq, fn) { 
  5.     for x in seq { fn(x) } 
  6.  
  7. sum := func(init, seq) { 
  8.     each(seq, func(x) { init += x }) 
  9.     return init 
  10.  
  11. fmt.println(sum(0, [1, 2, 3]))   // "6" 
  12. 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 程序:

  1. package main 
  2.  
  3. func main() { 
  4.   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 的例子:

  1. require "net/simple_server" 
  2.  
  3. server = Net::SimpleServer.new("3000"
  4.  
  5. i = 0 
  6.  
  7. server.get("/") do |req, res| 
  8.   puts(i) 
  9.   i = i+1 
  10.   res.body = req.method + " Hello World" 
  11.   res.status = 200 
  12. end 
  13.  
  14. server.get("/not_found") do |req, res| 
  15.   res.body = "Not Found" 
  16.   res.status = 404 
  17. end 
  18.  
  19. server.start 

不知道 Ruby 爱好者喜欢不?!

05 总结

除了上面介绍的,还有其他一些 Go 语言实现的语言,比如 chai2010 的 wa 语言[1],以及其他一些脚本语言,如 Lua 虚拟机 Go 实现、JS 虚拟机实现、Python 解释器等。

有兴趣的可以通过 https://github.com/d5/tengo 项目的性能测试部分了解。

以上介绍的语言,你有看好的吗?会尝试哪个语言吗?如果你对编程语言实现感兴趣,可以参与其中。

参考资料[1]wa 语言: https://github.com/wa-lang/wa

本文转载自微信公众号「polarisxu」,可以通过以下二维码关注。转载本文请联系polarisxu公众号。

 

责任编辑:武晓燕 来源: 站长polaris
相关推荐

2021-03-01 21:59:25

编程语言GoCX

2019-07-19 15:42:57

Hadoop大数据YuniKorn

2024-06-06 09:47:56

2022-05-19 14:14:26

go语言限流算法

2022-11-01 18:29:25

Go语言排序算法

2020-08-12 08:56:30

代码凯撒密码函数

2023-05-08 07:55:05

快速排序Go 语言

2024-08-29 13:23:04

WindowsGo语言

2021-01-09 23:16:06

996阿里职场

2012-03-13 10:40:58

Google Go

2021-07-12 15:50:55

Go 语言netstat命令

2021-07-26 09:47:38

Go语言C++

2012-08-06 08:50:05

Go语言

2019-06-06 08:24:38

2020-03-30 09:22:03

AI语音技术机器视觉

2014-02-18 11:24:07

云计算PaaS

2023-03-27 00:20:48

2022-04-18 10:01:07

Go 语言汉诺塔游戏

2014-12-26 09:52:08

Go

2024-08-26 14:32:43

点赞
收藏

51CTO技术栈公众号