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

29281 次点击
所在节点    程序员
85 条回复
kefengong
2019-01-30 10:17:05 +08:00
我比较想吐槽现在编辑器 vscode 的自动推导提示,iterator 多链几个函数就废了,这让我有点难受。
Clion 也是一样
MeteorCat
2019-01-30 10:31:42 +08:00
Rust 是门有趣的语言,特别在 c 性能和效率、跨平台选择、多范式编程之中选择,官方提供 std::net 库可以免除 c 之中选择 poll、epoll 或者 window 和 linux 区分
quinoa42
2019-01-30 10:57:53 +08:00
@kefengong
rls 毕竟刚刚正式到 1.0 版本(社区里也有人觉得目前的质量还不足以称之为 1.0 ),但可以相信未来会变得更好
官方选择维护 language server 而不是官方 IDE 也很涨我好感
Eleflea
2019-01-30 11:26:51 +08:00
想请问一下各位都用什么 IDE 写 Rust ?
kefengong
2019-01-30 11:35:26 +08:00
@quinoa42 是啊,我也只能先自己多记文档了
sad52hz
2019-01-30 11:39:40 +08:00
哪个大佬能说说 rust 用于什么的吗?
VDimos
2019-01-30 11:50:01 +08:00
@Eleflea 我用的是 idea,vscode 也还行,只是代码提示没 idea 那么强,而且还要自己配置,不怎么好用
congeec
2019-01-30 11:55:02 +08:00
@quinoa42 rls 还真不行,而且主要开发者 Nick Cameron 这个月初从 Mozilla 辞职了
推荐 https://github.com/rust-analyzer/rust-analyzer
alexmy
2019-01-30 12:03:15 +08:00
尝试学了一天,语言好复杂,入门就好复杂。最最最主要的是,不知道用来干嘛好,搭建网站?游戏服务器?然后就放弃了,等以后更成熟了再瞧瞧。
mayne95
2019-01-30 12:06:32 +08:00
跟楼上差不多。学了一段时间,不知道写什么。再准备写点东西,发现生态不完善,找不到轮子,然后语法又忘了。总之很尴尬。
danc
2019-01-30 12:12:09 +08:00
哈哈,既然大神在文中提到:“ Rust 是门从设计层面就假设你是个有很强逻辑以及经验的程序员......很多初学者在看完教程之后,基本的数据结构,诸如双向链表、二叉树之类的,都不能写出来,更糟糕的是,甚至完全没有头脑(我承认我就是这种人)。”, 这就说明,rust 本身就不是给新手小白玩的;“ Rust 的最大的开源后台开发库 Rocket.rs ”,是吗?。我从 1.10 开始搞到现在的 1.33,有 2 年半了吧,web 框架是自己写的,数据库驱动( mongodb )是自己写的,消息队列得自己写,一些更偏底层的库,比如异步 io 库,sctp 协议库,mpms_queue,blockingqueue,lru_cache,timer,等等,你都得打算自己写。-------你可以掌控一切的,只要你想。你说,如果一些基本的数据结构你都还没掌握的话,不如先去了解下这些基本数据结构。另外,rust 的语法什么的,所有什么的,生命周期什么,还真不臃肿,等你写熟了你就意识不到他们的存在了,然后再去写 golang 之类的语言,我艹,这个变量是在栈上还是堆上,这个变量到底传值呢还是传指针呢,这个变量什么时候可能会被回收掉.........
trait
2019-01-30 12:26:12 +08:00
@congeec nrc 离开 mozilla 加入 pingcap 并没有退出 rust team,他还是 rust 工具组的 leader,matklad 的这个项目也是官方正在搭建的第二代 syntax 系统,提高了语言层面对 rls 和 ide 的支持,马上到来的 rust all hands 会集中讨论
danc
2019-01-30 12:29:18 +08:00
至于 @Mohanson 大神所说 “ 但 rust 社区目前几乎将 rust 未来的希望全寄托在 wasm 上”,这是出自何处? Rust 团队目前有 4 个领域的工作组,wasm,嵌入式,网络,命令行工具。wasm 只是其中一块而已,正如 @wi 大神所说:“ Rust 开发者野心很大”。
lrxiao
2019-01-30 12:47:50 +08:00
@12101111 写'~'和'@'的在老 issue 里(<10000)看到不少
https://news.ycombinator.com/item?id=7687351

写'+'的我还真看过一篇找不到了,可能我记错了吧
justfly
2019-01-30 13:00:05 +08:00
巧了 我就是喜欢这种学习曲线陡峭学会之后又用着很爽的东西
sdijeenx
2019-01-30 13:05:45 +08:00
@trait 说到 Rust 最先想到的就是上蝌大 233😂

PingCAP 以前说有在用 Rust 开发,不知道现在怎么样了。
trait
2019-01-30 13:13:20 +08:00
@sdijeenx tidb 的 key-value 系统 tikv 是 rust 写的,还有他们实现的 raft 协议之类。已经有两个 rust team 核心成员去 pingcap,pingcap 应该算是国内开源企业典范了
davidqw
2019-01-30 13:33:57 +08:00
区块链是 Rust 可以发挥优势的领域,比如 Grin, Polkadot 和 Parity
q397064399
2019-01-30 14:12:06 +08:00
@trait #3
保证安全性? 缓冲区溢出吗? 如果是这个好像意义不大,有些人就喜欢裸着
quinoa42
2019-01-30 14:30:16 +08:00
@q397064399
当然不是,只是这个的话你用 C 也可以

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

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

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

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

© 2021 V2EX