V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
weiwenhao
V2EX  ›  程序员

我写了一个编程语言,受 golang 启发

  weiwenhao ·
weiwenhao · 18 天前 · 20924 次点击

大家好,我是 nature 编程语言的作者,自 2021 年第一次提交以来,一直到今天 nature 编程语言达到了早期可用版本。


为什么要实现这样一个编程语言?

golang 是我日常工作使用的编程语言,我一次使用 golang 时就被其所惊艳,语法简单,编程思想简洁自由,非常便利的进行交叉编译以及部署,拥有非常优秀且高性能的 runtime 实现,拥有先进的基于 goroutine 的并发风格设计等等。但是 golang 也有一些不方便的地方

  • 语法过于简洁导致表达能力不足
  • 类型系统不够完善
  • 错误处理机制繁琐
  • 自动 GC 和抢占式调度的设计虽然非常优秀,但是也让 go 的应用范围受限。
  • 包管理方式
  • interface{}
  • ...

nature 在设计理念上是对 go 编程语言的延续与改进,并追寻一定的差异性。在改善上述问题的同时,nature 拥有和 go 类似但更简洁的 runtime 、GMP 模型、allocator 、collector 、coroutine 、channel 、std 等等。并且 nature 同样不依赖 llvm ,有着高效的编译速度,方便的交叉编译与部署等,

基于 nature 编程语言已实现的特性,其适用于游戏引擎和游戏开发、科学计算和 AI 、操作系统和物联网、命令行、以及 Web 开发等领域。

当 nature 完成所有特性及优化时,预计 nature 可以在任何场景替代 golang 进行开发(转换为可读 golang 代码,以最低的试错成本的使用 nature ,并可以随时切换回 golang)。并且作为通用编程语言 nature 可以和任何的同类型编程语言进行竞争。[注意这还未完成]


两年前 nature 编程语言还不能使用,但我依旧在 V2EX 进行了分享,得到了很多鼓励,这是让我坚持到可用版本发布的动力之一。

但我知道, 这依旧有些迟了,我耗费了太久的时间,仅仅是又带来了一个编程语言而已,毕竟这个世界最不缺的就是编程语言。但是当我真的去思考类似 “我还要继续么?我能做好吗?” 这样的问题的时候,我发现我已经走了很远很远的路。


欢迎体验反馈~

github: https://github.com/nature-lang/nature

官网: https://nature-lang.org/ 首页包含一些语法特性示例,可以直接在 playground 尝试

语法文档: https://nature-lang.org/docs/syntax

playground: https://nature-lang.org/playground 在线尝试


贡献指南(点击右上角切换到中文)

https://nature-lang.org/docs/contribute 我在文档中详细介绍了 nature 编程语言是如何实现的。

nature 和 golang 一样,有着一个自研的编译器后端, 但 nature 的源码结构和实现非常的简洁。

这让参与 nature 编程语言的贡献变得容易且有趣, 不再只是编译器前端 + llvm ,你可以参与 SSA, SIMD, 寄存器分配,汇编器,链接器等等有趣的工作来验证你的学习成果和想法。你可以通过 issue 表达你的想法,我会指导你参与贡献。


这是我用 nature 实现的一些小项目, 我很喜欢使用 nature 编写代码的感觉。

https://github.com/weiwenhao/parker 轻量打包工具

https://github.com/weiwenhao/llama.n Llama2 推理模型 nature 编程语言实现

https://github.com/weiwenhao/tetris 绑定 raylib 实现的俄罗斯方块

https://github.com/weiwenhao/playground nature 官网的 playground server api 实现


最后,我正在寻找工作,如果你觉得这个项目还不错,希望能给我一个 star ,这对我有很大的帮助 🙏

315 条回复    2025-05-24 21:33:40 +08:00
1  2  3  4  
hydyy
    1
hydyy  
   18 天前   ❤️ 1
只能说声加油!
zoharSoul
    2
zoharSoul  
   18 天前   ❤️ 2
这异常处理看着舒服多了
enchilada2020
    3
enchilada2020  
   18 天前 via Android   ❤️ 1
非常 cool 非常 hacker
uppu
    4
