nature 是一款通用开源编程语言与编译器,期望为开发者提供简洁优雅的开发体验,能够简单高效构建出安全可靠的跨平台软件。你可以通过 github 或者官网获取 nature 编程语言的所有信息。
github github.com/nature-lang...
我再快速介绍一下 nature 编程语言,首先从一个由 nature 编写的 express 风格的 api 为例

从这简短几行代码中,你已经可以了解 nature 的整体风格,比如模块化与包管理,强类型且类型前置,go 关键字引导的协程,还有 json 处理中的泛型和 nullable,使用 throw+catch 进行错误处理,并且你也已经学会了 nature 的变量(var)、常量(const)、类型(type)、函数(fn) 的定义方式。
nature 就是这么简单且直观的一门编程语言,毫不夸张的说你已经掌握了 80% 语法。如果你还算有兴趣的话,让我再为你增加 5% 的掌控度。上面代码中你可能注意到了一个让你费解的 ! 符号出现在了函数返回值的后面。
这实际上是属于 nature 错误处理的一部分,如果你了解 T?
这种表达方式,你也许可以猜到 T!
的作用。
T? 实际上是 Option<T>
也称为 nullable<T>
的简写方式,在 c#,js,rust 编程语言中都有所体现。
T! 则是 Result<T,E>
的简写方式,而 throw/catch 不过是语法糖罢了,nature 同样采用显示错误处理方式。
通过对比 rust,希望能让你更加清晰的了解 nature 是如何完成错误处理的。

短暂的语法教学就到此为止,nature 中还有很多有趣的语法,你可以参考语法文档了解 nature-lang.cn/docs/syntax ,接下来我还想聊聊别的
为什么要写编程语言?
当我第一次提交 nature 的代码仓库时,我将这一切作为一种爱好,没有 kpi,没有目标,我仅仅是在做我感兴趣的东西。
而作为一个 golang CURD Boy,我明显的感觉到 golang 编写代码的时候的非常繁琐,包括语法和标准库。所以我从来都没有想过改变或者颠覆什么,我仅仅是希望 nature 编程语言相比于 golang 写起来能够自然一点,简洁一点。
但编程语言不同于其他的工具类项目,无论你吹的多么的天花乱坠亦或是真的很牛逼,这都难以成为开发者选择的理由。在我看来 nature 编程语言本身没有任何的价值,真正有价值的是使用 nature 编程语言创造的东西。
在早期这是矛盾且艰难的,无论是对语言的推广者还是承担风险的使用者来说。但每当我使用 nature 写下代码时,我都能感觉到 nature 编程语言正在创造着价值,所以无论是否有开发者愿意选择 nature,我都会是 nature 编程语言的最后一个使用者。
AI 与编程语言
当 chatgpt 刚出来的时候我也以为这个世界会被 AI 改变,这几年我不停的能听到各种革命性的颠覆性的改变与创新,尤其是最近一年的 AI 编码与编辑器的大战。但当我真的去体验并将其用于实际开发时,我并没有感觉到多么具有颠覆性,从 gpt3.5 到 claude 4 在我看来并没有什么本质的区别。AI 依旧是只能独立完成一些 demo,一个简单的小游戏,但也仅此而已,即使你给出具体的条目让 AI 进行优化,但 demo 始终是 demo。
看起来 AI 并没有这么的全知全能,AI 也不能解决千禧年难题,更多情况下 AI 依旧只能作为开发者的辅助工具,仿佛能够看到 AI 的尽头就只是一位普通的开发者。当然能多出这么多普通开发者依旧是一件非常可观的事情。
虽然匮乏的语料让 AI 编写新的编程语言时总会有一些小的语法错误。但相对的丰富但混乱的语料也会让 AI 产生更多的幻觉。比如我同时让 flutter 和 react native 完成相同的 app,AI 能更好的完成 flutter app 的代码编写,错误处理等。而面对 react native 产生的错误时, AI 自己也难以找到真正的问题并修复,只会不停的尝试各种可能,不停的简化,最终变成一个更加基础的 demo。
还有一组对比是在让 AI 完成 golang/rust 相关项目。AI 在 golang 上的完成度更高。这有很多可能的原因,比如 golang 的稳定兼容性和优质的文档等,但还有一个重要的原因是 golang 更加的简单且语法具有普遍性。而复杂的 rust 即使是 AI也有些不知所措,就算把错误信息丢给 AI 也无法解决复杂的生命周期和所有权问题。
所以我有几条浅显的结论
-
AI 更适合编写强类型编程语言,可以根据静态分析反馈进行修复,一旦代码编译通过,则大概率运行也没有问题。所以类型系统越完善 AI 的完成度越高。
-
AI 更适合简单且语法具有普遍性的编程语言
-
开发者需要帮 AI 进行 review,所以编程语言的可读性非常重要
-
测试一如既往的重要,存在完整的测试流程时,开发者可以更加放心的 accept AI 生成的代码。
AI 时代依旧会诞生新的编程语言,就像会诞生新的数据库,新的操作系统,新的工具,新的文章一样。编程语言只要注重上述的几条结论,以及语法兼容性,核心库的维护,AI 依旧可以使用该编程语言输出优秀的代码,甚至超过一些历史包袱严重,版本更迭混乱的编程语言。
一笔捐赠
几个月前我发布 nature 编程语言的时候,一位开发者通过邮件联系我希望能够捐赠该项目,因为 github sponsor 无法使用国内信用卡,所以我留了支付宝账号给他。随后我就收到了一笔 36012 元的巨额捐赠。当时我不敢相信自己的眼睛,泪水在我的眼眶打转,那一刻大概是感动和释怀吧。
这笔捐赠的对我的意义超过了其金额本身,这是一份巨大的鼓励与肯定,让我更加坚定,而不仅仅是自我鼓励,过去我时常告诉自己,"我可以做的更好!"。
捐赠者只是一位个人开发者,我相信对他来说这也不是一笔不小数目,而他仅仅是希望国产编程语言能够做好而已! 有些开发者可能不喜欢国产这个字眼,包括我自己。但现在我意识到,更多的开发者真心实意的希望国产编程语言能够做好,能够站上更高的舞台。