V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
GTim
V2EX  ›  Rust

rust 这门语言太难学了,感觉比 C 还难..

  •  1
     
  •   GTim · 2021-03-02 22:08:32 +08:00 · 9656 次点击
    这是一个创建于 1121 天前的主题,其中的信息可能已经有所发展或是发生改变。

    rust 这门语言太难学了,我都学习一周了,感觉还没摸到门槛,感觉比 C 还难..

    以前写了一点教程感觉还不难,现在深入学习,难上加难了

    要不要继续学啊!

    22 条回复    2023-09-29 21:30:19 +08:00
    echo1937
        1
    echo1937  
       2021-03-02 22:13:20 +08:00
    C 是很好学的,关键字少,语法也简单,难的是用 C 写项目,相较于其他现代高级语言,要懂很多软硬件基础知识。
    agagega
        2
    agagega  
       2021-03-02 22:21:12 +08:00 via iPhone
    Rust 就是以语法 /类型系统的方式包装了 C++中很多「最佳实践」,然后语法变鬼畜了点,融了很多函数式的概念进去
    wzb0909
        3
    wzb0909  
       2021-03-02 22:25:43 +08:00
    不是哥,有啥语言比 C 简单。
    想了许久只有汇编了。

    然后,新语言都是大公司维持垄断的武器吧。你给人当枪使,自己得什么好处呢。毕竟 C++做什么都很方便,资料也多呀。
    fwee
        4
    fwee  
       2021-03-02 22:34:10 +08:00
    C 写出来简单,写对很难..
    imzcg2
        5
    imzcg2  
       2021-03-02 22:35:12 +08:00 via Android
    因为 rust 不相信程序员,只相信编译器。不过作为新语言还是可以学的,就是会不会火和赚钱就难说了
    dbw9580
        6
    dbw9580  
       2021-03-02 22:41:08 +08:00 via Android   ❤️ 3
    我觉得 rust 作为一个人的第一门编程语言其实不会比其他语言更困难,特别是不会比 C 困难。你觉得难是因为有了 C 的基础,写惯了 C 的代码,Rust 的所有权和生命周期的概念很不好融入进去。我记得我刚开始看 rust 的时候照搬学 C 的经验,想要实现一个链表,那种基本上寸步难行的挫败感是压倒性的。但如果从一开始就告诉你变量有所主,借用不能超过主人的生命周期等等,你会觉得这些根本就是理所应当的,实现一个安全可靠的链表就是有这么多内在的复杂性。再加上 rust 里普遍的 RAII 模式,比 C 手动管理内存需要了解的东西少得多了。
    SuperMild
        7
    SuperMild  
       2021-03-02 22:55:46 +08:00   ❤️ 5
    C 语言本身就是很简单的,难的是内存管理、代码复用等语言以外的东西。

    Python 就语言本身来说,比 C 语言复杂很多,而 Python 易用的表象是因为其有 GC 、标准库比较好用、第三方库比较多。

    Rust 对标 C++, 语言特性无比丰富,同时又要人脑协助管理内存,难学是正常的。

    编程技术有句名言是没有银弹,C 本身简单,但语言对人的帮助就少(汇编语法更简单,但对人的帮助也更少,需要人多用脑多花精力)。Python 语言复杂一些,但由于功能多,对人的帮助也多,写起来就舒服,但同时运行效率也会更差。

    Rust 和 C++ 既想多一些功能给人多一些帮助,又不想损失性能,结果就只能难学难用。
    12101111
        8
    12101111  
       2021-03-03 00:16:00 +08:00
    C 语言很难写出没有 UB 的复杂代码,虽然 rust 还没有语言规范定义什么叫 UB (只有草案 https://github.com/rust-lang/unsafe-code-guidelines ), 但是 rust 除了 unsafe 基本上消灭了 unsound, 并且以一种尽可能人体工程学友好的方式提供出 0 开销抽象的语法,因此就把整个计算机抽象模型暴露给用户了
    namelosw
        9
    namelosw  
       2021-03-03 01:41:36 +08:00
    C 算比较好学的了, 不仅一本薄薄的 K&R 就囊括了, 还有小半本是附录.

    倒是 C++无比复杂, 比 Rust 复杂多了.

    其实 Rust 没多难, 多花点时间就好了, 加油.
    chinvo
        10
    chinvo  
       2021-03-03 01:48:11 +08:00 via iPhone   ❤️ 2
    我深度地用过的语言,大概就是 C 、C#、PHP 、Swift 和 rust 了

    rust 用起来很爽

    可以说是除了 C# 之外第二爽的了

    只要能编译,基本不怕跑飞
    supermao
        11
    supermao  
       2021-03-03 07:09:15 +08:00
    没半年不要想
    AndyAO
        12
    AndyAO  
       2021-03-03 07:20:01 +08:00
    感觉你这个问题缺少关键的信息,只说感到难学,但没有给出具体的说明,所以搞不懂具体的细节,不知道为何难学,自然也就没有办法想出好的解决方法,建议补充一下细节。
    xdeng
        13
    xdeng  
       2021-03-03 09:46:01 +08:00
    C 代表了自由
    shilyx
        14
    shilyx  
       2021-03-03 10:15:43 +08:00
    rust 很丑,不建议使用

    基本上 C/C++的一些不便不必要用 rust 来填补,golang 、c#分担一些就很舒适了。
    PTLin
        15
    PTLin  
       2021-03-04 20:02:34 +08:00   ❤️ 2
    假如你看官方的 The Book 学习的话我建议你看完教程之后再看一下 Rust By Example,因为很多东西 The Book 里都没讲,也可以买一本 Programming Rust(Rust 程序设计),我觉得这本书比所有官方的学习资料都要好。
    并且建议大概看一遍 rustup doc --std,比如 mem 模块里的函数都能干什么,原始指针类型都提供了什么和 C 语言里指针的等价操作,ptr 模块里的 NonNull 是做什么的,三角函数什么的是以 f32/f64 里的方法提供的等等东西。
    GTim
        16
    GTim  
    OP
       2021-03-04 20:49:06 +08:00
    @PTLin 谢谢你的建议
    libook
        17
    libook  
       2021-03-12 11:51:28 +08:00   ❤️ 1
    越简单的语言,对开发人员要求越高。

    C 很简单,但是经验不足的开发者极其容易写出有缺陷的程序,而且恐怖的是这些程序多半是可以启动运行的。

    Rust 的设计目标之一就是能用一些万全策略来规避以往在 C 、C++上遇到的各种问题;如果你觉得解决这些问题并不是你的首要需求,那么你可能并不需要 Rust 。

    作为一个大学英语四级都没过的人,Rust 是第一个我完全读英文教材学习的语言。
    Coelacanth
        18
    Coelacanth  
       2021-03-15 14:58:11 +08:00   ❤️ 6
    @shilyx

    pub fn is_leap_year(year: i64) -> bool {
    match (year % 4, year % 100, year % 400) {
    (0, 0, 0) => true,
    (0, 0, _) => false,
    (0, _, _) => true,
    (_, _, _) => false,
    }
    }

    Exercism 上一个印象很深的求闰年的写法
    GTim
        19
    GTim  
    OP
       2021-03-16 20:22:31 +08:00
    @Coelacanth match 带来的极大震撼
    gaifanking
        20
    gaifanking  
       2022-09-30 16:33:22 +08:00
    @Coelacanth 跟 if else 看上去没太大区别呀
    GTim
        21
    GTim  
    OP
       2022-09-30 17:46:05 +08:00
    @anjxue 有的,没区别是因为你把他当作 switch 来看待了
    zdustrong
        22
    zdustrong  
       180 天前 via Android
    会者不难,难者不会
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3168 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 12:33 · PVG 20:33 · LAX 05:33 · JFK 08:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.