接之前的帖子 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 版本,详细的更新内容见 发行说明,这里进行简单的总结
预计再肝半年左右,nature 将会推出社区可用版本,届时会有稳定的语法 api ,完善的标准库,以及开发工具支持,我也将会基于 nature 启动项目同时也是大型测试用例 'SAO'。
此外,nature 中所有的标准库代码都会合并至主仓库,欢迎来贡献(从其他语言中搬运)。
如果想更进一步关注 nature 的发展,欢迎加入编程语言交流群,我会在这里分享有意思的提案或者是学习的资料,比如最近在进行的协程提案与相关知识。当然也可以通过 github 进行 watch 来了解相关的进度。也希望能够有新的股东 star 支持,这都是宝贵的动力 💪
101
weiwenhao OP @sapjax 在看 clox 之前我就已经实现了编译器前端了(使用的 c++), 看完 clox 之后发现教的非常的好,我就整个用 C 语言重写了编译器前端。clox 中我收货最大的是 parser 的方式和 闭包转换。
|
102
vialon17 2023-09-27 09:14:24 +08:00 1
牛皮;但暂时没有转语言的动力,
op 应该把 nature 的特性和与其他语言的对比说明一下, 这样大家才知道 nature 的特色。 (不过 国产这个标题挺吸引人的,哈哈) |
103
MrSheng 2023-09-27 09:17:34 +08:00 2
不大赞同 OP 的设计理念。
很难说 i8 代替 int8_t 是降低了学习者的心里负担,毕竟 int8_t 无歧义,而 i8 需要猜一下。 另外不看文档的话,谁能猜出 cptr 类型跟什么有关? 另外的使用 “单引号能够减少一次 shift 的输入,减轻开发者的小拇指负担” 这个理由就更勉强了,不信你看大家的回帖,双引号使用率明显比单引号多的多的多。 vec/vector 、tup/tuple 、arr/array ,真的有意义吗? 我的 IDE 真的不需要输入完整的 function 才能写出 function 关键字,输入 f -> tab ,整个函数框架都写好了。 |
104
himcheobeolx 2023-09-27 09:32:03 +08:00 1
star 下,就等你的应用出来了
|
105
Huelse 2023-09-27 09:37:41 +08:00 1
支持,真的很难得,尤其是在这种环境下。
|
106
likunyan 2023-09-27 09:40:47 +08:00 1
必须支持
|
107
weiwenhao OP @MrSheng 我不具备权威属性,所以我一定尽量避免发明新的语法或者关键字。 例如 i8 这样的类型声明方式在 rust/zig 这样的编程语言中已经得到了推广。 至于 vec/tup/arr 在平时的使用中是不会用到的。 可以通过 [int] 这样的方式声明一个 vec 类型。使用 (int,float) 声明 tup 类型, 至于 arr 我还没有思考到具体的表现形式。 包括 ident<T> 目前是一种通用的类型声明方式,在没有思考到更好的表达方式之前,都会保留入 ident<T> 的方式。 ctpr 同样也是普通用户不需要关心的类型。在 golang 中对应的是 unintptr 类型。
这里 vec/tup 这里后续将不作为一个关键字,而是可以随时进行覆盖的类型声明。当然这里面最需要考虑的是会不会和用户的编码明明方式冲突, 比如很多用户喜欢使用 list 这个 ident 作为变量名称,如果我使用了 list 作为关键字。那就严重影响的用户的使用习惯,其他关键字也是同理。 毕竟大多数情况下我们可能不需要去声明 vec/tup 这样的关键字。 至于单引号的形式,只是推荐使用单引号,双引号也是可以使用的,这和脚本语言表达形式一致。大多数语言也都支持使用单引号字符串。 |
108
droppedbytech 2023-09-27 10:11:54 +08:00 1
可以有 discord 或者 tg 的交流渠道吗
|
109
Nich0la5 2023-09-27 10:22:34 +08:00 1
这年头没有大厂背书推广一门语言太难了 点个 star 支持一下
|
110
mightybruce 2023-09-27 10:26:48 +08:00 1
@weiwenhao 既然提到实现轻量级容器, 那么了解一下业界的趋势,
wasm + wasi 虽然不成熟,但在未来有可能取代容器。 目前完整支持 wasm 的系统级开发编程语言而非浏览器的只有 c / c++, rust, golang 提供了部分 wasm 支持,可以编译为 wasm ,另外还有一个 tinygo 编译器。 wasi 运行时 目前可以做到类似 namespace 的隔离,还没有做到 cgroup 隔离。 |
111
weiwenhao OP @mightybruce 嗯嗯,wasm 是 nature 的核心目标之一哦,也是 nature 可以跨平台的保障。我相信 wasm 以后会全平台预装不仅仅是浏览器,是比 jvm 更加厉害的存在。
|
112
weiwenhao OP @droppedbytech 没有哦,如果不方便加微信群也可以通过 issue 进行沟通,我看到都会回复的。
|
113
wuqiangroy 2023-09-27 11:12:58 +08:00 1
Looking forward to bootstrap ASAP.
|
114
zhong666666 2023-09-27 11:38:20 +08:00 1
加油!!!
|
115
Terry3366 2023-09-27 12:12:42 +08:00
|
116
satuk2 2023-09-28 06:24:31 +08:00 via Android
大佬,考虑增加( Rust 式功能的)宏的支持吗?还有一些 Lisp 系的其他特性。另外,推荐一个 Discord 造(编程)语交流频道:“/r/ProgrammingLanguages”
|