uppu  
   18 天前   ❤️ 1
研究的越深就越容易走火入魔。性能才是核心!
yx1989
    5
yx1989  
   18 天前   ❤️ 1
真滴大佬,太酷了~
wuxier
    6
wuxier  
   18 天前   ❤️ 1
加油
weiwenhao
    7
weiwenhao  
OP
   18 天前
@uppu 我谨记
dogMan
    8
dogMan  
   18 天前   ❤️ 1
牛逼,加油
liaohongxing
    9
liaohongxing  
   18 天前   ❤️ 1
能有实际行动去做的话,非常的 hifi ,老兄加油。

粗浅问一下,编译是原生编译,还是在其他语言上实现的寄生语言。比如 rust
WillBeethoven
    10
WillBeethoven  
   18 天前   ❤️ 1
NB 支持
unclevv
    11
unclevv  
   18 天前   ❤️ 1
我艹,坛子里真是卧虎藏龙啊,还有这种大神,膜拜
TimPeake
    12
TimPeake  
   18 天前   ❤️ 1
6
liaohongxing
    13
liaohongxing  
   18 天前   ❤️ 1
import co ; 这个 co 希望能改下
weiwenhao
    14
weiwenhao  
OP
   18 天前   ❤️ 2
@liaohongxing 编译是原生编译,不转换为 llvm 或者 c 语言,直接编译成汇编逻辑,然后通过汇编器生成可链接器文件(object), 再通过链接器连接成目标机器的可执行文件。
sky3hao9
    15
sky3hao9  
   18 天前   ❤️ 2
牛逼啊 这片大陆还能长出这种嫩芽
Meld
    16
Meld  
   18 天前   ❤️ 1
这异常处理有点像 Java (我只写过 java python go )
weiwenhao
    17
weiwenhao  
OP
   18 天前
@liaohongxing 之前是 import coroutine , 我通常的写法是 import coroutine as co, 但因为 coroutine 使用太过频繁所以我直接改成了 co 。这个名字我纠结了很久,考虑过 coro(lua 就是这样),考虑过 coroutines, coroutine,cor 等等。 你的意见是啥,我会考虑进来的
weiwenhao
    18
weiwenhao  
OP
   18 天前
@Meld 就是类似 java 的传统异常处理,但是融入了基于 golang 和 rust 的值的错误处理思想。官网示例部分我没有展示完全,实际上也可以使用 try {} catch e {} 这种模式进行多行代码的错误捕捉。
Cestbonmmm
    19
Cestbonmmm  
   18 天前   ❤️ 9
建议直接进军信创业务
amoSjiang
    20
amoSjiang  
   18 天前   ❤️ 1
牛逼,加油
zeromake
    21
zeromake  
   18 天前   ❤️ 1
虽然我不是很想打击 op ,但是仔细看了一下发现二进制后端竟是手撸的 amd64 仅支持 linux osx ,真的不考虑投奔 llvm 吗……
supuwoerc
    22
supuwoerc  
   18 天前   ❤️ 2
光是文档质量就能看出来 op 是个大佬
Binwalker
    23
Binwalker  
   18 天前   ❤️ 1
问下写这个要看哪些书和资料?我目前把 craftinginterpreters 看完并且用自己熟悉的语言做了个类似的,但是感觉还差得挺远
hd7771
    24
hd7771  
   18 天前   ❤️ 1
不依赖 llvm 的话,其他的都好说,优化器怎么办。
weiwenhao
    25
weiwenhao  
OP
   18 天前
@zeromake arm64 也支持的,毕竟 osx 现在都是 arm64 了,我本地调试也是用 macmini m4 了。

投靠 llvm 的话就失去了简洁高效的编译器后端实现,llvm 太过的繁重,并且无法很好的支持交叉编译。

因为我一开始的设计目标是和 golang 一样方便的交叉编译和高效的编译速度,所以和 golang 一样,自研了编译器后端。
pursuer
    26
pursuer  
   18 天前   ❤️ 1
