感觉 RUST 上手难度有点高开发速度有点慢,

2022-07-07 11:28:34 +08:00
 newghost
个人比较喜欢 RUST 的无 GC 设计,

感觉主体思想是让变量出了当前函数(域)就自动回收,但这样也引出了一大堆变量所有权及标注,生命周期,借用 /引用等概念和独特用法,应该是 RUST 里独一份了

导致在其它语言很简单的功能在 RUST 就要多写很多代码,理解一大堆概念,感觉开发效率慢很多,不知道大家有没有这个感觉?
10184 次点击
所在节点    Rust
49 条回复
keepeye
2022-07-07 17:55:31 +08:00
为了替代 c++的语言,难也正常,反正我学不进去了年纪大了
GeruzoniAnsasu
2022-07-07 18:17:28 +08:00
@duke807

rust 不如说是 c/++ 专家在被内存惨虐才创造出来的……

c++本身就很难写得对,又是语法怪物,又是工程陷阱,放在今天来看简直可以说一无是处,rust 为 c++提供了一点改进,好解决的工程陷阱先解决了,语法怪物和正确性问题解决了一部分,已经很不错了。

别的语言 <name> <get|install> <module name> 三分钟工程 setup 好了,c++调试跨平台 cmake 脚本花了我一整天,气得我想笑,谁还愿意在 2022 年为了构建项目手写脚本拼编译器开关字符串呢

我想用 rust 正是因为我知道智能指针怎么实现,但一个线程安全又解决了循环引用的智能指针实在太难写对了,我想有封装好的基础设施,并且我也不想每个变量都多套一层没用的 wtf_pointer<T>,你看,有语言给我封装好了

这跟工程陷阱问题一样,对任何人来说都是徒增心智负担的东西,我相信大多数追捧 rust 的群体是受够这些泥潭的人,而不是看着新鲜又没能力写那些「学术化内存代码」的人。


------


想告诉 OP 的是,rust 这些「独特设计」都是 c++某些机制的高级抽象版或者封装版,它们这么复杂是因为实现这些抽象的更基础的设施还要更复杂,复杂到接近人类智能能处理的极限且无益于工程化,相比之下 rust 的代价已经减少很多了。c++可能是慢 10 倍,rust 慢两倍……
v23x
2022-07-07 18:33:37 +08:00
@BeautifulSoap 确实 我都笑尿了
BeautifulSoap
2022-07-07 19:13:54 +08:00
@duke807 我觉得那位 lz 可以和这些文章作者打一架

https://www.theregister.com/2022/06/23/linus_torvalds_rust_linux_kernel/
https://www.zdnet.com/article/linus-torvalds-is-cautiously-optimistic-about-bringing-rust-into-the-linux-kernels-next-release/
https://www.techradar.com/news/linus-torvalds-rust-is-coming-to-the-linux-kernel-real-soon


随手用 linus linux kernel rust 为关键字搜一些文章,搜出来文章里 linus 对 rust 都没那么大恶意(虽说内容大同小异)。最多就是表示这是一次尝试,还有许多工作要做,希望 rust 能带来更多的安全性之类的
xylxAdai
2022-07-07 19:25:38 +08:00
@GeruzoniAnsasu c/c++引入其他项目需要自己手写源码编译脚本,md 太坑了,引个包和受罪一样,写了三四年,脑瓜子疼,还好现在不怎么写 c++大型项目了。
当然 c++这门语言我还是很喜欢的,而你说的线程、智能指针、内存这些却正是我喜欢的点,写起来很有成就感。
不过 c++确实是脑力活动,心智压力太大了
pagxir
2022-07-07 19:33:34 +08:00
Linux kernel 增加对 rust ,那是因为能够做到 /并且需要额外工作,才专门提提供,而不是说鼓励或者看好,也只是一种尝试。其它的需要 gc 的很明显目前的 linux 做不到支持,而 c++/ASM 根本就不需要额外工作去处理。
coeru
2022-07-07 19:57:25 +08:00
写 Rust 写习惯之后就丝滑了
duke807
2022-07-07 20:03:34 +08:00
@BeautifulSoap
不,我要和 linus 打,是他同意引入的
agagega
2022-07-07 20:08:58 +08:00
Rust 本身是好东西,但某些圈子里爱蹭热度的半桶水 Rust 吹整天就一副「天不生 Rust ,万古如长夜」的模样,仿佛 Rust 诞生之前所有的语言都不是 native 没有 GC😅

Rust 火起来还有一个好处是:喊着用 JS 重写整个世界的声音终于消停不少了,也许都去折腾 Rust 了吧

