V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
vincent7245
V2EX  ›  程序员

一些疑惑,为什么 rust 干不过 go 呢

  •  2
     
  •   vincent7245 · 2023-06-17 17:28:50 +08:00 · 18748 次点击
    这是一个创建于 558 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先叠 buff

    • 本人主语言 java ,平时也用 c++ 简单的做一些框架的二开
    • c/c++ 水平一般,没做过大型项目
    • rust 水平一般,只做过简单的中间件,一千行代码左右,没做过大型项目
    • 用过 go ,但是不喜欢,感觉太简陋了

    观点

    个人感觉 rust 的难点就是理解其变量所有权、引用、借用的思想,这一关过了也就没什么难度了。而且 rust 的枚举、泛型、面向对象的特性要比 go 完善很多

    所以为什么 rust 不如 go 火呢

    随便骂吧

    个人愚见,不同观点可以随便说,别骂的太难听就行

    122 条回复    2024-11-14 14:28:36 +08:00
    1  2  
    hzzhzzdogee
        101
    hzzhzzdogee  
       2023-06-18 13:35:09 +08:00
    @lanlanye 同感
    456789
        102
    456789  
       2023-06-18 13:46:02 +08:00
    为啥要干过,默默发育,然后偷家就行了哈哈哈哈
    Bluecoda
        103
    Bluecoda  
       2023-06-18 16:16:04 +08:00
    https://programming-language-benchmarks.vercel.app/rust-vs-zig

    Zig 也不错啊,我也有各种为什么????
    lijiangang886
        104
    lijiangang886  
       2023-06-19 03:35:29 +08:00
    @Slurp @yangyaofei #72 #73 虚空回复有什么意思,要对线就明火执仗的来嘛
    daokedao
        105
    daokedao  
       2023-06-19 08:48:53 +08:00
    就如同 C++ 和 Java 比,肯定是 Java 应用面更广。
    但是如果做系统底层,就不可能有 Java ,都是 C++
    layxy
        106
    layxy  
       2023-06-19 08:50:53 +08:00
    有个好爹+语法简单,虽然不是很认同 go 的'大道至简',但是开发环境搭建和语法门槛真的很低,编译和调试也很快
    lsk569937453
        107
    lsk569937453  
       2023-06-19 09:03:31 +08:00   ❤️ 1
    说下个人学习 rust 的一些经验吧。2021 年之前学了 5 遍,因为所有权 /生命周期太尼玛难了,根本写不了代码,到处都是编译错误。

    自从 tokio 进入 rust 标准,rust analyzer 进入 rust 标准,以及 chatGpt 的出现,rust 的生态已经好很多了,现在的情况是要追上 go 还有很大一段距离,毕竟 go 有 kubernetes 这种大杀器在,所以学习 go 的浪潮起来了,而且各种开源库比较完善了。

    我到现在还不是很懂生命周期,但是这不妨碍我用 rust 开发应用( https://github.com/lsk569937453/silverwind
    )(不懂就问 chatGpt)。其他的所有权 /借用 /引用等的错误,完全可以通过 rust analyzer 来搞定(插件怎么提示你就怎么改)。

    现在 rust 的不足还有一些:
    1.很多开源库连 1.0 都没有。公认的 1.0 是个里程碑,达到 1.0 表明该开源库达到可用阶段。
    2.开发 web 后端代码非常丑陋。虽然也有好几个 web 框架,但是你使用 web 框架时不可避免的会用异步运行时。所以很多时候都是围绕 tokio 来找开源库。不支持 tokio 的直接可以 pass 了。
    3.很多 rust 开源库是直接调用的 dll,所以还需要额外的安装依赖。
    4.rust 编译非常慢,笔记本编译 rust 风扇会狂转(我为了开发 rust 还专门换了个台式机)。
    5.很多时候调试其他项目=代码编译成功后,调试代码逻辑。而调试 rust 项目=让代码编译成功。
    shenjinpeng
        108
    shenjinpeng  
       2023-06-19 09:56:23 +08:00   ❤️ 1
    [!]( )
    yangyaofei
        109
    yangyaofei  
       2023-06-19 10:15:46 +08:00
    @lijiangang886 因为只是想让 OP 看到, 你这挑事儿过份了 /dog
    dog82
        110
    dog82  
       2023-06-19 10:18:38 +08:00
    月经贴,我不会 rust ,凑个热闹回答一下
    1 、没大厂背书; 2 、学习曲线陡峭;没有明星项目加 buff
    Slurp
        111
    Slurp  
       2023-06-19 10:22:02 +08:00 via iPad
    @yangyaofei 不会有用户觉得 Electron 和 Python 写的垃圾工具很好用吧?还不相关,语言甚至决定了工具的下限和上限。

    Rust C++ Swift 这类原生语言就是远胜于 Go Java 这种 GC 语言,况且 Rust 还解决了很多内存问题,应当是这三个中平均水平最高的。

    😆 还用户不关心,你不会觉得我的用户仅仅指的是刚会用电脑的小白?

    😁 Rust 里不用 unsafe 你搞出来个空指针试试,靠 tuple 实现 tagged union ,靠手动判空避免空指针,PL 发展十几年的成果一点不用,结果还要以「不是不能用」批评这方面毫无疑问的优等生,真是不思进取。
    archxm
        112
    archxm  
       2023-06-19 10:27:29 +08:00
    楼主还处于,别人整理好需求,自己只需要执行编码就行的阶段吧。
    litchinn
        113
    litchinn  
       2023-06-19 11:46:21 +08:00   ❤️ 1
    针对“难点就是理解其变量所有权、引用、借用的思想”,很明显对于更多我这种人而言,这只是第一部分的难点,后面还有生命周期,宏,智能指针,unsafe 等在其他流行语言(不代表全部)中不太涉及的概念。
    然后回到主题,我感觉 rust 的火火在讨论层面,这主要在于应用场景上,Go 在云原生领域应用广泛,rust 则更适合底层,例如驱动。显然前者大家参与的更多。
    再谈谈未来发展吧,我感觉 rust 目前的困境在于找不到合适的发力点和关键项目。官方推荐的不管是 wasm 还是嵌入式,rust 都有优势,但是不够让人抛弃现有的。大多数公司在技术选择上都是保守的,他们没有能力和资金去做科研。我个人比较看好 rust 在游戏引擎上发力,这个领域有需求,从业人数众多,但目前没看到什么领头的项目。
    yangyaofei
        114
    yangyaofei  
       2023-06-19 13:03:22 +08:00
    @Slurp

    1. 各个语言和框架都有各自的问题, 上下限也不是仅仅是性能之类的能完全决定的

    2. 没有人说前者比后者差, 没有人说前者水平不高, 说的是使用的难度和成本, 把这两个看成一回事儿不是需要去看眼科就是需要看神内.

    3. 用户关心不关心是站在用户的角度, 终端的用户就是小白, 甚至使用库的用户也不怎么关心. 就像我去隔壁村, 我肯定骑自行车或者电驴, 喷气飞机又好又快也没人会选, 性能和高级是有成本的, 一般需求都是去隔壁村, 跨洋旅行自然会选飞机, 在不指定条件下说谁更好本身就是没有意义的.

    4. 都"优等生"了, 都"高水平"了,为啥 rust 还有 unsafe 呢, 去掉不好么, 创造一个没有黄段子的世界不好么.

    5. @lijiangang886 满意了?
    ideacco
        115
    ideacco  
       2023-06-19 13:43:44 +08:00
    @prenwang 有道理,写代码重要的还是能不能跑起来先,再看性能。Python 的工具链在很多情况下都可以傻瓜式调用了。
    Slurp
        116
    Slurp  
       2023-06-19 15:22:10 +08:00
    @yangyaofei 嗯,你试试 Python 实现 Adobe Photoshop ?带 GC 甚至是带 GIL 的无多线程语言就是很可悲。明明是个脚本却又要恶心用户,不同的 Python 版本,不同的依赖版本,又要造个 venv 浪费硬盘( Go 也有为了一个小包 clone 了整个 repo 的垃圾设计),启动之后又是一堆乱写导致的异常,点进去一看垃圾 list comprehension 套了一坨又一坨,想改就动屎山去吧。这就是 Python 的上限。😅

    「就像我去隔壁村, 我肯定骑自行车或者电驴, 喷气飞机又好又快也没人会选, 性能和高级是有成本的, 一般需求都是去隔壁村, 跨洋旅行自然会选飞机, 在不指定条件下说谁更好本身就是没有意义的. 」

    典型的扯淡,哪个用户不喜欢用更快的软件?你比喻的是个啥玩意?想偷懒直说,让我避避雷。「开发者的负担关我屁事,收了钱就得做事。」

    「都"优等生"了, 都"高水平"了,为啥 rust 还有 unsafe 呢, 去掉不好么, 创造一个没有黄段子的世界不好么.」

    Rust 和 C++ 最大的区别就是在 Code Review 的时候省事,避免大部分人为的错误。硬扯 unsafe 你也是欠喷了。不过这里是在和 Go 比,Go 甚至连比的资格都没有。上比语法不行,下比性能不行,没有 native 命却患 native 病了属于是。Go 用户也是被 PUA 惯了,连 Sonic 这种嗯造 PLAN9 汇编的玩意都出来了(另外还有虽然能汇编但是我就是不支持 FFI 这种事,我就懒得提了)。却仍然不解决基本的空指针异常,收集个资源还要 defer 手动清理。总有人说 B 站崩了是在黑 Go ,我咋觉得是这还用黑?这种语言写挂了不是很正常。
    yangyaofei
        117
    yangyaofei  
       2023-06-19 20:57:33 +08:00
    黑粉真可怕,人家说飞机不适合去隔壁村,非要反问难道自行车能进行跨洋履行么,追星也不过如此啊
    litguy
        118
    litguy  
       2023-06-20 08:29:42 +08:00
    rust 在 google 的新 OS 里面看到过代码
    感觉语法怪怪的
    作为 C/C++ 党没任何学习的兴趣
    go 在工作中用过
    非常喜欢这个语言的设计
    工作关注在分布式存储
    yb2313
        119
    yb2313  
       135 天前
    @ispinfx #17 真的吗? 你真的喜欢把五分钟就能写完的东西改成两个小时来写吗
    ispinfx
        120
    ispinfx  
       135 天前
    @yb2313 5 分钟能写完的东西改成 67 分钟来写就行啊,为什么要写两小时?
    joseph1994
        121
    joseph1994  
       43 天前
    90%以上的程序员平时的业务场景用 Go 就可以最高效率解决,开发效率和性能达到最完美的平衡,Rust 适合的是那种写完之后三五年都不会改动的基础项目,如果哪个公司拿来写日常业务,100% KPI 。至于 Rust 整天这个榜单第一,那个榜单第一,看看就好,毕竟是「排行榜编程语言」搞这个是一流的
    joseph1994
        122
    joseph1994  
       43 天前
    @keymao Go 现在生态成熟度完全碾压 Rust 好吗?整个云基建的核心语言就是 Go ,CNCF 毕业项目里随便摘出来一个 Go 项目都能吊打 Rust ,Rust 有什么能拿的出手的?写了个民用操作系统预览版的内核的一部分,这也能拿来说啊...
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5710 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 06:28 · PVG 14:28 · LAX 22:28 · JFK 01:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.