我很好奇被 Go 语法简单的吸引的用户,其他语言的高级特性不用也没什么影响。而 Go 这样衍生语言很多什么 go+,walang 还有这个 nature ,最终也是将其他特性丰富的语言的碎片组合,除了使生态分裂,感觉也没什么好处。
yituanmaoxian
    27
yituanmaoxian  
   18 天前   ❤️ 1
大佬发 hacker news 了吗
c9wB702Sy09OqLkC
    28
c9wB702Sy09OqLkC  
   18 天前   ❤️ 1
很棒,加油

写编程语言的复杂度可想而知,op 是怎么坚持下来的。

论编程语言的简洁与优雅,我感觉 python 相当不错了
zlkent
    29
zlkent  
   18 天前   ❤️ 1
虽然看不懂,但这种大牛,github 上还是要 star 一下表示支持~
weiwenhao
    30
weiwenhao  
OP
   18 天前
@yituanmaoxian 今晚或者明晚发。
joyoyao
    31
joyoyao  
   18 天前   ❤️ 1
加油,但是编程语言没个 5-10 年成不了气候,还要有自己的杀手锏应用。比如 go 有 docker, k8s 。rust 有 Wasm ,Firecracker 等。
Dreamerwwr
    32
Dreamerwwr  
   18 天前   ❤️ 1
NB ,加油!
weiwenhao
    33
weiwenhao  
OP
   18 天前
@pursuer 其实这里有一个很大的区别

vlang/go+/walang 和语法上都和 golang 很像或者是基于 golang 的语法进行了优化, 其他的和 golang 已经没有太大的关系了。
nature 语法上和 golang 不像,但是其他的都和 golang 基本保持一致(runtime ,协程,channel, GMP, GC ,mutex, 编译部署等等)。

生态分裂上面不可否认,但即使没有 go+,vlang,walang 。rust/zig/swfit/vlang 等系统编程语言也在瓜分 golang 的用户。
wlf92
    34
wlf92  
   18 天前   ❤️ 1
优秀
weiwenhao
    35
weiwenhao  
OP
   18 天前
@Cestbonmmm 很有想法,但是信创对编程语言的支持不是很好,主要以数据库,操作系统等运行终端工具为主,编程语言属于开发工具。
kylix
    36
kylix  
   18 天前   ❤️ 1
强力支持大牛
youyouzi
    37
youyouzi  
   18 天前   ❤️ 1
牛逼,STAR 双击了
dp
    38
dp  
   18 天前   ❤️ 1
牛的牛的 加油~
weiwenhao
    39
weiwenhao  
OP
   18 天前
@hd7771 在性能和编译速度之间进行一个平衡,只进行主要优化。
sunxfancy
    40
sunxfancy  
   18 天前   ❤️ 2
打开后发现,已经在当年 star 过了
ZSeptember
    41
ZSeptember  
   18 天前   ❤️ 1
支持一下,希望能发展的更好。
Cestbonmmm
    42
Cestbonmmm  
   18 天前   ❤️ 1
@weiwenhao 虽然看不懂+1 。个人感觉,你这种水平的大牛,带着这样一份早期可用版本的编程语言加入一家信创公司,会有人帮你把这个牛吹起来的。
Dreamerwwr
    43
Dreamerwwr  
   18 天前   ❤️ 1
感觉可以尝试下加入原生 AI 编程语言特性
weiwenhao
    44
weiwenhao  
OP
   18 天前
@Liler 主要是兴趣,另外我总是鼓励自己 “我可以做好”,算是给自己洗脑了。
Wuwenwen
    45
Wuwenwen  
   18 天前   ❤️ 1
牛的牛的
wywkwsw
    46
wywkwsw  
   18 天前   ❤️ 1
加油
knowckx
    47
knowckx  
   18 天前   ❤️ 1
我觉得那些语法上的优化都是小问题,
golang 的核心问题是不能把性能提升到和 C++/Rust 一个数量级

这使得很多底层/核心组件要考虑高性能的,一开始就不会选 Golang

不过能自己写编程语言 大佬还是很厉害
weiwenhao
    48
weiwenhao  
OP
   18 天前   ❤️ 1
@Dreamerwwr 没有 AI 编程语言吧,我倒是一直在思考 AI 时代的编程语言是什么样子的,我最终的想法大概是

1. 测试变得无比重要
2. ai 编写代码后应该由开发者 review ,所以可读性很重要
3. 传统的以文件为载体的编程结构可能不适合 ai 进行开发(具体的想法我就先不透漏了)
rozbo
    49
rozbo  
   18 天前   ❤️ 10
太有毅力了我只能说
我以前也造过 lisp 风格的脚本语言,但发现这只是开始,后需要配套解释器,lsp ,标准库,甚至语法高亮都得考虑进来,自己一个人做这些实在痛苦的没边。
坚持了几个月都放弃了。
但上天从不会让你经历没有用的事情。我这个小玩具最终让我得到了下一份工作。因为 boss 找到了应用场景,编译为字节码后用于某游戏的风控,动态下发检测。由于语法和生态都是没公开的,所以还是有一定价值。
我也坚信 op 做这些并非毫无意义,灿烂的花朵终会因你此前的灌溉开放,星光也从不会辜负埋头赶路的人。
lifespy
    50
lifespy  
   18 天前   ❤️ 1
看完文档提一点疑问:

如下是变量的定义方式:
int foo = 1 // v
float bar = 2.2 // v
string car = 'hello world'

如下是函数的定义方式:
fn function_name(parameter_list):return_type {
// 函数体
}

请问这两种为什么不统一呢?要么都类型后置,要么都类型前置,这样是不是一致性更好呢
weiwenhao
    51
weiwenhao  
OP
   18 天前
@knowckx golang 只是选择了 rust 不同的道路,所以有着不同的应用方向。但是选择 golang 的人确实会被上述问题影响到,但也知道无奈写下去。
Lighfer
    52
Lighfer  
   18 天前   ❤️ 1
支持一下,顺便问一下现在的稳定性怎么样呢?
weiwenhao
    53
weiwenhao  
OP
   18 天前
@lifespy 如果你写过 golang, 其实 golang 的返回值可以声明变量载体,大概是像这样

`func sum(a int, b int):(total int) {}` 我想表达的就是,其实依旧是类型前置,只是函数的返回值的类型放在了参数的后面,函数 body 的前面。
liuhan907
    54
liuhan907  
   18 天前
@knowckx 语法本身会大幅度影响最终性能,不可不仔细考虑。不过只要还关注编译速度等指标,那终究不能和完全不关心编译性能的一众语言比较最终性能的。
weiwenhao
    55
weiwenhao  
OP
   18 天前
@rozbo 谢谢你的鼓励 🥹
mightybruce
    56
mightybruce  
   18 天前   ❤️ 1
现在是 AI 时代了,都有 vibe coding 了,可能以后的语言想火也难了, 不如做 AI native 的编程语言,对大模型友好,结合函数式编程 lisp+逻辑编程 prolog 的语言

这里给几个参考
"中文提示词之神" 李继刚的 lisp 提示词写法
https://zhuanlan.zhihu.com/p/4903964046

将自然语言提示无缝嵌入到 Python 程序中,保持提示的可读性,同时继承宿主编程语言的模块化、可重用性、动态性和生态系统。

支持大模型生态的协议 MCP, A2A

对提示词做到编程增强

prompt-declaration-language

https://github.com/IBM/prompt-declaration-language

https://github.com/appl-team/appl

这是我的中肯建议。
xiaopanzi
    57
xiaopanzi  
   18 天前   ❤️ 1
强👍
pursuer
    58
pursuer  
   18 天前   ❤️ 1
@weiwenhao #33 大语言模型已经在力大飞砖了,编程语言生态还在分裂。我觉得一门编程语言生态非常重要。很多人说编程语言只是工具,但是我真不想用不同的工具造相同/相似的轮子了。
weiwenhao
    59
weiwenhao  
OP
   18 天前   ❤️ 1
@Lighfer 没有经过中大型项目验证,还有较多的 bug 。

