• 请不要在回答技术问题时复制粘贴 AI 生成的内容
HeFengzz
V2EX  ›  程序员

Rust 的语法这么难看是不是创造它的人正是 JS 的创始人?

  •  
  •   HeFengzz · May 6, 2022 · 10718 views
    This topic created in 1653 days ago, the information mentioned may be changed or developed.
    来自前端萌新搬运工学 RUST 的吐槽贴
    Supplement 1  ·  May 6, 2022
    @All 关于 JS 和 RUST 作者是同一人这回事,我被网络帖子误导了,不好意思🐷
    Supplement 2  ·  May 6, 2022
    还有,并不是说 JS 语法难看。在下的意思是 JS 中某些奇怪特性的脑回路是不是用在了 Rust 的语法上😅
    此贴不引战,只是找同类(觉的 Rust 里面符号语言太多了)互动一下
    60 replies  •  2022-05-07 11:51:05 +08:00
    encro
    encro
    May 6, 2022
    1
    请问 rust 那条语法难看?
    mxT52CRuqR6o5
    mxT52CRuqR6o5
    May 6, 2022
    2
    js 我听到的批评都是哪里哪里 feature 设计不合理,语法难看还是头一次听说
    noe132
    noe132
    May 6, 2022 via Android
    3
    其实我就只觉得 double colon 用作 namespace 分隔符太丑了,而且还尤其是有泛型的情况下。敲起来真的麻烦。
    https://turbo.fish/
    vinsony
    vinsony
    May 6, 2022❤️3
    4
    难道只有我觉得 js 的语法很爽?
    HeFengzz
    HeFengzz
    OP
    May 6, 2022❤️1
    5
    @encro let hello: &'static str = "hello world";
    HeFengzz
    HeFengzz
    OP
    May 6, 2022
    6
    @vinsony 并不是吐槽 JS 的语法啦
    cht
    cht
    May 6, 2022
    7
    zhuangzhuang1988
    zhuangzhuang1988
    May 6, 2022❤️1
    8
    不是 rust 之父又不是 js 之父 https://zh.wikipedia.org/zh-cn/Rust 叫 Graydon Hoare
    JohnSmith
    JohnSmith
    May 6, 2022❤️2
    9
    js 那叫混沌
    Clarke
    Clarke
    May 6, 2022❤️12
    10
    前端还萌新就来指点江山
    techphoebe
    techphoebe
    May 6, 2022
    11
    看久了习惯了就不觉得难看了
    sosilver
    sosilver
    May 6, 2022 via Android❤️1
    12
    rust 语法算好的了,zig 、go 才叫难看
    HeFengzz
    HeFengzz
    OP
    May 6, 2022
    13
    @zhuangzhuang1988 我大意了,不知道在哪看得文章来的
    uGRiPVk3vSJ
    uGRiPVk3vSJ
    May 6, 2022❤️6
    14
    #7 成功了
    我喜欢分号和大括号,厌恶用强制缩进来控制代码结构,所以 python 傻逼
    pengtdyd
    pengtdyd
    May 6, 2022
    15
    Rust 的语法难?你怕不是没有写过汇编!
    ViriF
    ViriF
    May 6, 2022 via iPhone
    16
    老哥们的评论给这个话题注入了灵魂,但是我总感觉 OP 发话题的历史有些…微妙的水贴感
    yazinnnn
    yazinnnn
    May 6, 2022
    17
    op 觉得什么语言的语法好看,说出来让大家笑话一下.
    gimp
    gimp
    May 6, 2022
    18
    @HeFengzz #5

    let hello: &'static str = "hello world";

    难看吗
    cssk
    cssk
    May 6, 2022 via iPhone❤️2
    19
    @gimp #18 这个单引号真碍眼
    v2defy
    v2defy
    May 6, 2022❤️1
    20
    我觉得难不难看是习惯和惯性问题,以前我觉得 go 的风格是真的清晰精炼简洁,看 rust 觉得好丑,觉得蛇形命名法不如驼峰命名法好看,就不想学 rust 。

    但网上 rust 吹实在太多了,让我觉得不学不行,加上 go 用久了让我觉得有些限制,比如 go 不是想写啥写啥,我想写个 gui 程序就很难找到合适的框架,fyne 之类都挺丑的。go 里稍微复杂点的操作都要使用反射,反射的性能貌似不高,而且挺丑的,还有 if err != nil ,是真的多,不好看,重复代码太多了。还有我觉得 go 语言不能让我学一辈子,以后早晚会接触更深入的东西,那 rust 就是早晚要学的。

    通过搜索想解决“觉得 rust 蛇形命名丑,不想学,怎么克服这个心结”这样的问题,看到了这个帖子 https://rustcc.cn/article?id=fa10d8d8-23a6-42f3-9c9f-2f65c8bd9961

    觉得说得很对,不能因为小石头,阻挡了前进的道路,心结瞬间打开了,再学的时候就不觉得 rust 丑了。现在已经入了一点点门,写了几百行代码,感觉 rust 其实也不是太丑,一开始是因为看不习惯,而且迭代器是真的好用啊,代码像上了流水线一样,一句里可以做那么多事情,省了多少 for 循环呀,代码信息密度高,就算真的丑点,也能忍过去。
    duke807
    duke807
    May 6, 2022
    21
    js 用 async await 之後,還是很好看的
    python 我也喜歡
    rust 丑的我無法接受
    uni
    uni
    May 6, 2022❤️1
    22
    上面有人提到分号,分号在 rust 里面确实很有问题,在于 rust 写分号与不写分号都有语义且语义不同,经常就遇到哪个地方忘写了个分号于是编辑器的 linter 就直接报错,一大片一大片都是红的,让人很难定位问题出在哪里,经常写着写着就怀疑人生

    这是我到目前为止觉得 rust 最傻逼的地方,不知道以后会不会有解决方案
    lrs
    lrs
    May 6, 2022 via Android
    23
    @HeFengzz 正常来说不会在 let 语句中声明 lifetime
    BBCCBB
    BBCCBB
    May 6, 2022
    24
    js 那个人只是中途加进去的,
    这几天我也在学 rust, 感觉很舒服..
    timpaik
    timpaik
    May 6, 2022 via Android
    25
    为啥不写

    let hello = "hello world";
    jasonkayzk
    jasonkayzk
    May 6, 2022❤️1
    26
    Option<Rc<RefCell<Node<T>>>>
    ncepuzs
    ncepuzs
    May 6, 2022❤️2
    27
    神他妈 Rust 和 JS 创造者是同一个人
    HeFengzz
    HeFengzz
    OP
    May 6, 2022
    28
    @v2defy 确实是因为相比之下 JS 写起来太舒服了,所以觉得 Rust 太难适应
    Wanex
    Wanex
    May 6, 2022
    29
    js 的语法很好看啊,都是从各种语言的精华里抄,哪里难看?
    charseer
    charseer
    May 6, 2022
    30
    rust 是我见过利用符号最多的语言。。。
    agagega
    agagega
    May 6, 2022 via iPhone
    31
    JS 语法不算难看,OCaml 也挺优雅的,Rust 这个一堆符号是不是受 Perl 影响了
    FightPig
    FightPig
    May 6, 2022
    32
    rust 我比较受不了的是编译在点慢,搞来搞去又搞 go 去了
    xFrye
    xFrye
    May 6, 2022
    33
    一时间不知道从哪里开始吐槽。。。
    junnplus
    junnplus
    May 6, 2022
    34
    一时间不知道从哪里开始吐槽。。。
    musi
    musi
    May 6, 2022
    35
    这是前端没学好又去祸害 rust 了?
    HeFengzz
    HeFengzz
    OP
    May 6, 2022
    36
    @musi 半路出家了属于是
    IvanLi127
    IvanLi127
    May 6, 2022
    37
    不觉得难看呐,如果 Rust 和 JS 语法有共通之处,那太爽了。我感觉 op 要转行了。
    xiaket
    xiaket
    May 6, 2022
    38
    @charseer APL 了解一下. :doge:
    Observer42
    Observer42
    May 6, 2022
    39
    一时间不知道从哪里开始吐槽
    bertonzh
    bertonzh
    May 6, 2022
    40
    Rust 语法中那些看上去难看的东西,主要是生命周期、引用相关的,和 JS 乱七八糟的历史特性没啥关系。
    Highlights
    Highlights
    May 6, 2022
    41
    真正的大师永远怀着一颗学徒的心
    sheep3
    sheep3
    May 6, 2022
    42
    这算啥难看?.......
    动态类型语言写多了吧
    MinQ
    MinQ
    May 6, 2022
    43
    @jasonkayzk 看到这个哇的一声就哭了出来
    chuanqirenwu
    chuanqirenwu
    May 6, 2022
    44
    写 rust 我觉得挺开心,表情包很丰富,一会哭一会笑,充分体现当时写代码的心情。<_>, >_<
    libook
    libook
    May 6, 2022❤️4
    45
    做过 7 年的 JS 全栈开发,曾深入关注 ECMA-262 的各项提案,比较深刻了解到的情况是,ECMA-262 标准的制定机制使得它更新很快,JS 的很多特性都是从其他语言去其糟粕取其精华的(比如你能看到很多从 Python 、Ruby 等语言吸纳过来的特性),所以能保持对时下普遍开发模式、业务场景、开发需求的适应。我是感觉平时看到的对 JS 的批评要么是偏见,要么就是源自于批评者自身对 JS 掌握不够扎实。

    与之形成鲜明对比的是 Go ,个人学习 Go 的感受就是部分特性相对比较不灵活和“落后”,但这也正是 Go 能成为企业协作开发利器的原因所在。

    学习 Rust 给我的感受就是,我看到了很多“先进特性”,这种感受就跟我看 ECMA-262 各项提案的感受一样,而且很多特性初看的时候觉得晦涩难懂,但彻底弄明白之后又觉得设计巧妙,我在学的过程中反正是连连称妙的。

    但同时 Rust 的特性和语法糖比较多,而且很多语法是使用各种符号而不是英文单词,同一种符号在不同特性中可能表达不同功能,阅读起来可能不是那么人类友好。有可能用多了习惯了就好了,而且 Rust 本身很灵活,代码应该总可以优化到各方面比较令人满意的程度,只要投入够多的设计精力。

    以强类型语言的要求来看待弱类型语言、以脚本语言的要求来看待系统开发语言、以一门语言的使用习惯来看看待另一门语言,个人感觉都是不大公平。
    pmispig
    pmispig
    May 6, 2022❤️3
    46
    rust 的功能很先进,但是这个语法和符号真是屎一样,一片代码看上去全是乱七八糟的符号,我敢说要不是键盘上只有这么多符号,不然可能会有很多
    fpure
    fpure
    May 6, 2022
    47
    @encro 生命周期
    skies457
    skies457
    May 6, 2022 via iPhone
    48
    go 1.18 带个 functional 的库(比如 lo )照样能写得很花....
    Tazi
    Tazi
    May 6, 2022 via iPhone
    49
    要说丑的话 感觉只有生存时间比较丑
    gowk
    gowk
    May 6, 2022
    50
    谁要说 Go 语法难看,我就锤死谁
    wakarimasen
    wakarimasen
    May 6, 2022 via Android
    51
    @v2defy Go GUI 恐怕还是开个 HTTP 服务器,浏览器访问 localhost:8080 吧😂
    cybird
    cybird
    May 7, 2022
    52
    哈?语法难看......?行吧,审美是个人自由,不做评价
    AItsuki
    AItsuki
    May 7, 2022
    53
    @v2defy if err != nil ,总好过 try catch……
    cybird
    cybird
    May 7, 2022
    54
    @Tazi 你想说的也许是叫"生命周期"?
    1Z3KYa0qBLvei98o
    1Z3KYa0qBLvei98o
    May 7, 2022
    55
    请问 JS 哪条语法难看?
    Tazi
    Tazi
    May 7, 2022 via iPhone
    56
    @cybird 啊 我颅内瞎翻译的
    总之就是这个 https://doc.rust-lang.org/nomicon/lifetimes.html
    encro
    encro
    May 7, 2022
    57
    @HeFengzz

    你大多数时候完全可以 let hello = "hello world"的啊,只有必须用生命周期的时候才用。
    教程都写了,应该避免 static

    https://rustwiki.org/zh-CN/book/ch10-03-lifetime-syntax.html


    静态生命周期

    这里有一种特殊的生命周期值得讨论:'static ,其生命周期能够存活于整个程序期间。所有的字符串字面量都拥有 'static 生命周期,我们也可以选择像下面这样标注出来:

    ```
    let s: &'static str = "I have a static lifetime.";
    ```

    这个字符串的文本被直接储存在程序的二进制文件中而这个文件总是可用的。因此所有的字符串字面量都是 'static 的。

    **你可能在错误信息的帮助文本中见过使用 'static 生命周期的建议,不过将引用指定为 'static 之前,思考一下这个引用是否真的在整个程序的生命周期里都有效。你也许要考虑是否希望它存在得这么久,即使这是可能的。大部分情况,代码中的问题是尝试创建一个悬垂引用或者可用的生命周期不匹配,请解决这些问题而不是指定一个 'static 的生命周期。**
    memorycancel
    memorycancel
    May 7, 2022
    58
    Let's do leetcode to practise RUST

    https://github.com/StudyRust/leetcode_rust
    AlisaDestiny
    AlisaDestiny
    May 7, 2022
    59
    想喷 Rust 你没掌握精髓啊,好好跟这位学学 https://github.com/mTvare6/hello-world.rs
    hevi
    hevi
    May 7, 2022❤️1
    60
    我觉得 rust 的宏的语法看着才真难顶。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2080 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 107ms · UTC 13:58 · PVG 21:58 · LAX 05:58 · JFK 08:58
    ♥ Do have faith in what you're doing.