• 请不要在回答技术问题时复制粘贴 AI 生成的内容
weiwenhao
1.3D
V2EX  ›  程序员

这是我开发的编程语言 nature

  weiwenhao ·
weiwenhao · May 12, 2023 · 15167 views
This topic created in 1271 days ago, the information mentioned may be changed or developed.

当正式版本发布时,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),大家如果有摸鱼群也可以帮忙分享一下,谢谢大家了。

另外早上发布过一次,但是节点选错了,不知道沉到哪里去了,我就厚着脸皮再发一次 🙏

Supplement 1  ·  Aug 4, 2023
过去这些天又发布了两个版本,https://github.com/nature-lang/nature/releases 主要是支持了 泛型/联合类型/null 安全/重载/包管理/基础标准库 syscall 以及一些语法优化等等。

不过附言的主要目的是,建了一个群用来同步版本更新信息,编译器/编译原理/编程语言等有意思的东西我也会同步到 wechat 群里里面

可以添加微信号 nature-lang 备注 “申请加群” 进群, 或者留下你的微信号我拉你~
121 replies  •  2023-09-27 10:30:31 +08:00
1  2  
❮ ❯
TtTtTtT
TtTtTtT
May 12, 2023❤️1
1
超 cool ,要是能背靠大厂就不愁没人转发了!
hsfzxjy
hsfzxjy
May 12, 2023 via Android❤️4
2
赞~个人觉得,因为“想做”就去做的项目也是值得支持的
dunhanson
dunhanson
May 12, 2023
3
没有中文文档?
weiwenhao
weiwenhao
OP
May 12, 2023
4
@hsfzxjy 感谢鼓励 ✨
kaz10025
kaz10025
May 12, 2023❤️1
6
膜拜大佬~已 star🥹
dw2693734d
dw2693734d
May 12, 2023
7
专业啊
Oktfolio
Oktfolio
May 12, 2023
8
做了每个 programmer 想做的事
0littleboy
0littleboy
May 12, 2023
9
nb
githmb
githmb
May 12, 2023
10
能用了吗?自举一下
weiwenhao
weiwenhao
OP
May 12, 2023
11
@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'
xiaotiancheng
xiaotiancheng
May 12, 2023
12
牛皮
yazinnnn
yazinnnn
May 12, 2023
13
变量类型在左, 函数返回值类型在右, 函数参数的类型又在左....

用 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)
LUO12826
LUO12826
May 12, 2023
14
竟然没用 LLVM 全手撸,而且还是 c ,有点猛
zttviYang
zttviYang
May 12, 2023
15
我依稀记得几年前你在 Laravel China 上发布过一些文章
weiwenhao
weiwenhao
OP
May 12, 2023❤️1
16
@yazinnnn 是的,这几个月我定了太多的语法,开发语法太简单了,一天就能集成一个语法,但是我觉得这样很不好,所以我希望能得到更多人意见,更好的参考资料。 如果现在是 0.1 版本,不提供稳定的语法 api. 就是希望还能有机会反悔。
weiwenhao
weiwenhao
OP
May 12, 2023
17
@zttviYang 哇,应该是的,我之前是一名 laraveler 😊
weiwenhao
weiwenhao
OP
May 12, 2023
18
@LUO12826 你都看起源码了 🫰。 因为一开始是学习目的而非找到工作的目的,所以没有打算去学习怎么调用 llvm 的 api, 另外 c++ 项目对我来说学习成本和源码阅读成本有些高。
ired
ired
May 12, 2023
19
加油
cohen121
cohen121
May 12, 2023❤️1
20
厉害,已 star ,持续关注下
QKgf555H87Fp0cth
QKgf555H87Fp0cth
May 12, 2023
21
国产第一个编程语言?
woshipanghu
woshipanghu
May 12, 2023
22
大佬 支持下
ijyuqi
ijyuqi
May 12, 2023
23
强,持续关注下
itskingname
itskingname
May 12, 2023
24
在哪个版本会让它自举?用 nature 实现 nature 的编译器
heliker
heliker
May 12, 2023 via Android
25
关注
weiwenhao
weiwenhao
OP
May 12, 2023
26
@likunyan 已经有很多了吧,关注度比较高的,比如华为的方舟编译器,凹语言,易语言,go+, 木兰语言等等
weiwenhao
weiwenhao
OP
May 12, 2023
27
@itskingname 这个感觉不太重要,所以不在规划内,倒是有一个其他的计划,暂时保密。
veike
veike
May 12, 2023
28
已 star ,顺便收藏了贴子。只要是有人开发语言不论出于什么目的,我都会支持。
另外问一下,能否给一个开发编程语言的学习路径,对这方面非常感兴趣。凹语言的群我也加过了。
weiwenhao
weiwenhao
OP
May 12, 2023
29
@veike https://nature-lang.org/docs/prologue/contribution-guide 相关资料部分就是我的学习路线
weiwenhao
weiwenhao
OP
May 12, 2023
30
@likunyan 差点忘了,做的最好的应该是 rescript
veike
veike
May 12, 2023
31
@weiwenhao 谢谢
excitedXXX
excitedXXX
May 12, 2023❤️1
32
已 star ,能把想法变成现实已经很牛逼啦
matrix1010
matrix1010
May 12, 2023
33
op 是全职在写这个还是工作之余写一写? 推广的好理论上 star 应该能比普通项目多,但问题是作为一个语言也仅仅是 star 多而已,可能没人会真去用。如果用来找工作估计也效果没那么好
dk7952638
dk7952638
May 12, 2023❤️2
34
这语言设计没得说,但是我觉得现阶段想创造一门成功的语言,还是看生态和轮子的丰富程度,我觉得至少出一个像样的框架,比如说一套符合语言设计风格的 web 框架
weiwenhao
weiwenhao
OP
May 12, 2023
35
@matrix1010 工作之余写一写,我把 star 作为是对我的一个正向反馈,让我更加有动力进行下一阶段。 另外我也期望能有一个全职写的机会,我的工作确实比较忙。
KMpAn8Obw1QhPoEP
KMpAn8Obw1QhPoEP
May 12, 2023 via Android
36
厉害…
gooplexsle
gooplexsle
May 12, 2023
37
666
luckyv2
luckyv2
May 12, 2023❤️1
38
挺好的 看起来函数定义和 rust 差不多,最近在看 rust 难搞哦
有自己想法,值得支持的
24Arise
24Arise
May 12, 2023❤️1
39
厉害,已 star .
pota
pota
May 12, 2023
40
star 了 支持一下
matrix1010
matrix1010
May 12, 2023 via iPhone❤️1
41
关于名字 op 也可以再考虑考虑,比如我 google nature 或者 nature language 估计都搜不到这个,因为 nature 用的太广泛了
Helsing
Helsing
May 12, 2023 via iPhone❤️1
42
厉害,支持
weiwenhao
weiwenhao
OP
May 12, 2023
43
@matrix1010 @dk7952638

