V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
weiwenhao
V2EX  ›  程序员

这是我开发的编程语言 nature

  weiwenhao ·
weiwenhao · 321 天前 · 10350 次点击
这是一个创建于 321 天前的主题,其中的信息可能已经有所发展或是发生改变。

当正式版本发布时,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 条附言  ·  237 天前
过去这些天又发布了两个版本,https://github.com/nature-lang/nature/releases 主要是支持了 泛型/联合类型/null 安全/重载/包管理/基础标准库 syscall 以及一些语法优化等等。

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

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

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

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

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

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