作为早期的编程语言,目前适合以下类型的开发人员
- 技术探索者 —— 愿意尝试新事物,并能够承受早期版本存在的各种 bug 、有兴趣参与语言设计和改进的讨论
- 语言开发者和研究者—— 对编程语言设计和实现感兴趣的开发者、学习编译原理、学习如何实现一门编程语言
- 反馈贡献者 —— 愿意提供使用反馈的开发者、能够提交 bug 报告和改进建议、有兴趣参与项目建设及标准库完善

不适用于以下类型的开发人员
- 需要在生产环境使用的企业用户
- 对稳定性要求较高的项目开发者
- 想要寻找一份编程相关工作的初学者
- 需要大量第三方库支持的开发者
encro
    60
encro  
   18 天前   ❤️ 2
强,我一直关注 moonbit 。但是发现发展很慢。
lifespy
    61
lifespy  
   18 天前
@weiwenhao #53 这样设计是为了多返回值考虑吗?因为一般来说写法都是统一的,也符合直觉。
你看你方法里面的变量是类型前置:fn sum(int a, int b) 但是返回值成了后置。
不过这个语言的整体风格我很喜欢,我是主写 java 和 go 的,看到你这个异常处理,我真是太感动了
weiwenhao
    62
weiwenhao  
OP
   18 天前
@mightybruce 我对 n8n 类似的低代码流程编排很感兴趣,我有关于 vibe coding 的 idea ,后续会逐步完善。但可能独立于 nature 项目。
1BF6oSYCD9ngBHo1
    63
1BF6oSYCD9ngBHo1  
   18 天前   ❤️ 1
@youyouzi

> STAR 双击了

别闹,star 双击那是等于没 star 呀
weiwenhao
    64
weiwenhao  
OP
   18 天前
@pursuer 无论是 ai 写还是人写,代码都只是载体,总归是要写。只要你开始一个项目,总是要选择一种合适或者自己熟悉的编程语言,进行代码编写,不存在造轮子的说法。
cenbiq
    65
cenbiq  
   18 天前   ❤️ 1
牛逼,刚好有我喜欢的 3 门语言 C# / kt / go 的不同优点,从没见过这么心动的语言
misaka9527
    66
misaka9527  
   18 天前   ❤️ 1
厉害了,op 加油
weiwenhao
    67
weiwenhao  
OP
   18 天前
@encro 我也很关注 moonbit ,感觉 moonbit 有点骑虎难下的感觉,在 AI 时代正在发展中的语言可能难以有很好的突破。moonbit 一开始是基于 wasm 的语言,后续增加了 c 后端等宣传是通用编程语言和工具链。

虽然现在是大模型的时代,但我觉得 moonbit 还是应该将核心放在 wasm 生态,并进行推动与发展,张老师肯定也有这个实力。wasm 可能是比 ai 更早实现编程语言环境统一的工具。
mightybruce
    68
mightybruce  
   18 天前   ❤️ 1
可以关注关注提示词增强的编程语言, 面向提示词的编程语言,未来肯定是提示词+编程混合语言的天下
n8n 不算多先进,多看看 deep research agent, 我也在搞专门的 k8s deep research agent,
openai 发布的 codex 又一次加速了 AI 编程
如果说 Cursor 是需要我们结对编程才能干活的实习生,那么 Codex 就是外包员工,任务甩过去就不用管了,完成后验收一下,不合格就让它重做一遍,直到满意为止, 现在 codex 还没完善。
lifespy
    69
lifespy  
   18 天前
@cenbiq #65 哈哈同感,无论是异常处理,还是协程,结构体默认值,都感觉很舒适。恨不得马上流行起来,太适合写业务了
mengyaoren
    70
mengyaoren  
   18 天前   ❤️ 1
真这厉害啊。
cenbiq
    71
cenbiq  
   18 天前   ❤️ 1
@cenbiq 唯一有一个我觉得不太明确的地方
```
int n = 3
match n {
1 | 2 -> ...
3 -> ..
_ -> ...
}
```
这里的 1 | 2 是否容易造成歧义?第一眼我会纠结一下是 1 | 2 = 3 还是逻辑表达 1 or 2 。这里是不是用 or / and 这样的关键字和位运算符 | 区分一下更好呢
weiwenhao
    72
weiwenhao  
OP
   18 天前
