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

2022-05-06 11:57:01 +08:00
 HeFengzz
来自前端萌新搬运工学 RUST 的吐槽贴
8102 次点击
所在节点    程序员
60 条回复
Highlights
2022-05-06 15:11:25 +08:00
真正的大师永远怀着一颗学徒的心
sheep3
2022-05-06 17:29:34 +08:00
这算啥难看?.......
动态类型语言写多了吧
MinQ
2022-05-06 17:55:50 +08:00
@jasonkayzk 看到这个哇的一声就哭了出来
chuanqirenwu
2022-05-06 18:08:07 +08:00
写 rust 我觉得挺开心,表情包很丰富,一会哭一会笑,充分体现当时写代码的心情。<_>, >_<
libook
2022-05-06 18:46:40 +08:00
做过 7 年的 JS 全栈开发,曾深入关注 ECMA-262 的各项提案,比较深刻了解到的情况是,ECMA-262 标准的制定机制使得它更新很快,JS 的很多特性都是从其他语言去其糟粕取其精华的(比如你能看到很多从 Python 、Ruby 等语言吸纳过来的特性),所以能保持对时下普遍开发模式、业务场景、开发需求的适应。我是感觉平时看到的对 JS 的批评要么是偏见,要么就是源自于批评者自身对 JS 掌握不够扎实。

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

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

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

以强类型语言的要求来看待弱类型语言、以脚本语言的要求来看待系统开发语言、以一门语言的使用习惯来看看待另一门语言,个人感觉都是不大公平。
pmispig
2022-05-06 19:49:38 +08:00
rust 的功能很先进,但是这个语法和符号真是屎一样,一片代码看上去全是乱七八糟的符号,我敢说要不是键盘上只有这么多符号,不然可能会有很多
fpure
2022-05-06 20:04:22 +08:00
@encro 生命周期
skies457
2022-05-06 22:09:56 +08:00
go 1.18 带个 functional 的库(比如 lo )照样能写得很花....
Tazi
2022-05-06 22:32:58 +08:00
要说丑的话 感觉只有生存时间比较丑
gowk
2022-05-06 23:45:59 +08:00
谁要说 Go 语法难看,我就锤死谁
angrylid
2022-05-06 23:47:33 +08:00
@v2defy Go GUI 恐怕还是开个 HTTP 服务器,浏览器访问 localhost:8080 吧😂
cybird
2022-05-07 00:40:17 +08:00
哈?语法难看......?行吧,审美是个人自由,不做评价
AItsuki
2022-05-07 00:47:10 +08:00
@v2defy if err != nil ,总好过 try catch……
cybird
2022-05-07 00:50:16 +08:00
@Tazi 你想说的也许是叫"生命周期"?
VchentozV
2022-05-07 08:04:35 +08:00
请问 JS 哪条语法难看?
Tazi
2022-05-07 08:15:57 +08:00
@cybird 啊 我颅内瞎翻译的
总之就是这个 https://doc.rust-lang.org/nomicon/lifetimes.html
encro
2022-05-07 08:40:38 +08:00
@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
2022-05-07 09:26:37 +08:00
Let's do leetcode to practise RUST

https://github.com/StudyRust/leetcode_rust
AlisaDestiny
2022-05-07 11:39:01 +08:00
想喷 Rust 你没掌握精髓啊,好好跟这位学学 https://github.com/mTvare6/hello-world.rs
hevi
2022-05-07 11:51:05 +08:00
我觉得 rust 的宏的语法看着才真难顶。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/851137

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX