Rust 它凭啥这么难?学习路线这么陡峭。。。。

2021-03-19 09:22:41 +08:00
 nickyang897897
21959 次点击
所在节点    Rust
102 条回复
libook
2021-03-19 16:32:39 +08:00
越简单的语言对开发者要求越高,比如 C 、JavaScript,稍不注意就可能写出有缺陷的代码,而且这些代码中大部分是可以运行的。

可以去 benchmarksgame 看看 Rust 的压测表现,性能和 C/C++相当,到这种程度又要规避很多 C/C++常见的开发痛点,于是就设计出了一些复杂的开发模式,以至于让 Rust 的学习曲线变得陡峭。

可能习惯了就好了,特别是现在还带着很多其他语言的思维定式,比如 Rust 里的 Ownership 和 C 里的指针操作乍一看长得差不多,但实际上是完全不同的理念。

当然看代码看不懂也不一定是自己的问题,代码是有可读性好坏之分的。

作为一个大学英语四级都没过的人,原版 Book 已经看了一半了,打算看完后再看 Rust by Example,以及去 GitHub 上找找 coreutils_rs 之类的简单项目看看。
xemtof
2021-03-19 16:55:49 +08:00
@no1xsyzy 下面该是 GAA 发挥威力的时候了
HeapOverflow
2021-03-19 17:00:46 +08:00
nim 跟 vlang 了解一下
industryhive
2021-03-19 17:10:07 +08:00
@junkun 自举不是不可以,是没多大意义。不过像 java 这么庞大的用户群,虽然自举这个事没太有必要,但早晚还是会有人做的,比如 GraalVM,性能上相比于 Hotspot 还是有提升的,GraalVM 运行 java 应用性能提升 4%-10%,运行 Scala 应用性能提升 20%。以后 Oracle 的优化重点估计会越来越向 GraalVM 倾斜了。
industryhive
2021-03-19 17:12:58 +08:00
@liuxey JVM 也是可以举的,比如 GraalVM,100%java 代码,估计以后某个版本会用 GraalVM 把 Hotspot 替换掉。
fengjianxinghun
2021-03-19 17:16:11 +08:00
@Nugine0 tokio 有 io_uring 的实现包装
maomaorun
2021-03-19 18:11:08 +08:00
你如果用 Rust 的思路写 C++,会发现还是 C++简单
Nugine0
2021-03-19 18:48:18 +08:00
@fengjianxinghun 那个是低层封装,实际要用还得再封一个高层的 proactor 出来。
io_uring 也提供了多种用户空间 API 的可能,完全可以拿 rust 重写 c 库,换一条路去尝试。
HeliumTang
2021-03-19 18:56:10 +08:00
@ppphp 有个外国大佬专门写了一个怎么用 rust 写链表的教程
1more
2021-03-19 19:08:01 +08:00
@ppphp 用 rust 写链表直接变成了 c 语言的书写方式,非常头疼
KeepPro
2021-03-19 19:15:38 +08:00
从 15 年就开始关注了,至今还不没学会的,感觉没救了。
jianghu52
2021-03-19 19:34:27 +08:00
@missdeer 看你头像,再看你说话,我就猜到了是杨旭。他的视频确实很好,go 开发 web 也很有用。
impl
2021-03-19 21:13:15 +08:00
用 go 就行,简单性能也不错。除非你写浏览器,数据库这种,就需要学 rust
FightPig
2021-03-19 21:14:24 +08:00
我学了五遍,这才感觉有点豁然开朗
Wincer
2021-03-19 22:16:38 +08:00
学的语言越多,之前所具备的思维定势反而会误导你,就比如 Rust,变量的生命周期包括 Rust 的内存管理和其他的语言都不一样,如果带着其他语言的思维来尝试理解具备完全不同特性的编程语言,那还不如把自己当成一个编程新手,抛弃所有的思维定势。

至于楼里大多数吐槽不写分号返回值的这点我倒是觉得还好,这一点明显是脱胎于函数式编程语言:以函数最后一个表达式作为函数的返回值,不过 Rust 还保留了 return 关键字。还有 async 生态问题,如果是 IO 敏感方面的需求我不会选择 Rust 的,Go 不香吗,Rust 就应该写底层、性能敏感型的程序。
orannge
2021-03-19 22:52:55 +08:00
1. Rust/C/C++性能一个梯队,难度也一个梯队
2. 如果归类,Rust 一类,其它语言(C++/Golang/Java/Python/JavaScript 等)一类,其它语言纵使差距大,但起码概念是相通的
3. 不追求极致性能、非 CPU 密集,用 Go 就行了,上手简单、编译快、容易出成果,各方面相对均衡
jones2000
2021-03-19 22:58:25 +08:00
把你原来做的 java 项目全部移植到 Rust, 等你完成, 你就了解 Rust 了, 光看有什么用, 这有不是看小说, 实际运用才行.
naoh1000
2021-03-19 23:31:21 +08:00
你学了吗,学了才知道其实也就那样。
icylogic
2021-03-20 02:16:43 +08:00
rust 是 c 艹用户想脱离苦海的一种愿景,没被 c 艹艹过可能感受不深,

✓没有头文件,直接就是 module 。
✓一个工具解决依赖,构建,测试,干翻 cmake
✓默认 const auto,以及把一大坨所谓 c++ best practice 直接做进语言 ,你不需要特别注意就会默认写成那样
✓trait 把 sfinae (的一部分)和 concept 以及多继承接口等 dynamic/static dispatch 手段统统干掉
✓把函数式编程以不那么恶心啰嗦的方式引入进来
✓宏比 c/c++ 的更安全和易用
lqf96
2021-03-20 04:12:23 +08:00
@icylogic 等 GAT, specialization 和 const generics 都做完基本上就比 sfiane 更强大了(虽然是有生之年系列),另外我觉得 Haskell 和 OCaml 对 Rust 的深刻影响是不能忽视的,trait 和 typeclass 简直不要太像...

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

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

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

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

© 2021 V2EX