关于我最近几年在做的 nature 编程语言

AI摘要
Nature是一门新兴开源编程语言,旨在提供简洁优雅的开发体验,支持跨平台软件开发。其设计借鉴Go和Rust,具备强类型、协程、泛型等特性,错误处理采用T!/T?语法。作者认为编程语言的价值在于实际创造,并分享了对AI编程的见解:AI更适合语法简单、类型系统的语言。文末提到获得国内开发者捐赠,体现对国产编程语言的期待与支持。

nature 是一款通用开源编程语言与编译器,期望为开发者提供简洁优雅的开发体验,能够简单高效构建出安全可靠的跨平台软件。你可以通过 github 或者官网获取 nature 编程语言的所有信息。

github github.com/nature-lang/nature

官网 nature-lang.cn/

我再快速介绍一下 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 元的巨额捐赠。当时我不敢相信自己的眼睛,泪水在我的眼眶打转,那一刻大概是感动和释怀吧。

这笔捐赠的对我的意义超过了其金额本身,这是一份巨大的鼓励与肯定,让我更加坚定,而不仅仅是自我鼓励,过去我时常告诉自己,”我可以做的更好!”。

捐赠者只是一位个人开发者,我相信对他来说这也不是一笔不小数目,而他仅仅是希望国产编程语言能够做好而已! 有些开发者可能不喜欢国产这个字眼,包括我自己。但现在我意识到,更多的开发者真心实意的希望国产编程语言能够做好,能够站上更高的舞台。

本作品采用《CC 协议》,转载必须注明作者和本文链接
我正在全力开发 nature 编程语言,如果我的文章对你有帮助,希望能获得一个 star,这对我的帮助非常大。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 7
欲饮琵琶码上催

随后我就收到了一笔 36012 元的巨额捐赠,这个数字是有什么含义么?竟然不是整数。 :joy:

16小时前 评论
weiwenhao (楼主) 16小时前
Jyunwaa

社区里已经有好几个自己造语言的哥们了

15小时前 评论

直接编译为目标平台的机器码,并支持交叉编译与链接,无需第三方库如 llvm

这个好评

15小时前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!