感谢建议
stkstkss
stkstkss
May 12, 2023 via iPhone
44
牛
proletarius
proletarius
May 12, 2023
45
大佬有考虑过出视频吗,想学习学习
Isu
Isu
May 12, 2023
46
厉害呀,没用 llvm
lsiufD
lsiufD
May 12, 2023
47
为行动派点赞
ren2881971
ren2881971
May 12, 2023
48
牛!给你点赞
summerLast
summerLast
May 12, 2023
49
@proletarius 学习下 sicp 就基本入门了
summerLast
summerLast
May 12, 2023
50
@summerLast 前者是实现的玩具 https://github.com/sunxyz/rust-lisp
后者是严格按 scheme 语法开发的 https://github.com/sunxyz/scheme4r
tanghongkai
tanghongkai
May 12, 2023
51
star 了,正好课内也在学习相关内容,甚至还不是用 llvm 纯手撸的
getoffworkontime
getoffworkontime
May 12, 2023
52
🐂
Stoney
Stoney
May 12, 2023 via iPhone
53
膜拜大佬
forty
forty
May 12, 2023
54
JS/TS 人看了觉得很亲切
forty
forty
May 12, 2023
55
支持函数重载吗?
9dP06m83vIV00l72
9dP06m83vIV00l72
May 12, 2023
56
fn fib(int n):int
===》 函数定义 C/C++ 已经有很成熟的范式了,为何要跟风搞这些奇怪的语法呢?
ShadowPower
ShadowPower
May 12, 2023
57
@andytao 这种语法形式写 parser 比 C/C++那种简单一些
9dP06m83vIV00l72
9dP06m83vIV00l72
May 12, 2023
58
能否基于 C/C++/C#/Vala 并再做一些减法,输出一个新的原生语言:
C --> C++ --> C#(C++++) -->Vala(C#+) --> C niubility(C#++,C++++++, sample.niu / sample.ctrip)
9dP06m83vIV00l72
9dP06m83vIV00l72
May 12, 2023
59
@ShadowPower 能省则省,简洁为上。
mooddance
mooddance
May 12, 2023
60
大致看了下语法,看到了很多语言的样子。能介绍下你这个语言有哪些特点吗?
ShadowPower
ShadowPower
May 12, 2023❤️1
61
@andytao C/C++的语法里,一个函数定义的开头是函数返回值,parser 至少要读取到第 3 个 token 才能确定第一个 token 是什么类型。
如果语言要支持泛型,哪怕照搬 C#的那种写法,这个工作量就更大了。

