Rust 最神奇的地方

2021-04-02 15:19:04 +08:00
 qdwang

Rust 这个语言,最神奇的地方,我觉得是全网一边倒的正面评价。

在任何地方搜索 Rust 语言,9 成的体验都是夸赞它的。

stackoverflow 年度最佳语言,也好几年是 Rust 。

生活经验告诉我一边倒的评价不太可信。

所以请问一下,Rust 有没有缺点啊。。??

12318 次点击
所在节点    程序员
68 条回复
augustheart
2021-04-06 08:18:20 +08:00
rust 的问题还是在于写底层比 c/c++繁琐,写上层只比 c/c++简单
BubbleNoodle
2021-04-06 09:52:03 +08:00
@DOLLOR 经典的伯克森悖论.漂亮
CBReno
2021-04-06 10:49:16 +08:00
@ychost 能说具体点嘛
youyang
2021-04-06 15:21:40 +08:00
FrankHB
2021-04-06 20:51:52 +08:00
@longkas239 反了吧,没 GC 可以自己往里面实现一个当乐趣,有 GC 还能咋地,难道管 GC 调优当乐子?
andytao
2021-04-06 21:06:26 +08:00
@b00tyhunt3r @stephenyin @testratter 照你们这么说:
Vala 是带着冈本 0.001 的套撸管
FrankHB
2021-04-06 21:26:54 +08:00
@TypeError 引的文章有一些事实错误。因为误导比较严重所以单独说。
这篇文章和引用的其它一些链接没有分析清楚问题这个的来源,所以还有些(至少本应是)显而易见的错误。
虽然异步编程支持这方面上确实有 specific to Rust 的特别欠揍的地方,但是所谓 function 的 colour,根本上其实来自 async 。
文章认为 async/await 是一种相对于 Scheme 式的 CPS 抽象的进步,然而这是胡扯。Scheme 提供的是 first-class continuation,就是为了允许避免显式的 CPS 而能实现类似 CPS 的效果。
所谓 smear it out into a bunch of closures 在这样的支持 first-class continuation 的情形下就是一种实现细节。
想要异步代码干净,各种不同语言的设计思路都是允许用户写 direct style 的代码,然后让语言的实现自动翻译成 CPS 或者其它形式的显式异步表示形式。
这种变换,即便照顾同步 /异步的混用,逻辑上本来只要求 call site 区分所谓的 await,不需要关心是否 async 。需要区分不同的可调用实体是不是 async 的,反而把实现细节给暴露出来了。
要求用 asnyc 标注异步代码的主要原因是不愿意让运行时承担隐藏实现细节的责任,而改为强加到代码生成的机制上的偷懒,乃至于不惜牺牲接口上的一致抽象(所以有所谓的 colour 问题)。
这和滥用类型系统类似,经常就是一种过度优化(虽然影响的实现远比类型检查更麻烦)。Rust 本来就很有滥用类型系统的嫌疑,这里更容易打架毫不出乎意料。
至于 future/promise,是一种限制性的备胎而非 first-class continuation 或同等抽象能力的基础设施的替代。在语言没有能力提供健全的特性时,实现可以使用非公开的机制提供有限的 API 适用受限的场合。这可能提升特定有限场景下原语的实现质量,但也限制了通用性。
joseph1994
4 天前
说一万遍,编程语言就有两种:一种是人人骂的主流语言,另一种是没人骂的没市场的语言

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

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

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

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

© 2021 V2EX