展开讨论

经验与复盘经验摘录 · 机器翻译

我学会了多种编程语言,涉及许多不同的范式,但从没有……

… 我已经学习了多种编程语言,涉及许多不同的编程范式,但从未像在Rust上那样遇到编写有用软件的困难。我一再看到我认识的每个人——所有专业的程序员都遇到了同样的问题。事实上,我是唯一一个坚持下来的人。我发现,否认Rust的难度(甚至不是集中在借用检查器上——而是使用几乎所有常见的库)非常非常奇怪。这种现象如此奇怪(并且与显而易见的事情和我认识的每个人的经验相去甚远),以至于我完全无法理解。

源讨论专业人员的Rust原帖 100 条评论 · 导入时统计
4

这条内容在回应什么?

父级讨论 · 节选

IN

> 你真的不觉得这很难或很复杂吗? 这就像说:"你觉得64位整数很简单吗?好,那我们来深入探讨C语言的内存模型、二进制补码、溢出CPU标志、CPU缓存的实现方式、可能导致寄存器到RAM未同步的架构细节等等"。实际上,大多数人只需要知道它是一个可以存储2^64个值的数字,一点也不复杂。如果你想真正理解整数,那就去读Intel手册和C语言内存模型规范吧。 生命周期复杂吗?如果你是编译器开发者,需要考虑所有特性和边缘情况的影响,是的。但如果你是在学习这门语言,只是想写"在另一个&str中找到一个&str,但不要克隆它",那一点也不复杂。 绝大多数初学者只需要学习"&表示任何数量的读者,没有写者,&mut表示只有一个写者"就可以了。…

完整原文

社区评论 0

还没有社区评论,来聊聊你的看法。

原讨论中的回复 4

仅展示本次导入中包含的直接回复。中文为机器翻译,可查看英文原文。

IN

Rust的借用检查器已经被用很多简单的方式描述过。我记得第一次理解它,是通过一本书。 你拥有一本书。 `&` - 你可以把书借给别人,他们不能乱搞。 `&mut` - 你可以把书借给一个人,他们可以乱搞。 `move` - 你把书给另一个人,现在属于他们了。 或者`多个读者和一个写者` 这是否是一个完整的解释?不。但这是相当简单的,仅凭这种理解你就可以非常高效地工作。 你的体验不等于我的体验。我第一次用Rust是在我退学后作为实习生写的第一个项目,之前我从未使用过它,甚至用它来与mysql交互,而我之前也从未使用过mysql。 在我上一家公司,有多个人在几天内就学会了Rust。 我并不是否认Rust很难,我是说它对一些人来说容易,对另一些人来说难。我觉得它容易,我…

完整原文
ZO

> 在Rust中做到这一点比任何其他主流语言都难。 这并不难,你只需要添加一些样板代码。克隆数据,使用内部可变性,或者添加引用计数来处理多个'所有者'可以独立保留对象的情况。 然后去除这些样板代码就是进行优化的方式,一旦你让事情正常运行了。这与其他语言相反,低级代码在其他语言中是最冗长且最不直观的。

完整原文
NI

> Rust比任何其他主流语言都更难做到这一点。 我认为C和C++都更难。一旦你超越了简单的例子(包括库等),甚至很难让它们构建起来。 > 我觉得否认Rust的难度(甚至不是集中在借用检查器上——而是几乎每个常用库的使用)非常非常奇怪 我们中的一些人并没有觉得那么难。比如,我知道理论上它很难,因为我看到足够多的人表达过这种感受,所以我相信这可能是一种常见的体验。但我的个人体验是几周的缓慢进展和很多困惑,然后一切变得容易多了,同时,大多数语言的设计比之前我使用的语言(比如它确实有代数类型,而且一切都是表达式——为什么每种语言都不这样呢)要好得多。…

完整原文
JC

从在Rust中提高生产力的角度来看,你需要知道以下几点: * 一个对象有一个生命周期。这通常会持续到被覆盖或在作用域结束时被销毁。 * 你可以将这个对象的引用借出。你只能有一个&mut,或者无限个&引用,但不能同时拥有两者。 * 引用不能超过它所指向对象的生命周期。 * 如果你有一个&mut引用,你可以再给同一个对象另一个&mut引用。但在第二个引用存在期间,你不能使用第一个引用。 * 生命周期可以命名,并且你可以表达“这个生命周期必须至少/最多这么长”的条件。 * 附加说明:如果你有&mut x,你可以同时给出&mut x.a和&mut x.b。但如果你有这些子引用,就不能给出&mut x。 就这样,你真的只需要知道这些。是的,还有更多规则,但是...…

完整原文
在 Hacker News 阅读

尊重不同观点,分享具体经验。

登录后即可发帖、评论、转发和引用。