---

Rust 写起来的复杂度,一小部分来自于它自身安全模型的局限性(想象一个包含了所有「正确的程序」的集合,Rust 程序可能只是里面的一个小子集),更大一部分来自于它要处理的问题本身的复杂性:如何防止不该回收的内存被提前回收?如何确保该回收的时候内存被回收?如何防止多线程情境下的数据竞争?

有很多人抱怨 Swift/Rust 这类语言里操作字符串很麻烦,不能直接按下标访问字符,这是因为字符串编码本身的复杂性。Rust 的内存管理也是类似。

其实 Rust 早期并不是想走手动内存管理的路线,Rust 之父是一个 OCaml 铁杆粉丝,他想打造一个更适合工业界的 OCaml ,正式版以后才走上了今天的路线。

说起来,理想的编程语言应该支持默认 GC+部分对象加标注用生命周期管理,类似 TypeScript 可以慢慢从 any 迁移到具体类型,这样应该能兼具开发效率和优化空间。
xxfye
2022-07-07 23:12:28 +08:00
如果你是 C++程序员,长期被内存安全和线程安全问题折磨,RUST 绝对能够极大提高你的开发效率。
如果你是 Java ,Go ,C#等程序员,长期被内存占用和 STW 折磨,RUST 只不过是你学不来 C/C++的备用选择。
如果你是 JS ,Python 的程序员,长期被性能折磨,亲亲这边建议你学 Java/Go 和重新入门算法呢。
fakeshadow
2022-07-08 00:43:53 +08:00
谁说 rust 开发效率低,秒杀汇编好吗? /s
rust 开发效率要对比也就只能对比 c/c++,和更低或者更高的抽象比意义不大。
pieerepeng
2022-07-08 02:24:53 +08:00
感觉我已经把 c++写成了 rust 的样子,为啥不直接用 rust
liuxu
2022-07-08 10:35:54 +08:00
@duke807 #28 ,你这个 rust 黑,我要给我的 gentoo 装满 rust 写的工具,我还要在 gentoo 上写 rust
kekeabab
2022-07-08 12:45:43 +08:00
纯煞笔,喷某个人,是谁我不说,我干饭人不想写 cpp ,也不想了解硬件,但我就是要喷,又不是所有人都用来搞硬件。难道不是因为 c++: build success, segmentation fault 。rust: build fail, note:xxx. help:xxx 才用 rust 。个人觉得除了 async 不满其它基本都很满意。
DonkeyBenjamin
2022-07-13 21:05:11 +08:00
我喜欢 rust 是因为它注重实用性和软件工程实践,尊重 David parnas 的 modular design ,尊重编程语言理论的发展,而不是因为性能 /热度 /被基础概念折磨。

至于说 rust 是过眼烟云的,瞎子罢了。
memorycancel
2022-07-14 11:33:04 +08:00
https://github.com/StudyRust/leetcode_rust

每天用 Rust 刷一道 leetcode ,一起来!
amazingxxxxx
2022-07-29 09:15:08 +08:00
@yazoox “Rust 编程语言入门教程”,B 站的 UP 主叫“软件工艺师”,YouTube 上 UP 主叫“Dave Young”。
该教程用到的书(官方教程),电子版: https://kaisery.github.io/trpl-zh-cn/

另外一个推荐上述教程卡在某个概念的时候看的,一些本地化或更细节的内容:
Rust 语言圣经(Rust Course),网站: https://course.rs/

视频教程在于可以 2 天快速刷完一遍(看难易度是否开倍速播放),先有个基础概念,也好控制学习时间。
某些不怎么理解的概念再回头查上面书的解析搞懂。
andyJado
2022-07-31 10:04:07 +08:00
@amazingxxxxx 实名 dis 这本圣经. 看两页就闻得到臭味, 纯白读的时候留个心眼.
amazingxxxxx
2022-07-31 19:06:20 +08:00
@andyJado 要说人家写的不好,那你也要指出哪里写得不好,而不是一句笼统的臭味略过。
免费开源的书还要被别人这样骂,还骂不到点,真的过了。

如果有觉得更好的书,或更好的学习方法,请推荐,方便大家更好地学习 rust 。
andyJado
2022-07-31 20:12:18 +08:00
@amazingxxxxx

就和下火车站热情帮你拎包的黑车司机一样, 热情, 自吹自擂, 但不值.

除了 the book, 就 https://cheats.rs/

略略略, 它能捧自己叫圣经, 我不能说臭? 我的评论还开源了呢.

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

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

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

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

© 2021 V2EX