@lifespy 一开始的考虑是完全和 c 一样 int sum(int a, int b), 但是这样在编写匿名函数时可读性很差。call(int sum(int a, int b)) 类似这样难以读,所以添加了 fn 引导函数。此时面临的选择就是 fn int sum(int a, int b), 一个叫 c3lang 的编程语言的选择就是这样。而我最终的选择就是将返回类型放在后面。
lepig
    73
lepig  
   18 天前   ❤️ 1
这文档看着是真的舒服, 只能佩服大佬
imes
    74
imes  
   18 天前   ❤️ 1
我最喜欢的是 rust 的 cargo ,一只在幻想有一天 Golang 也有 cargo ,但是迟迟没有动手自己搞一个。看了一下,你的基础太扎实了,nature 的编译器后端还是自己做的。
HENQIGUAI
    75
HENQIGUAI  
   18 天前   ❤️ 2
op 这样的是我心中的程序员
ccpp132
    76
ccpp132  
   18 天前   ❤️ 1
不支持 win 谈游戏开发还是有点遥远 233
weiwenhao
    77
weiwenhao  
OP
   18 天前
@cenbiq 嗯,我会考虑。实现上我进行了优先匹配,| 会被识别成分隔符,如果需要逻辑或需要 (1|2) 这样写。
v2orz
    78
v2orz  
   18 天前   ❤️ 1
我来 V2EX 就是为了看这样的大佬的……真的牛
weiwenhao
    79
weiwenhao  
OP
   18 天前
@ccpp132 哈哈,其实支持 win 只有一步之遥,我在等一个交叉链接器,能够在 macos 上直接连接成 windows 程序。自己写还是有些困难和繁琐。目前只找到 zig ld 实现了,可惜没有独立过来,但恰好我使用了 c 语言实现源码,我在考虑要不要拥抱 zig 生态。
bruce0
    80
bruce0  
   18 天前   ❤️ 1
几年前在 V 站发的时候就 star 了,当时觉得 OP 很有想法,也非常强, 好长时间没看到了,今天又看到了,OP 原来一直在坚持,牛批
lisxour
    81
lisxour  
   18 天前   ❤️ 1
现在的轮子都开始卷到语言层面了吗
ninjashixuan
    82
ninjashixuan  
   18 天前   ❤️ 1
挺好,新语言好像类型后置比较多,个人也比较喜欢类型后置。
bv
    83
bv  
   18 天前   ❤️ 1
看着像是受 rust 启发吧😅
closedevice
    84
closedevice  
   18 天前   ❤️ 1
老哥之前是干啥工作的,这功底可以
Bronya
    85
Bronya  
   18 天前   ❤️ 1
我的天啊,真是太酷了!!!

既有 go 的协程,又没有 go 恶心的错误处理,又是原生编译,而且还有联合类型/nullable ,尖括号泛型,模式匹配
太厉害了!
lifespy
    86
lifespy  
   18 天前
@weiwenhao #72 我刚刚第一时间也想到了这个,类型前置的话写匿名函数和多返回值时确实不好看。这门语言确实非常棒,有我喜欢的所有特性,考虑支持 win 吗
wsseo
    87
wsseo  
   18 天前   ❤️ 1
建议加入仓颉团队。
weiwenhao
    88
weiwenhao  
OP
   18 天前   ❤️ 1
@bruce0 一个协程实现+抢占式调度直接把我干懵逼了,耗费了我差不多半年时间也无法妥善处理, 有点难以继续的感觉。然后其他事情也比较多导致开发上一直断断续续,所以在这期间只是默默开发,没有发过任何版本和推广,打算直接写到可用版本,一眨眼就过了两年。
weiwenhao
    89
weiwenhao  
OP
   18 天前
@v2orz 我也很感觉 V2EX 的用户们,给了我很多的支持和帮助
yunpiao111
    90
yunpiao111  
   18 天前   ❤️ 1
混迹 v 站多年, 终于见到牛批的人了
weiwenhao
    91
weiwenhao  
OP
   18 天前
@lisxour 主要是兴趣,我们都是 hacker
CoffeeY
    92
CoffeeY  
   18 天前   ❤️ 1
支持下,加油!
weiwenhao
    93
weiwenhao  
OP
   18 天前
@bv 和 rust 关系基本不大,我也不太熟悉 rust 编程语言。仅仅是类型声明上参考了 rust 实现。
xixi1412
    94
xixi1412  
   18 天前
@Binwalker 推荐 “Writing a C Compiler“ 这本书( 24 年出版)。编译器前后端整个实现流程,无任何三方库依赖,手把手带你走一遍,复杂的东西都拆解为很简单的概念给你讲解。章节设计,语言表达都很棒。没有学过编译原理看他也是很轻松,可以看完这本书合作和看的同时补一下。要是有编译原理基础的,基本上就是把理论直接落地实现,把那些离散/抽象的点,联系并应用起来,经脉都畅通了。
Arrowing
    95
Arrowing  
   18 天前   ❤️ 1
有能坚持的事情真的是太美好了,关键是 OP 还能坚持下来,厉害 👍
weiwenhao
    96
weiwenhao  
OP
   18 天前
@closedevice 之前做 CDN 和边缘计算。编程语言主要是兴趣推动和工作关系不大。
coefuqin
    97
coefuqin  
   18 天前   ❤️ 1
千万不要和什么原生 AI 提示词编程语言挂钩,这一块还不明朗,大部分人只能看到眼前的这部分,当前的 LLM 已经是强弩之末了。不是捧一踩一,你比另外一个喷天喷地的 wangying 牛逼。江湖最高礼仪,star 奉上。
xingcy
    98
xingcy  
   18 天前   ❤️ 1
@weiwenhao 只能说 op 太强了,好奇 op 年龄多大,是否结婚,是否有孩子了?

我只是感叹,人们一直说国内的开源氛围并不好,企业 996 ,下班回家还有家庭,有孩子,还要挤出时间来做开源,一做就是 2 年。

好奇 op 是如何平衡工作、家庭、开源之间的关系的。

我是个俗人,如果说我有 op 这样的技术能力,可能还是想用自己的本事多赚些钱,哈哈,采访一下 op 关于这些点是如何权衡的。
weiwenhao
    99
weiwenhao  
OP
   18 天前   ❤️ 23
@Binwalker 主要是这些资料,我也看了 crafting interpreters ,还不错。

1. sicp (有 python 和 js 版本),推荐和视频一起观看。
2. 编译器设计(第二版),部分章节,推荐看英文版,中文版实在是看不懂。
3. 现代编译原理 —— C 语言描述,部分章节,主要是 ssa 部分。
4. [crafting interpreters]( https://craftinginterpreters.com/) 非常推荐
5. 自己动手构造编译系统 —— 编译、汇编、与连接,主要看了汇编部分
6. Linear Scan Register Allocation for the Java HotSpotTM Client Compiler ,线性扫描寄存器分配基于该论文编写
7. Linear Scan Register Allocation on SSA Form ,ssa 形式线性扫描寄存器分配
8. [Writing a Memory Allocator]( http://dmitrysoshnikov.com/compilers/writing-a-memory-allocator/) 内存分配与垃圾回收课程
9. golang/tcmalloc ,内存分配和垃圾回收实现上参考,不过我源码阅读能力有限,所以看的都是文章解析。
10. [bspaans/jit-compiler]( https://github.com/bspaans/jit-compiler) 汇编器部分参考实现,具体指令编码参考 intel 手册第二卷
11. 程序员的自我修养——链接装载与库,学习连接器与 ELF 文件构成
12. [Tiny C Compiler]( https://bellard.org/tcc/) 连接器部分参考实现
weiwenhao
    100
weiwenhao  
OP
   18 天前   ❤️ 1
@Binwalker 不要自己写,找几个伙伴一起写。最好直接入 llvm 快速验证想法,最好规划好开发周期,不要投入过度的时间。不要用 C 语言实现。推广是一个持续的过程,要不时和用户进行分享。
1  2  3  4  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2590 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 28ms · UTC 04:42 · PVG 12:42 · LAX 21:42 · JFK 00:42
Developed with CodeLauncher
♥ Do have faith in what you're doing.