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

原创 站长polaris polarisxu 1周前

大家好,我是站长 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 = 200end

server.get("/not_found") do |req, res|  res.body = "Not Found"  res.status = 404end

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


不看的原因确定内容质量低不看此公众号
(0)

相关推荐

  • 浅析GO语言中的beego框架

    beego是一个快速开发Go应用的http框架,作者是SegmentFault 用户,go 语言方面技术大牛.beego可以用来快速开发API.Web.后端服务等各种应用,是一个 RESTFul的框架 ...

  • 使用golang结合goquery抓取数据的爬虫

    简介 goquery是用 Go 语言编写的一个类似于 jQuery 的库.它基于 HTML 解析库net/html和 CSS 库cascadia,提供与 jQuery 相近的接口.Go 著名的爬虫框架 ...

  • 效率提高80%,Go开发必备的库与工具

    不知不觉写 Go 已经快一年了,上线了大大小小好几个项目:心态也经历了几轮变化. 因为我个人大概前五年时间写的是 Java ,中途写过一年多的 Python,所以刚接触到 Go 时的感觉如下图: 既没 ...

  • Go操作Redis实战

    目录 安装Redis客户端 连接redis 基本指令 Keys():根据正则获取keys Type():获取key对应值得类型 Del():删除缓存项 Exists():检测缓存项是否存在 Expir ...

  • Go基础及语法(一)

    Go语言文件基础语法 package main //管理定义模块import "fmt" //导入模块/*主函数打印Hello,world!*/func main() {fmt.P ...

  • 回答我,停止 Goroutine 有几种方法?

    大家好,我是煎鱼. 协程(goroutine)作为 Go 语言的扛把子,经常在各种 Go 工程项目中频繁露面,甚至有人会为了用 goroutine 而强行用他. 在 Go 工程师的面试中,也绕不开他, ...

  • 剑桥大学:语言和写作决定人生发展的潜力

    你认同"使用语言的能力决定人的发展潜力"这个观点吗?我完全认同. 语言影响着思维影响着表达,也许你会说我是一个工科的教授,语言和文字能力对我来说没那么重要.其实不是,如果你想把你的 ...

  • 在教师指导下,学生用纪实性语言陈述自己的综合素质发展情况和个性特长,并以典型事例

    在教师指导下,学生用纪实性语言陈述自己的综合素质发展情况和个性特长,并以典型事例

  • 关于少数民族语言文字的使用和发展有哪些法规和政策规定?

    我国是一个多民族.多语言.多文种的国家,绝大多数少数民族都有自己的民族语言,语种数在80种以上,分属汉藏.阿尔泰.南亚.南岛.印欧等5个语系.我国现有22个少数民族有正式使用的本民族文字,共28种,其 ...

  • 儿童语言发展的8个阶段,语言发育迟缓就隐藏在其中|语言发育迟缓|儿童语言|儿童|语言能力

    根据语言学的定义,大部分儿童的语言大概在3-4岁左右逐渐完善,此时他们开始使用长句+语法的方式进行表达,时不时还能用一些高级的词汇作为语言的辅助.一些家长发现,自家孩子到了三四岁后不仅语言能力有了很大 ...

  • 胡盼:艺术的语言才能表现出语言的艺术(略谈)

    今天下午,听了一位同事上了数学公开课,其课堂语言运用让我对此有了自己的见解及自我反思. 教师的语言是课堂上最具有表现力的.如果运用得当,会有事半功倍的效果,反之则会出现问题甚至造成伤害. 镜头一:开课 ...

  • 初学编程,如何玩转C语言?C语言中最重要的知识献上!

    一.C语言的指针 1.指针说明 指针是包含另一变量的地址变量. (1)int *p p是一个指针,指向一个整形数. (2)int *p() p是一个函数,该函数返回一个指向整数的指针. (3)int ...

  • 第005节:Go语言和其他语言的对比

    一.Go语言设计初衷 1.设计Go语言是为了解决当时Google开发遇到的问题: 大量的C++代码,同时又引入了Java和Python 成千上万的工程师 数以万计行的代码 分布式的编译系统 数百万的服 ...

  • 积极语言与消极语言

    请了6个孩子帮助录一个叠杯子的步骤视频.看到高高架在头顶的摄像机,孩子们很紧张,做起来反倒没有上课那天来得流畅顺利. "上课那天,你们可是只花了30秒钟,就已经完成了哟!"我尝试着 ...

  • 多种语言的AI语言翻译

    GoogleTranslate运作良好,通常看起来像魔术.但这不是魔术,而是深度学习! 在本系列文章中,我们将向您展示如何使用深度学习创建自动翻译系统.本系列可以视为分步教程,可以帮助您了解和构建Ne ...