- zig
- rust
- go
- julia
- swift
- mojo
- ocalml
- scala
- groovy
- ReScript
一文解决现代编程语言选择困难:响应式编程_语言 & 开发_Ilya Suzdalnitski_InfoQ精选文章
作者:知乎用户
链接:https://www.zhihu.com/question/50121841/answer/2655796837
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
最近打算开一门编译器的课程, 需要一门low level的语言实现运行时(VM/GC),重新审视了几个系统编程语言C/C++/Rust/Zig,谈谈体会,结论放在最后 。
C语言 基本上可以理解为portable assembly, 提供稳定的ABI, 但是就基本上没有其他多余的抽象了,C23好像会加不少新的东西。C是一门极简的语言,任何把系统编程做职业的人都应该尝试写一个toy C compiler, 完成后会加深系统的认识。但是C提供的标准库,抽象都太少,写起来很累。
Rust是一门伪装成high level语言的low level 语言,但是确实这几门语言里面最high level的。因为底层很多unsafe的操作,实现起来很繁琐。所以Rust可能更适合app开发,但是app开发的话很多情况下可以接受GC, Rust的卖点主要在性能这块。Rust + GC会是一个不错的编程语言。
Zig是一门加强版的C语言,比Rust要low level很多,通过comptime实现了范型,有一定程度的reflection。因为是一门新的语言,自带的工具要多很多,内置测试功能。但是提供的抽象感觉还是不够用,每一个涉及到内存分配的函数几乎都要传递一个allocator,虽然初衷可以理解(多线程友好),但是使用起来确实太繁琐了,社区还是非常早期阶段,估计还要两年才能到1.0版本。作为一个非常底层的语言,我觉得它有生存空间,但是有限。
C++是一个怪兽。上面三种语言能做的事情基本都能做。唯一欠缺的是编译期间的反射支持有限。C++的设计出自太多人的大脑,非常不consistent,基本上每个特征都会互相冲突,套用最近比较时髦的话,新加的feature基本上都属于 翔上雕花,没有人可以完全掌握这些互相冲突的细节。
但是如果是个人项目的话,可以选择C和C++的一个子集,很快能把活干完, 短期内还是觉得C++比较靠谱点, every language sucks, some langauge sucks less..