Rust 这个语言,最神奇的地方,我觉得是全网一边倒的正面评价。
在任何地方搜索 Rust 语言,9 成的体验都是夸赞它的。
stackoverflow 年度最佳语言,也好几年是 Rust 。
生活经验告诉我一边倒的评价不太可信。
所以请问一下,Rust 有没有缺点啊。。??
![]() | 1 opiviqo 2021-04-02 15:24:19 +08:00 ![]() php 天下第一 |
![]() | 2 justseemore 2021-04-02 15:25:34 +08:00 ![]() #1 伤害不大,侮辱性极强。 |
![]() | 3 keepeye 2021-04-02 15:25:47 +08:00 学习门槛高算不算缺点? |
![]() | 4 AV1 2021-04-02 15:33:40 +08:00 ![]() 有缺点呀,粗看 Rust 的代码,那些杂乱的符号可能会吓倒一些人。 也就是说,那些潜在的给负面评价的人,还没去学,早就被吓走了吧 |
![]() | 5 12101111 2021-04-02 15:36:27 +08:00 ![]() 缺功能 学不会 编译慢 没有库 |
6 Jooooooooo 2021-04-02 15:38:53 +08:00 用的人太少了, 小圈子自嗨 你搞成 java 这种规模再试试 我发现 java 基本是语言鄙视链最底端 (明明这么好用 |
7 BeautifulSoap 2021-04-02 15:41:07 +08:00 via Android ![]() php,go,java 之类的,即便可能你并不喜欢,你也可能会为了工作为了钱去学,爱好和吃饭工具是两回事,自然抱怨的人不少 而 rust 不一样啊。rust 难找工作,而且本身学习曲线陡峭,这种学了没法找工作还难学的语言,能花时间精力去学的都是真爱 |
8 h82258652 2021-04-02 15:44:24 +08:00 学习门槛高 真的能用的,达到生产标准的 GUI 库缺少 然而体验确实爽啊,编译成功基本就不会跑飞 代价就是用开发效率、编译速度来换安全性和性能的 |
![]() | 9 TypeError 2021-04-02 15:44:25 +08:00 |
![]() | 10 FightPig 2021-04-02 15:46:25 +08:00 缺点就是学习线很陡,再就是刚看时,各种'a 'b 啥的一堆吓人呢,然后久了觉得还挺香。 |
![]() | 11 liuxey 2021-04-02 15:48:52 +08:00 reddit 上已经把吹 Rust 定义为 zz 正确,个人写 Rust 感觉良好,但是协作开发要崩 |
![]() | 12 xieren58 2021-04-02 15:52:15 +08:00 用在嵌入式开发, 感觉比较爽. |
![]() | 13 zjsxwc 2021-04-02 16:10:15 +08:00 各种套娃、 各种 lifetime 直接导致打开 rust 代码密密麻麻,看着 rust 代码头疼。 |
15 hei1000 2021-04-02 16:17:43 +08:00 Rust 缺点: 1. 学习曲线陡峭 2. 编译时间长 3. 编译过程比较消耗资源 4. 生态还不是很完善 |
![]() | 16 XIVN1987 2021-04-02 16:18:51 +08:00 ![]() 缺点就是适用面比较窄吧 Rust 和 C++一样,都是追求所谓 zero cost abstraction 在不追求 zero cost 的地方,大把的带 GC 语言可以用,,人家完全不用关心内存分配的问题,,易用度指数提升 在 OS 内核、驱动程序这些底层领域,一般也不太追求 abstraction,用 C 就够了 所以 Rust 只适合 C++适合的应用领域,,需要用 C++的可以考虑下 Rust,,不需要 C++的一般也不用考虑 Rust 了 |
![]() | 17 ghost024 2021-04-02 16:45:30 +08:00 要是不写 c/c++的话,其实学 rust 也没有使用场景。 |
![]() | 18 testratter 2021-04-02 16:53:14 +08:00 ![]() 有个形容其实很贴切: 用 C 是不带套做爱。 用 C++是吃避孕药做爱。 用 Rust 是穿着宇航服做爱。 |
19 namelosw 2021-04-02 16:54:03 +08:00 ![]() Rust trade-off 少,简单 vs 完整的时候总选完整,争议性小,所以能骂的点不多。这个方向最终的问题最多也就是相对难学,编译慢等等。 Go 为了简单做了很多权衡,很多人不认同一些权衡,自然就会有争议。 当然了,还有的语言连权衡都算不上,骂的人就更多了。 |
![]() | 22 qdwang OP @testratter 太精辟了。。。 |
![]() | 24 ychost 2021-04-02 17:12:31 +08:00 小众语言,圈子窄所以很少有负面评价,用过这么多语言不得不说巨硬的 C# 是我心中最好的语言,对比 Java/Python/C/C++/Go/JS/VB/Kotlin/PHP |
25 Jirajine 2021-04-02 17:15:39 +08:00 via Android |
![]() | 26 Cloutain 2021-04-02 17:39:57 +08:00 用过的语言不多,ASM/C/C++/C#/易语言 /Python,个人觉得 C#最爽,简直无以伦比 |
27 ppphp 2021-04-02 17:59:05 +08:00 主要他缺点是跟 c++比的,缺点都不叫个缺点 |
![]() | 28 stephenyin 2021-04-02 18:50:55 +08:00 @testratter #18 我一小处男完全不知道表达的啥意思。。。 |
![]() | 29 coderfox 2021-04-02 19:04:59 +08:00 ![]() Rust is modern C++,换句话说一般不用 C++实现的也不是特别适合 Rust 。 |
![]() | 30 SingeeKing PRO rust 的 stable/beta/nightly 就是摆设,稍微大点的项目就必须 nightly,很多 feature 只有 nightly 才能用 |
![]() | 31 dongcidaci 2021-04-02 19:12:03 +08:00 极客的玩具,当然很好玩就是了 |
![]() | 32 1more 2021-04-02 19:49:43 +08:00 零开销,安全高,如果用来写业务肯定还是当属 java 之类的,rust 更适合开发偏底层的或者服务组件,另外 linus 也在观望 rust |
33 nightwitch 2021-04-02 21:29:09 +08:00 ![]() 世界上只有两种语言:被人骂的语言和没人用的语言。 现在你发现它不被人骂,所以它是什么情况你应该清楚了吧 |
34 crclz 2021-04-02 21:39:13 +08:00 首先是 rust vs 有 GC 语言。如果一个应用场景使用带 GC 语言(例如 java C# go )是普遍的解决方案,那么在这些场景下使用 rust 就是自找苦吃(选择了麻烦的抽象层级、选择了不好招人) 所以要清楚 rust 对标的是啥,是 C++,而不是其他的那些语言。如果你的工作中用不到 C++(比如我),那么对于这类讨论的态度就是吃瓜就好。 |
35 bequt 2021-04-02 21:42:18 +08:00 未来感觉还是看好 go |
![]() | 36 redeemer1001 2021-04-02 21:52:40 +08:00 @ychost #24 附议 C#真香 |
![]() | 37 honkki 2021-04-02 23:53:13 +08:00 rust 的语法 emmm |
38 lqf96 2021-04-03 07:13:51 +08:00 via iPhone @nightwitch 其实最近骂的人也多了,我觉得是好事… |
![]() | 39 cabing 2021-04-03 08:52:05 +08:00 @testratter 骚气 |
![]() | 40 jinsongzhao 2021-04-03 09:12:51 +08:00 java 当年也是一边倒的夸赞, 第二年就冲上榜首 |
![]() | 41 xuanbg 2021-04-03 09:25:07 +08:00 缺点什么的根本不重要,Java 缺点多了去了,每每被人吐槽、鄙视、嘲讽……但这又怎样,还不是用的飞起。 Rust 全面好评,但就是用的人少。 |
![]() | 42 jinsongzhao 2021-04-03 09:33:17 +08:00 |
43 impl 2021-04-03 10:49:24 +08:00 via Android 大神用 rust,凡人用 go 。 |
![]() | 44 opentrade 2021-04-03 11:37:45 +08:00 ![]() 有啊,编译慢不就是最大的嘲点吗?没有常规意义上的继承,用组合实现会产生很多冗余代码,于是为了减少冗余,就得写宏,我个人是非常讨厌用宏,这种不伦不类天马行空的玩意,而且宏里面的语句都没法 fmt,被宏套着的代码也没法 fmt 。另外 Rust 的很多第三方 Crate 质量不高且疏于维护也是很大的嘲点。顺便安利一下我的 Rust 开源项目,https://github.com/rustdesk/rustdesk |
45 djoiwhud 2021-04-03 11:57:49 +08:00 via Android ![]() 我认为业界要的语言是不依赖运行时环境的 c#,也就是 c#纯编译版本。 |
46 liulaomo 2021-04-03 13:58:52 +08:00 俺只知道 Rust 没有白皮书。据说是因为怕写出来被骂比 C++白皮书还长。。。 |
47 liulaomo 2021-04-03 14:01:11 +08:00 还有据说(确实是据说)只有搞 Rust 核心编译器开发的几个人知道 Rust 的完整特性集,Rust 创始人都不清楚了。。。 |
![]() | 48 coderfox 2021-04-03 17:48:06 +08:00 @djoiwhud #45 C#作为一门有 GC 的语言,有运行时这件事情是逃不过去的,但是 .NET 5 已经实现了和 Golang 类似的不需要在目标机器上先安装运行时,也就是用单一二进制文件进行分发。 |
![]() | 50 no1xsyzy 2021-04-03 21:01:06 +08:00 |
51 fakeshadow 2021-04-04 02:21:27 +08:00 会的人少,关注也少。喷 Rust 吸引不到多少流量。 |
![]() | 52 everettjf 2021-04-04 12:12:20 +08:00 via iPhone 缺点是难学 |
53 b00tyhunt3r 2021-04-04 14:50:42 +08:00 via iPad |
![]() | 54 binbinyouliiii 2021-04-04 15:33:02 +08:00 因为有喷语言习惯的人都学不会 Rust,没法下手 |
55 yemoluo 2021-04-04 17:39:06 +08:00 缺点就是夸的人真多,但是写各种教程的人真少 |
![]() | 56 4BVL25L90W260T9U 2021-04-04 18:38:30 +08:00 十年前小圈子里也是这么吹 Python/Ruby 的,那时候不也是小众语言么?语言最开始肯定都是爱好者在强推,不然怎么做得起来,然后才是大规模推广开之后有些人不得不写,各种吐槽也就多了。 |
![]() | 57 FrankHB 2021-04-05 11:54:47 +08:00 体感辣鸡的地方种类跟大体 C++ 差不多,程度上差距不大,比如“难学”、编译慢。 然鹅 C++ 辣鸡的地方多十倍以上,要感知到抹平差距(首先是要自觉不手贱),要求可比会用高得多了…… 至于都熟练到一定程度的八成就懒得评价了,因为工程上叫搭伙的半吊子 C++ 用户闭嘴还是需要花些力气的,而 Rust 很大一部分教育的活就交给编译器了。Rust 用起来虽然恶心一点,这方面毕竟省事。(而且 C++ 不管你功力多高,整清楚个包管理确实可能是要死要活的……) 会上 SO 之类的除了 noob 大概很多是在苦于怎么让半吊子同伙闭嘴的层次上,所以好评如流也很正常。 至于再往上的……严肃点说 Rust 比 C++ 更垃圾的地方主要是没有 spec,不过 SO 之类的用户大概确实不太计较这个。 |
![]() | 58 FrankHB 2021-04-05 12:01:59 +08:00 @no1xsyzy 那个外行的就别提了。 GC 语言小白就算了,很难想象一个有接触正经优化编译器的居然不学无术到理解不了 uniqueness alias 的意义。 亏他老师还搞出来 call/1cc 。 (虽然 substructurual logic 确实不是什么新鲜玩意儿,Rust 用这个的动机也不是这个。) |
![]() | 59 ipwx 2021-04-05 16:34:10 +08:00 反正我对 C++ 挺满意的,对 Rust 暂时没兴趣学,自然没啥评论。 |
60 longkas239 2021-04-05 23:30:37 +08:00 大神用 c++,大神说了没有垃圾回收没了乐趣 |
61 augustheart 2021-04-06 08:18:20 +08:00 via Android rust 的问题还是在于写底层比 c/c++繁琐,写上层只比 c/c++简单 |
![]() | 62 BubbleNoodle 2021-04-06 09:52:03 +08:00 @DOLLOR 经典的伯克森悖论.漂亮 |
![]() | 65 FrankHB 2021-04-06 20:51:52 +08:00 @longkas239 反了吧,没 GC 可以自己往里面实现一个当乐趣,有 GC 还能咋地,难道管 GC 调优当乐子? |
![]() | 66 9dP06m83vIV00l72 2021-04-06 21:06:26 +08:00 |
![]() | 67 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 适用受限的场合。这可能提升特定有限场景下原语的实现质量,但也限制了通用性。 |
![]() | 68 joseph1994 330 天前 说一万遍,编程语言就有两种:一种是人人骂的主流语言,另一种是没人骂的没市场的语言 |