国产系统级编程语言与编译器,轻松与 C 语言进行交互

2023-09-26 09:08:39 +08:00
 weiwenhao

接之前的帖子 https://www.v2ex.com/t/939430 ,感谢 V 站各位股东们,当时无论是在评论区的鼓励还是 star 支持,都给了莫大的动力,让我极限爆肝了近五个月,在这几个月的 190 多次的 commit log 中,有 60 次是在凌晨以后,18 次是在周末。


再次介绍一下 nature 项目,这是一个投入近 5 年时间的编程语言与编译器项目。

github https://github.com/nature-lang/nature 基于 MIT 协议开放源码。

官网 https://nature-lang.org/zh-Hans/ 有完整可读的中文文档。

在语言层面 nature 有以下特点

上述特性已经集成了 90%,随着标准库以逐步完善,nature 可以应用于游戏引擎与游戏制作、科学与 AI 计算、操作系统与物联网、WEB 开发。其中游戏引擎将作为 nature 0.7 ~ 1.0+ 的核心任务。

nature 适合于开源创作者/独立创作者以及学习和研究使用,我们不仅希望你能够在语言中得到便利,同样也希望你使用 nature 创作快乐且有趣的事情。


今天发布 0.4.0-beta 版本,详细的更新内容见 发行说明,这里进行简单的总结

  1. 使用 temp 模式与 C 语言等进行交互。在数据结构上和调用规范上完全兼容 C 语言,使用安全指针避免 C 语言中的空指针问题。
  2. 实现编译时错误提示与运行时错误追踪功能,能够使用 nature 进行项目代码编写与调试。
  3. 支持标准库 fmt/syscall/os/strings/time/path/compress
  4. 使用 nature 语言实现小型测试用例 parker,这是一个类似 docker 的轻量级容器,能够将工作目录打包成一个可执行文件,又或者是将 python/php 等脚本语言打包成可执行文件并运行在一个轻量级容器运行时上。
  5. 在之前的 0.2/0.3 两个版本中主要支持了泛型,联合类型,包管理等功能。

预计再肝半年左右,nature 将会推出社区可用版本,届时会有稳定的语法 api ,完善的标准库,以及开发工具支持,我也将会基于 nature 启动项目同时也是大型测试用例 'SAO'。

此外,nature 中所有的标准库代码都会合并至主仓库,欢迎来贡献(从其他语言中搬运)。

如果想更进一步关注 nature 的发展,欢迎加入编程语言交流群,我会在这里分享有意思的提案或者是学习的资料,比如最近在进行的协程提案与相关知识。当然也可以通过 github 进行 watch 来了解相关的进度。也希望能够有新的股东 star 支持,这都是宝贵的动力 💪

8579 次点击
所在节点    程序员
118 条回复
e3c78a97e0f8
2023-09-26 10:57:05 +08:00
看到标题我以为是汉语编程语言
weiwenhao
2023-09-26 10:57:11 +08:00
@yaott2020 嗯,当你看到 defer 你可能就知道这是做什么用的关键字,当你看到 fn/i8/i16 这些你也能一眼就明白含义,尽可能的减少了学习的成本。
weiwenhao
2023-09-26 11:00:17 +08:00
@Nazz 最主要的原因是我想掌握原理,也可以叫自主可控。
hronro
2023-09-26 11:22:26 +08:00
既然是自己实现的后端,不知道性能对比起 C/Rust/Go 来说如何,有没有这方面的 benchmark 。

