I'm OWenT

Recent content on I'm OWenT

马上订阅 I'm OWenT RSS 更新: https://owent.net/index.xml

初识Rust

2018年4月24日 05:54

前言

虽然我主要使用C++,但是最近也想学点现代化的新语言。初步想的是从golangRust里先选一个。

这两年golang在国内很火,最大的特点莫过于语言层面提供了协程支持,能够极大地简化异步逻辑地理解。我之前也接触过一点,还写了个goroutine压力测试对比我的libcopp的性能。但是golang的语法我实在不喜欢,特别是那个不管啥类型声明都是反着来,感觉在复杂的类型下会非常反人类。而且听用过的人说golang的GC还很不稳定。另外之前有新闻说golang正在准备2.0,2.0版本即将加入泛型支持,然后导致很多语法不兼容和语法分析得重写。所以我还是懒得踩这个坑了,至少等2.0出来再说。

Rust是Mozilla搞出来想拿来重写Firefox的。说实话Mozilla和Google还有点差距,导致Rust的发展还比较慢。对比起来就是感觉golang很快就提供了一些快速可用的原型给大型项目使用,标准库也足够丰富。而Rust还纠结在底层、语言层面的优化和最求极致。很多组件都还不成熟,编程设计模型也还没完全统一。

但是接触了一点Rust以后,我发现Rust真的是挠到了C++程序员的痒点,语言层面解决了用C++得费很多脑力和用各种奇技淫巧实现并且还不能完全阻止被绕过的质量控制问题,而且保留了C++很多编译期推断得高级特性。并且和C++一样,提供给你能力,但不限定你方法提供 零成本抽象(zero-cost abstractions) 或者说叫 零开销(zero-overhead)