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