把函数返回值放在末尾,还方便在语法设计里省略书写返回值类型,只需要编译器自己推导。尤其是类型特别复杂的时候。而不需要用 var 、auto 之类的东西作为代替。
Margarethe
Margarethe
May 12, 2023
62
给你点赞,做了我一直想做,但是没时间也没能力做的事
weiwenhao
weiwenhao
OP
May 12, 2023
63
@ShadowPower 一开始是想类型全部前置的,可以在 examples 目录里面看到,但是在最后几个月,我发现 虽然函数返回类型前置能够省略 fn 符号的编写,但是在编写高阶函数时,尤其是匿名函数会非常的丑陋和不可读
weiwenhao
weiwenhao
OP
May 12, 2023
64
@forty 目前不支持哦,但是这是我非常喜欢的一个功能,我计划在设计泛型时一起考虑进来。
weiwenhao
weiwenhao
OP
May 12, 2023
65
@Margarethe 每个人都有能力的,时间才是问题。
weiwenhao
weiwenhao
OP
May 12, 2023
66
@mooddance 官网首页有三个特征,都是和某一我使用过的热门语言对比,但是因为这是属于拿硬币的直径和笔记本的厚度做对比,所以我不太好意思直说是什么语言了。

https://nature-lang.org/docs/getting-started/meet-nature 文档这里包含 nature 自身具有的一些特征。 如果使用雷式对比法则的话,其实是有一些特点的。但是目前都不太敢明目张胆的说出来,怕话说的太满反而适得其反
lilei2023
lilei2023
May 12, 2023
67
这玩意没点功底,搞不定,厉害
Esen
Esen
May 12, 2023
68
厉害了,膜拜大佬
TwoCookie
TwoCookie
May 12, 2023
69
star 支持一下
kangkag0231
kangkag0231
May 12, 2023
70
cool 做了很多人想做的事
bruce0
bruce0
May 12, 2023
71
吊啊卧槽, 整个全手撸的 我还以为是套了其他编译器或者语言的东西(比如 llvm) 竟然全手撸 牛逼
17681880207
17681880207
May 12, 2023
72
不服不行...😀
arvinsilm
arvinsilm
May 12, 2023
73
Github 的 README 是否可以加上官网和文档的链接,只看这个 README 感觉介绍的太简洁了
urlk
urlk
May 12, 2023
74
有点像 PHP 和 Go 的结合体
kujio
kujio
May 12, 2023
75
有大厂的话就可以 “国产、自研、创新” 了
Radiation
Radiation
May 12, 2023❤️1
76
已 Star ,希望可以坚持下去,加油!
littlewing
littlewing
May 12, 2023❤️1
77
"我不想也不能说 nature 解决了 xxx 问题,或者比 xxx 快多少。实际上 nature 只是我在学习计算机程序的构造与解释时产生的一颗种子。然后在过去的某个时刻,我决定让它发芽 🌱,所以我尽可能的将它完善并发布了出来。"
就为了这句话点赞
fionasit007
fionasit007
May 12, 2023
78
@likunyan 这个就没必要硬扯了。。。语言能好开放的,但是开发是一回事使用是一回事
weiwenhao
weiwenhao
OP
May 12, 2023
79
@arvinsilm 可以,我现在去搞一个
xrr2016
xrr2016
May 12, 2023
80
牛,star 了
keith233
keith233
May 12, 2023
81
有点 cool
alphato1o
alphato1o
PRO
May 12, 2023
82
⭐️
x2ve
x2ve
May 12, 2023
83
点赞
rb6221
rb6221
May 12, 2023❤️1
84
建议可以发一下初步的性能评估,如果有后来者真想用他做什么东西的时候,其实这方面会是很大的一个推动理由
buxudashi
buxudashi
May 12, 2023❤️1
85
建议作者看看另一个以前遇到过的小软件。aardio, 很多功能也是挺简洁的。尤其类库看看。windows 上用的。
yujieyu7
yujieyu7
May 12, 2023
86
虽然是造轮子,但 op 绝对是大佬,而且对自身提高蛮大的,膜拜
kokdemo
kokdemo
May 12, 2023
87
很酷哇
mustcool
mustcool
May 12, 2023
88
很强,加油
Nzelites
Nzelites
May 12, 2023
89
有没有用另说 但是酷啊!
jsjjdzg
jsjjdzg
May 12, 2023
90
牛啊,已 Star
imMetaverse
imMetaverse
May 12, 2023
91
牛 膜拜下
fan1234nm
fan1234nm
May 12, 2023
92
star 了 , 屌
iPhone11
iPhone11
May 12, 2023
93
看了示例 第一眼觉得像 golang 再看像 Rust 详细回家看 先 star 支持大佬
24bit
24bit
May 12, 2023
94
cool!
rus4db
rus4db
May 12, 2023❤️1
95
很棒啊☆
在下多年前也做了一个语言实现,只不过是 Scheme 的: https://github.com/bd4sur/Animach
自举、完备、性能、生态、生产力、自己用,实现一门程序语言不容易。
加油☆
x500
x500
May 12, 2023
96
已 starred
Mooon
Mooon
May 12, 2023
97
后排合影
w3cll
w3cll
May 12, 2023
98
火钳刘明
UKnowMe
UKnowMe
May 12, 2023
99
支持 OP 太帅了
balabalaguguji
balabalaguguji
May 12, 2023
100
佩服,大佬
1  2  
❮ ❯
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4992 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 190ms · UTC 06:56 · PVG 14:56 · LAX 22:56 · JFK 01:56
♥ Do have faith in what you're doing.