一年多 Rust 的了解,对蠢蠢欲动的同学一点建议

2019-01-29 18:42:04 +08:00
 VDimos

本来是前端,由于 webAssembly 的逐渐普及,从去年开始从 Rust 的那一本教程入手,看完以后又看了 Rust reference,接着看了 Rustnomicon,又大致浏览了一遍 Rust Doc,还有 cargo book。最后总结了以下:我觉得 Rust 应该是昙花一现的产物,因为它实在是太复杂了。

如果你不需要做 FFI 之类的,我个人还是不建议深入学习 Rust,有兴趣当然是好的,但是 Rust 需要花费的时间不是一天两天,对比其他的语言,比如 C,Rust 显得更复杂和困难。

Rust 保证的安全性的代价就是入门曲线很高,对于习惯了脚本语言或者 c 类语言的程序员而言,Rust 显得不是那么友善。我学这门语言更多的是因为学习兴趣很高,时间充沛,但是对于大多数人而言,时间以及语言( Rust 的文档除了教程以外几乎都是英文)问题,或许并不值得去学习。

更为重要的一点是,Rust 标榜的是安全性,对于很多人而言,Rust 的这种安全性根本不知道用在哪里,因为它的实战场景太少了!!! Rust 的最大的开源后台开发库 Rocket.rs ,甚至现在也没发布 1.0 版本,而且更多的是 Rust 目前几乎没有像诸如 java 之类的,甚至是 golang 之类的新语言,一套完善的开发栈可供参考。更多的是自己踩坑,自己挖坑自己踩!

Rust 是门从设计层面就假设你是个有很强逻辑以及经验的程序员,但是这个假设并不是什么时候都成立。Rust 的所有权系统有时候显得很“臃肿”,虽然有诸如 Rc 和 RefCell 之类的 struct 可以弥补。举个栗子来说,很多初学者在看完教程之后,基本的数据结构,诸如双向链表、二叉树之类的,都不能写出来,更糟糕的是,甚至完全没有头脑(我承认我就是这种人)。

Rust 我最爱的是它的宏!如果你是 C 之类的开发者,对 C 的宏忍无可忍,那么 Rust 的宏是真的只能用“美丽”来形容!

如果你是从事嵌入式、图形处理之类的,我强烈建议你深入了解 Rust 这门语言,它的安全性或许正是你所需要的!

Rust 目前是 2018 版本,这个版本修复了很多饱受诟病的 Bug,我很期待这门语言的发展与未来。

总结来说,如果你是一个初学者,或者时间不够,或者精力不够,或者语言(英语)能力不强,那么我建议还是不要碰这门语言了,如果有一天 Rust 发展得无比繁荣,那么 Rust 可以学一学,但目前看来,并不会(求打脸!!!)。

如果你是从事底层开发,对 C 语言的内存泄漏的问题很头大,那么 Rust 很适合你!但同上,时间和精力是问题。

29777 次点击
所在节点    程序员
85 条回复
xfriday
2019-01-29 20:26:00 +08:00
不敢怼 rust 大佬,大多数脾气都不好(之前有见识过),rust 语言也是 2 年前接触过,陆陆续续地关注着它更新,但是对于编程哲学没有追求,只是把语言作为工具来生产 /挣钱,很大概率不适合你。
Mohanson
2019-01-29 20:56:57 +08:00
下午编 substrate 用了 2 小时, 生成 20 G 的中间文件, 而体量和功能差不多的 go ethereum 编译只用 10 秒, 700 兆中间文件
wi
2019-01-29 23:02:21 +08:00
昙花一现是不可能的,Rust 开发者野心很大。
secondwtq
2019-01-29 23:09:11 +08:00
@Mohanson 找个 JS 的根本不需要编译
trait
2019-01-29 23:40:37 +08:00
@Mohanson 迷之 subtrace 和 ethereum 功能体量一样,你还是先分清 protocol 和 platform 比较好
Yoock
2019-01-29 23:45:49 +08:00
厉害呀
LokiSharp
2019-01-30 00:06:59 +08:00
个人认为 wasm 用 TS 写才是未来的趋势吧
Mohanson
2019-01-30 01:27:07 +08:00
@trait 中文要学好,“差不多”和“一样”是一个词吗?迷之杠精,已拉黑
Mohanson
2019-01-30 01:45:58 +08:00
@LokiSharp 目前 rust 和 go 编译到 wasm 最大的问题是生成的模块过大,一个 hello world rust 在几十 k,go 在几 M(默认情况下),ts 用的 llvm 生成的模块质量目前远好于 rust 和 go, 但 rust 社区目前几乎将 rust 未来的希望全寄托在 wasm 上,挺期待他们会搞出什么名堂。
Mohanson
2019-01-30 01:47:31 +08:00
但目前编译到 wasm 质量最好的语言还是 c, 整个模块没有一字节没用的代码
Mohanson
2019-01-30 01:50:19 +08:00
对 wasm 感兴趣的话推荐 pywasm 这个 wasm 虚拟机实现。
lrxiao
2019-01-30 02:12:52 +08:00
Rust 确实太复杂了..
而且社区太强了,进化太快了,什么时候开始学呢?
很多很多的资料都是老版的,有时候见到+传引用,~表示递归类型一愣一愣的,很多名词只能从 issue/pull request/rfc 中知道意思。。
不说别的,rust-lang/rust 里都用很多 deprecated 的 feature
lrxiao
2019-01-30 02:27:21 +08:00
quinoa42
2019-01-30 05:05:41 +08:00
对于像我这样半吊子的 PL 爱好者来讲 rust 简直就是理想语言,越用越开心
quinoa42
2019-01-30 05:19:15 +08:00
> 很多初学者在看完教程之后,基本的数据结构,诸如双向链表、二叉树之类的,都不能写出来,更糟糕的是,甚至完全没有头脑
讲道理,写这些 rust 和 c++有什么区别? c++怎么写 rust 就怎么写,rust 提供了更严格的 compile time 和 runtime time check,我对这条观点不能认同
trait
2019-01-30 07:14:26 +08:00
@Mohanson 连 subtrace 和 ethereum 基本功能都分不清,强行杠精,什么时候 protocol 能跟 framework 做比较了,感谢 block
chai2010
2019-01-30 09:15:36 +08:00
glumess
2019-01-30 09:21:54 +08:00
rust 的安全性和图像处理有什么关系啊?没搞懂这个地方
VDimos
2019-01-30 09:23:22 +08:00
@glumess 并不是说 rust 的安全性适合,只是 rust 这门语言很适合偏底层的编程
12101111
2019-01-30 10:16:07 +08:00
@lrxiao 你看的资料是 rustc 没自举前的黑历史吗,+和~还有这种用法?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/531673

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX