一年多 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 很适合你!但同上,时间和精力是问题。

29338 次点击
所在节点    程序员
85 条回复
vagranth
2019-01-31 11:33:58 +08:00
@danc 谢谢,对我来说,其实最痛苦不是编译出错,而是一些常用的实现模式不知道在 rust 里面怎么搞,或者说缺少最佳实践的指导。当然,我觉得是我看的代码和写的例子不够多的原因。

举例来说,在 java 里面,我要实现一些功能,在类里面封装几个成员变量,在类内部可以随意使用。对于使用者来说,是不需要关心这些成员变量的。而且使用者在不同地方使用同一个对象的话,这些成员变量的变化可以在对象的创建者和使用者之间轻松传递。
在 rust 里面,由于 ownership 的存在,我一直没想明白如何对做类似的封装,来隔绝使用者和内部实现细节。
sdijeenx
2019-01-31 11:59:15 +08:00
@secondwtq 对于 Rust 开发者来说,造轮子正是他们使用 Rust 的目的之一,用更加安全的语言开发程序可以避免程序在运行时出现各种预料之外的情况。(基本想法类似诺亚方舟)

Rust 会让可能出现的错误尽量在编译阶段展示出来,而不是像 C 艹一样只提示编译错误,不关心运行时是否会错(内存泄露&缓冲区溢出等)。
ospider
2019-02-01 08:16:06 +08:00
复杂的并不是 rust,而是计算机本身。rust 中的概念基本都能在 C++ 中找到完全对应的概念。只不过 rust 强制要求你必须遵守,在 C++中你可以选择不遵守,但是写出来的代码正确性没有保证
sidgwick
2020-04-22 18:37:54 +08:00
头大,,, 我学来学去真的很多基本的数据结构写不出来😭
25zai
2021-02-15 00:30:58 +08:00
挖一铲,现在是 2021.2.15
四天前 RUST 从 Mozilla 独立出来了,由五家大厂( 华为 Microsoft Google AWS Mozilla )作为创始成员建立了 RUST 基金会。
昙花一现已经是不可能的了。

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

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

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

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

© 2021 V2EX