当正式版本发布时,nature 会有稳定语法 API 、类型系统、GC 、协程、泛型、包管理、基础标准库。
nature 支持交叉编译,可以编译到 linux/darwin & amd64/riscv64/wasm ,同样也可以解释到 nature-vm 执行。
这是官网 https://nature-lang.org 你可以在这里得到更多的信息以及它的文档
代码仓库 https://github.com/nature-lang/nature
我不想也不能说 nature 解决了 xxx 问题,或者比 xxx 快多少。实际上 nature 只是我在学习计算机程序的构造与解释时产生的一颗种子。然后在过去的某个时刻,我决定让它发芽 🌱,所以我尽可能的将它完善并发布了出来。接下来我也将继续推动 nature 直到首个正式版本发布 🌳。
v2ex 是我目前唯一关注的程序员相关的论坛了,所以选择在这里发布。虽然 nature 目前还不能帮助大家做什么,但是我依旧希望能够得到大家的支持(求 star),大家如果有摸鱼群也可以帮忙分享一下,谢谢大家了。
另外早上发布过一次,但是节点选错了,不知道沉到哪里去了,我就厚着脸皮再发一次 🙏
1
TtTtTtT 2023-05-12 11:00:01 +08:00 1
超 cool ,要是能背靠大厂就不愁没人转发了!
|
2
hsfzxjy 2023-05-12 11:00:47 +08:00 via Android 4
赞~个人觉得,因为“想做”就去做的项目也是值得支持的
|
3
dunhanson 2023-05-12 11:04:44 +08:00
没有中文文档?
|
5
weiwenhao OP |
6
kaz10025 2023-05-12 11:06:43 +08:00 1
膜拜大佬~已 star🥹
|
7
dw2693734d 2023-05-12 11:07:37 +08:00
专业啊
|
8
Oktfolio 2023-05-12 11:08:07 +08:00
做了每个 programmer 想做的事
|
9
0littleboy 2023-05-12 11:14:51 +08:00
nb
|
10
githmb 2023-05-12 11:22:19 +08:00
能用了吗?自举一下
|
11
weiwenhao OP @githmb 可以 docker 快速体验,自举基本还没到考虑的时候,https://nature-lang.org/ 官网首页 fib.n 的例子。
docker run --rm -it -v $PWD:/app --name nature naturelang/nature:latest sh -c 'nature build fib.n && ./main' |
12
xiaotiancheng 2023-05-12 11:29:00 +08:00
牛皮
|
13
yazinnnn 2023-05-12 11:31:59 +08:00
变量类型在左, 函数返回值类型在右, 函数参数的类型又在左....
用 try catch+积类型+元组处理异常, 函数签名还不带异常信息 这语法也太逆天了.... ----------------- string car = "hello world" fn sum(int a, int b):int { return a + b } fn rem(int dividend, int divisor):int { if (divisor == 0) { throw "divisor cannot zero" } return dividend % divisor } // v 对可能出现的错误使用 catch 关键字进行拦截 // 当不存在错误时 err == null ,在 if 判断中, null 会进行隐式类型转换为 false // 同时利用了 tuple 解构快速赋值来将 catch 的返回结果进行解构 var (result, err) = catch rem(10, 0) |
14
LUO12826 2023-05-12 11:36:19 +08:00
竟然没用 LLVM 全手撸,而且还是 c ,有点猛
|
15
zttviYang 2023-05-12 11:37:40 +08:00
我依稀记得几年前你在 Laravel China 上发布过一些文章
|
16
weiwenhao OP @yazinnnn 是的,这几个月我定了太多的语法,开发语法太简单了,一天就能集成一个语法,但是我觉得这样很不好,所以我希望能得到更多人意见,更好的参考资料。 如果现在是 0.1 版本,不提供稳定的语法 api. 就是希望还能有机会反悔。
|
18
weiwenhao OP @LUO12826 你都看起源码了 🫰。 因为一开始是学习目的而非找到工作的目的,所以没有打算去学习怎么调用 llvm 的 api, 另外 c++ 项目对我来说学习成本和源码阅读成本有些高。
|
19
ired 2023-05-12 11:51:22 +08:00
加油
|
20
cohen121 2023-05-12 11:53:38 +08:00 1
厉害,已 star ,持续关注下
|
21
likunyan 2023-05-12 12:05:48 +08:00
国产第一个编程语言?
|
22
woshipanghu 2023-05-12 12:09:58 +08:00
大佬 支持下
|
23
ijyuqi 2023-05-12 12:14:19 +08:00
强,持续关注下
|
24
itskingname 2023-05-12 12:15:46 +08:00
在哪个版本会让它自举?用 nature 实现 nature 的编译器
|
25
heliker 2023-05-12 12:19:24 +08:00 via Android
关注
|
27
weiwenhao OP @itskingname 这个感觉不太重要,所以不在规划内,倒是有一个其他的计划,暂时保密。
|
28
veike 2023-05-12 12:53:01 +08:00
已 star ,顺便收藏了贴子。只要是有人开发语言不论出于什么目的,我都会支持。
另外问一下,能否给一个开发编程语言的学习路径,对这方面非常感兴趣。凹语言的群我也加过了。 |
29
weiwenhao OP @veike https://nature-lang.org/docs/prologue/contribution-guide 相关资料部分就是我的学习路线
|
32
excitedXXX 2023-05-12 13:19:39 +08:00 1
已 star ,能把想法变成现实已经很牛逼啦
|
33
matrix1010 2023-05-12 13:31:35 +08:00
op 是全职在写这个还是工作之余写一写? 推广的好理论上 star 应该能比普通项目多,但问题是作为一个语言也仅仅是 star 多而已,可能没人会真去用。如果用来找工作估计也效果没那么好
|
34
dk7952638 2023-05-12 14:03:07 +08:00 2
这语言设计没得说,但是我觉得现阶段想创造一门成功的语言,还是看生态和轮子的丰富程度,我觉得至少出一个像样的框架,比如说一套符合语言设计风格的 web 框架
|
35
weiwenhao OP @matrix1010 工作之余写一写,我把 star 作为是对我的一个正向反馈,让我更加有动力进行下一阶段。 另外我也期望能有一个全职写的机会,我的工作确实比较忙。
|
36
enchilada2020 2023-05-12 14:04:49 +08:00 via Android
厉害…
|
37
wilsonsui 2023-05-12 14:07:27 +08:00
666
|
38
luckyv2 2023-05-12 14:08:01 +08:00 1
挺好的 看起来函数定义和 rust 差不多,最近在看 rust 难搞哦
有自己想法,值得支持的 |
39
24Arise 2023-05-12 14:15:46 +08:00 1
厉害,已 star .
|
40
pota 2023-05-12 14:16:54 +08:00
star 了 支持一下
|
41
matrix1010 2023-05-12 14:18:19 +08:00 via iPhone 1
关于名字 op 也可以再考虑考虑,比如我 google nature 或者 nature language 估计都搜不到这个,因为 nature 用的太广泛了
|
42
Helsing 2023-05-12 14:21:21 +08:00 via iPhone 1
厉害,支持
|
43
weiwenhao OP |
44
stkstkss 2023-05-12 14:25:05 +08:00 via iPhone
牛
|
45
proletarius 2023-05-12 14:26:04 +08:00
大佬有考虑过出视频吗,想学习学习
|
46
lfcyme 2023-05-12 14:27:12 +08:00
厉害呀,没用 llvm
|
47
lsiufD 2023-05-12 14:27:21 +08:00
为行动派点赞
|
48
ren2881971 2023-05-12 14:43:08 +08:00
牛!给你点赞
|
49
summerLast 2023-05-12 14:43:49 +08:00
@proletarius 学习下 sicp 就基本入门了
|
50
summerLast 2023-05-12 14:46:16 +08:00
@summerLast 前者是实现的玩具 https://github.com/sunxyz/rust-lisp
后者是严格按 scheme 语法开发的 https://github.com/sunxyz/scheme4r |
51
tanghongkai 2023-05-12 14:47:37 +08:00
star 了,正好课内也在学习相关内容,甚至还不是用 llvm 纯手撸的
|
52
getoffworkontime 2023-05-12 15:51:06 +08:00
🐂
|
53
Stoney 2023-05-12 15:58:23 +08:00 via iPhone
膜拜大佬
|
54
forty 2023-05-12 16:02:10 +08:00
JS/TS 人看了觉得很亲切
|
55
forty 2023-05-12 16:02:50 +08:00
支持函数重载吗?
|
56
andytao 2023-05-12 16:03:25 +08:00
fn fib(int n):int
===》 函数定义 C/C++ 已经有很成熟的范式了,为何要跟风搞这些奇怪的语法呢? |
57
ShadowPower 2023-05-12 16:13:14 +08:00
@andytao 这种语法形式写 parser 比 C/C++那种简单一些
|
58
andytao 2023-05-12 16:16:07 +08:00
能否基于 C/C++/C#/Vala 并再做一些减法,输出一个新的原生语言:
C --> C++ --> C#(C++++) -->Vala(C#+) --> C niubility(C#++,C++++++, sample.niu / sample.ctrip) |
59
andytao 2023-05-12 16:17:14 +08:00
@ShadowPower 能省则省,简洁为上。
|
60
mooddance 2023-05-12 16:21:33 +08:00
大致看了下语法,看到了很多语言的样子。能介绍下你这个语言有哪些特点吗?
|
61
ShadowPower 2023-05-12 16:24:50 +08:00 1
@andytao C/C++的语法里,一个函数定义的开头是函数返回值,parser 至少要读取到第 3 个 token 才能确定第一个 token 是什么类型。
如果语言要支持泛型,哪怕照搬 C#的那种写法,这个工作量就更大了。 把函数返回值放在末尾,还方便在语法设计里省略书写返回值类型,只需要编译器自己推导。尤其是类型特别复杂的时候。而不需要用 var 、auto 之类的东西作为代替。 |
62
Margarethe 2023-05-12 16:56:14 +08:00
给你点赞,做了我一直想做,但是没时间也没能力做的事
|
63
weiwenhao OP @ShadowPower 一开始是想类型全部前置的,可以在 examples 目录里面看到,但是在最后几个月,我发现 虽然函数返回类型前置能够省略 fn 符号的编写,但是在编写高阶函数时,尤其是匿名函数会非常的丑陋和不可读
|
65
weiwenhao OP @Margarethe 每个人都有能力的,时间才是问题。
|
66
weiwenhao OP @mooddance 官网首页有三个特征,都是和某一我使用过的热门语言对比,但是因为这是属于拿硬币的直径和笔记本的厚度做对比,所以我不太好意思直说是什么语言了。
https://nature-lang.org/docs/getting-started/meet-nature 文档这里包含 nature 自身具有的一些特征。 如果使用雷式对比法则的话,其实是有一些特点的。但是目前都不太敢明目张胆的说出来,怕话说的太满反而适得其反 |
67
lilei2023 2023-05-12 17:07:25 +08:00
这玩意没点功底,搞不定,厉害
|
68
Esen 2023-05-12 17:15:44 +08:00
厉害了,膜拜大佬
|
69
TwoCookie 2023-05-12 17:24:41 +08:00
star 支持一下
|
70
kangkag0231 2023-05-12 17:25:19 +08:00
cool 做了很多人想做的事
|
71
bruce0 2023-05-12 17:32:35 +08:00
吊啊卧槽, 整个全手撸的 我还以为是套了其他编译器或者语言的东西(比如 llvm) 竟然全手撸 牛逼
|
72
17681880207 2023-05-12 17:37:13 +08:00
不服不行...😀
|
73
arvinsilm 2023-05-12 17:39:43 +08:00
Github 的 README 是否可以加上官网和文档的链接,只看这个 README 感觉介绍的太简洁了
|
74
shenjinpeng 2023-05-12 17:41:43 +08:00
有点像 PHP 和 Go 的结合体
|
75
kujio 2023-05-12 17:44:28 +08:00
有大厂的话就可以 “国产、自研、创新” 了
|
76
Radiation 2023-05-12 17:47:44 +08:00 1
已 Star ,希望可以坚持下去,加油!
|
77
littlewing 2023-05-12 17:49:38 +08:00 1
"我不想也不能说 nature 解决了 xxx 问题,或者比 xxx 快多少。实际上 nature 只是我在学习计算机程序的构造与解释时产生的一颗种子。然后在过去的某个时刻,我决定让它发芽 🌱,所以我尽可能的将它完善并发布了出来。"
就为了这句话点赞 |
78
fionasit007 2023-05-12 17:52:12 +08:00
@likunyan 这个就没必要硬扯了。。。语言能好开放的,但是开发是一回事使用是一回事
|
80
xrr2016 2023-05-12 18:14:56 +08:00
牛,star 了
|
81
keith233 2023-05-12 18:27:32 +08:00
有点 cool
|
82
also1412 2023-05-12 18:28:26 +08:00
⭐️
|
83
x2ve 2023-05-12 18:37:32 +08:00
点赞
|
84
janus77 2023-05-12 18:39:12 +08:00 1
建议可以发一下初步的性能评估,如果有后来者真想用他做什么东西的时候,其实这方面会是很大的一个推动理由
|
85
buxudashi 2023-05-12 18:41:36 +08:00 1
建议作者看看另一个以前遇到过的小软件。aardio, 很多功能也是挺简洁的。尤其类库看看。windows 上用的。
|
86
yujieyu7 2023-05-12 18:48:41 +08:00
虽然是造轮子,但 op 绝对是大佬,而且对自身提高蛮大的,膜拜
|
87
kokdemo 2023-05-12 18:50:04 +08:00
很酷哇
|
88
mustcool 2023-05-12 18:57:07 +08:00
很强,加油
|
89
Nzelites 2023-05-12 18:58:07 +08:00
有没有用另说 但是酷啊!
|
90
jsjjdzg 2023-05-12 19:01:04 +08:00
牛啊,已 Star
|
91
imMetaverse 2023-05-12 19:08:35 +08:00
牛 膜拜下
|
92
fan1234nm 2023-05-12 19:13:25 +08:00
star 了 , 屌
|
93
iPhone11 2023-05-12 19:21:21 +08:00
看了示例 第一眼觉得像 golang 再看像 Rust 详细回家看 先 star 支持大佬
|
94
24bit 2023-05-12 19:22:23 +08:00
cool!
|
95
rus4db 2023-05-12 20:14:18 +08:00 1
很棒啊☆
在下多年前也做了一个语言实现,只不过是 Scheme 的: https://github.com/bd4sur/Animach 自举、完备、性能、生态、生产力、自己用,实现一门程序语言不容易。 加油☆ |
96
x500 2023-05-12 20:41:43 +08:00
已 starred
|
97
Mooon 2023-05-12 21:18:08 +08:00
后排合影
|
98
w3cll 2023-05-12 22:46:45 +08:00
火钳刘明
|
99
UKnowMe 2023-05-12 22:53:46 +08:00
支持 OP 太帅了
|
100
balabalaguguji 2023-05-12 22:54:54 +08:00
佩服,大佬
|