rust 这门语言太难学了,感觉比 C 还难.. - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yemoluo
V2EX    Rust

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

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

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

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

    要不要继续学啊!

    23 条回复    2024-11-18 19:25:34 +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 里的方法提供的等等东西。
    yemoluo
        16
    yemoluo  
    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 上一个印象很深的求闰年的写法
    yemoluo
        19
    yemoluo  
    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 看上去没太大区别呀
    yemoluo
        21
    yemoluo  
    OP
       2022-09-30 17:46:05 +08:00
    @anjxue 有的,没区别是因为你把他当作 switch 来看待了
    zdustrong
        22
    zdustrong  
       2023-09-29 21:30:19 +08:00 via Android
    会者不难,难者不会
    ebIR8Zz2l07Ts805
        23
    ebIR8Zz2l07Ts805  
       339 天前
    实际上, rust 远比 C 简单, 但凡你能做出点小项目出来就明白. C/C++ 光一个依赖管理就够你学一星期了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2609 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 15:05 PVG 23:05 LAX 08:05 JFK 11:05
    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