另外看了下错误处理的语法,感觉不是很现代,不太喜欢。
c2const
2023-09-26 11:22:32 +08:00
1.很难盈利,客户也怕你维护慢或者维护不下去了,很难 :(
2.国产化现在也不是好词了 :(
littlebrother
2023-09-26 11:26:01 +08:00
只能说牛逼
weiwenhao
2023-09-26 11:28:18 +08:00
@hronro 无,由于还没有做后端优化,这方面目前是弱势,所以我尽量扬长避短。非标准测试中,fib(40) 这样的 cpu 密集计算耗时是 golang 的 3 倍,GCC -O3 的 6 倍。
weiwenhao
2023-09-26 11:29:28 +08:00
@hronro 错误处理下一个版本只会进行下面这样的兼容性优化,不会进行大的改动了。

var err = try {
stmt1
stmt2
}
weiwenhao
2023-09-26 11:31:51 +08:00
@c2const 维护速度这个,我还是挺有自信的,我现在兼职的情况下,我觉得我速度其实是快过一般编程语言的维护速度的。快的主要原因是我熟悉每一行代码。

另外原则上不靠编程语言本身盈利,编程语言本身是没有价值的,我会尽量使用 nature 创造有价值的产品。
skiy
2023-09-26 12:44:35 +08:00
其实,我更想要一款写 gui 的工具…
作者现在还肝“编程语言”,感觉是 49 年入国军…现在写代码,流行的编程语言,不懂的还能去问 gpt…小众语言,gpt 也不懂…

现在搞游戏引擎(图形化)感觉挺不错…rust 的 bevy 都没成熟…
agagega
2023-09-26 12:48:05 +08:00
国产这个词确实已经被某些机构组织搞变味了。比如我是中国人,我写了个项目开源出来,某些人跳出来说是国产,总觉得怪怪的,像自己的项目被无偿上交了一样。

我建议以后把这类项目里的「国产」改为「国人产」。一字之差,好感度上升不少。
weiwenhao
2023-09-26 13:05:51 +08:00
@skiy 我 44 年的时候入了国军,现在已经没有回头路了。游戏引擎我也很有兴趣,但是这是一个大工程,又要 5 年起步,所以我必须慎重一点启动。
skiy
2023-09-26 13:14:21 +08:00
@weiwenhao 可以将编程语言跟往这方面靠(哪怕是插件、外部库形式),感觉这将是一个爆点。现在也在推信创了,deepin 也在推它的玲珑。感觉这个应该能够来钱。
Nazz
2023-09-26 13:44:29 +08:00
@weiwenhao 以后可以考虑迁移到 LLVM, 个人的精力是有限的
dwzfuck
2023-09-26 13:58:40 +08:00
赞, 话说作者实现自举了没
weiwenhao
2023-09-26 14:06:53 +08:00
@dwzfuck 没有哦,实现自举的工作量太大了,我更愿意把这些代码量做些好玩有用的东西。
antonius
2023-09-26 14:15:38 +08:00
Yet Another Programming Language ;-)
OP 很厉害,能坚持能做这件事,就已经超越很多人了。

不过“游戏引擎与游戏制作”的过程中,除去引擎本身运行时的开发,更多的是各种工具/工作流的整合,这是一个巨大的工程。对于一门新生的编程语言,这个目标过于庞大。

个人的几点建议:
1. 缩小规模:不先考虑游戏引擎,先考虑对多媒体功能的支持。比如预览 jpeg, png, webp, avif, dds, ktx, basisu 等纹理的工具,压缩/解压/转换纹理的工具等等,或者声音格式 ogg, wav, mp3 等格式的转换工具等等。
2. 精简游戏运行时框架:不和 Unreal, Unity ,甚至 Godot 比拼。可以参考 Love2D 这样的引擎。
3. 增加第三方库的 nature 语言绑定,比如业界常用的 dear-imgui ,sdl2 ,box2d ,bullet ,assimp 等等。

游戏开发也是有生态圈的,维护好生态圈也绝非易事。其实你的语言不必什么都能做,只要在某个方面做到最好,就有一席之地。加油💪!
antonius
2023-09-26 14:21:54 +08:00
weiwenhao
2023-09-26 14:29:19 +08:00
@antonius 👍 都是纯 C 。我不会去走正常流程从头做起,现在 nature 可以调用 C 语言库,所以很多方面实现起来比较简单。 另外确实如你所说,我计划就是选择某个特定的方面。尽可能将整体工作量压缩在一年以内,能够已最小代价实现一个 demo 。
learningman
2023-09-26 14:49:57 +08:00
所以我还是不明白这个语言可以做到什么其他语言做不到的事情

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/977144

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX