当 Rust 成为“巨坑” - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gowl
V2EX    分享发现

当 Rust 成为“巨坑”

  •  1
     
  •   gowl 2023-01-07 14:23:08 +08:00 5920 次点击
    这是一个创建于 1038 天前的主题,其中的信息可能已经有所发展或是发生改变。

    「我其实挺喜欢 Rust ,也绝无抹黑 Rust 的意思。但亲身经历告诉我,选择 Rust 几乎必然会对生产力造成重大影响,影响到速行动这个基本目标。所以动手之前,请大家认真权衡 Rust 造成的速度影响到底能不能抵得上它给业务和产品带来的收益。」

    当 Rust 成为“巨坑”:拖慢开发速度、员工被折磨数月信心全无,无奈还得硬着头皮继续 https://www.infoq.cn/article/zyaaafbdy5zay8w5iamf

    17 条回复    2023-01-08 11:29:54 +08:00
    Jirajine
        1
    Jirajine  
       2023-01-07 14:29:47 +08:00   3
    说的没错,rust 被设计来编写高质量的程序代码,但这是有代价的。
    而在绝大多数商业场景中,程序代码的质量都不是最重要的,堆屎山用 go 这类语言痛苦会少很多。
    wu67
        2
    wu67  
       2023-01-07 14:43:06 +08:00
    本质上, 堆山能跑就行 - 代码质量 是天平两端, 商业项目都是在这两者之间取平衡点.
    其中脚本类、弱语言是偏向山最多的, 点名 js. 但是也伴随一个问题, 商业 idea 真的成了、赚钱了, 就得考虑优化代码质量, 往天平另一端挪, 不然代码会变得没法维护, 以为这商业 idea 失去了灵活性, 就只能等着被同行挤兑死了, 或者等着代码漏洞被人打烂
    cmdOptionKana
        3
    cmdOptionKana  
       2023-01-07 15:02:42 +08:00 via Android
    rust 的优缺点很明显,而且每种主流语言都必然有优点才能流行,也必然有缺点才不能一统江湖,选的时候就应该知道优缺点才对。
    sakura6264
        4
    sakura6264  
       2023-01-07 15:05:00 +08:00
    通常当你觉得你可能需要用 C++时候才可能用到 rust
    des
        5
    des  
       2023-01-07 15:14:57 +08:00
    标题党,原标题根本不是这个意思
    Kirscheis
        6
    Kirscheis  
       2023-01-07 16:16:23 +08:00 via Android
    深有体会,rust 强迫人们写可靠的代码,但是实际上大多数时候可靠性根本不重要,出问题重启就好了,算错数也会被后续的统计检验筛掉,即使是嵌入式领域,多数难解决的问题加个 watchdog 也都能凑合跑下去,就算产品在用户手里真的崩溃或者坏了,只要概率低一点也不是多大个事(就连特斯拉的车机这种东西死机了似乎也没有赔钱,要知道仪表盘可都在上面)。只有在很少,极少的领域,比如医疗,动力或航空才需要真正的高可靠性。

    何况很多人写代码是半路出家,不了解计算机的结构,对硬件理解很差,经验也不多,完全就是硬着头皮一股脑写下去,遇到问题就靠谷歌那种。让他们去搞 rust ,根本就不可能搞定,最后当然是很挫败。想要找可靠的专家合作的话,一是人数不多,很可能根本找不到,二是价码很高,找到人也不一定能谈拢。

    两个因素合起来,那就是用 rust 收获不大,对于我们来说完全可以用 c ,cpp 代替,但是成本究极倍增。

    曾经尝试过用 rust 做固件,得到的结论是,这东西也许 5 年后会很好,到时候足够内卷,也许多数写程序的人就能理解内存是怎么一回事了。但现在就用,你的队友只会让你血压疯狂升高。
    8355
        7
    8355  
       2023-01-07 16:34:25 +08:00   1
    前几天喷 golang 说 rust 好 今天又说 rust 是巨坑
    果然 php 才是最好的语言啊
    xieren58
        8
    xieren58  
       2023-01-07 17:07:37 +08:00   1
    rust + rtic, 用在 stm32 上, 爽得飞起...
    agagega
        9
    agagega  
       2023-01-07 17:37:57 +08:00   1
    复杂性是不会消失的,它只会从一个地方转移到另一个地方。不同的语言适合管理不同地方的复杂度。前端娱乐圈的某些人听到 Rust 这个名字就起兴了,一副在此之前从来没听说过原生语言的模样,简直是胡闹。

    Rust 是好,但它并不适合所有场景。我倒希望能有一个带 GC 、抽象层次高的原生语言,OCaml 比较接近,就是阳春白雪了些,C#也不错。不需要 GC 的场景,如果 C++真的能有实用性的生命周期和包管理解决方案(怎么会有人说 CMake 这种东西 modern 啊),我甚至还挺乐意用 C++
    SolarAA
        10
    SolarAA  
       2023-01-07 19:36:10 +08:00
    @agagega OCaml 5 有了多线程真希望能够和 Go 拼一拼,可惜生态不好。
    kaneg
        11
    kaneg  
       2023-01-07 19:53:17 +08:00 via iPhone
    鱼与熊掌不可兼得,不能既要 rust 的安全严谨,还要敏捷快速。
    或许很多初创公司的代码还没累积到屎山就死了,所以用 js 可能跟合适。
    但一旦跨过生死考验,准备长期发展时,就开始为当时的选择付出代价:欠下的迟早要还的。
    duke807
        12
    duke807  
       2023-01-07 20:02:52 +08:00 via Android
    linus 都说了,同意 linux 支持 rust 是为了惩罚开发人员,很多人还真以为 rust 是未来了
    littlewing
        13
    littlewing  
       2023-01-07 21:27:36 +08:00
    @duke807 真要惩罚开发人员应该用 C++
    acctv2
        14
    acctv2  
       2023-01-07 21:34:41 +08:00   2
    @agagega 其实 C++本体不太恶心,尤其如果项目主体用的 C++11 以上标准。
    C++的编译和工具链太恶心了,太恶心了,太恶心了。
    jiang42
        15
    jiang42  
       2023-01-08 02:44:35 +08:00
    有去重新用 Rust 明子,不如好好在 C++上搞搞形式化-。-
    zjsxwc
        16
    zjsxwc  
       2023-01-08 10:37:35 +08:00 via Android
    https://scribe.rip/using-rust-at-a-startup-a-cautionary-tale-42ab823d9454

    原文不是楼主说的意思吧。
    rekulas
        17
    rekulas  
       2023-01-08 11:29:54 +08:00
    20 21 年很多推 rust 的文章,鼓吹初创公司用 rust 我就感觉这有点不合适
    初创公司需要快速实现产品,而大部分的初创公司的产品都难以遇到真正的性能瓶颈(至少前几年是这样),而相比其他语言 rust 的学习曲线和开发效率也是有目共睹,所以实在不建议首选 rust
    后悔选择 rust 的公司我都看了不少了,这可能只是个开头。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5411 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 07:12 PVG 15:12 LAX 23:12 JFK 02:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86