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

2021-03-02 22:08:32 +08:00
 GTim

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

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

要不要继续学啊!

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

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

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

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

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

Rust 和 C++ 既想多一些功能给人多一些帮助,又不想损失性能,结果就只能难学难用。
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
2021-03-03 01:41:36 +08:00
C 算比较好学的了, 不仅一本薄薄的 K&R 就囊括了, 还有小半本是附录.

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

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

rust 用起来很爽

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

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

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

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

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

作为一个大学英语四级都没过的人,Rust 是第一个我完全读英文教材学习的语言。
Coelacanth
2021-03-15 14:58:11 +08:00
@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
2021-03-16 20:22:31 +08:00
@Coelacanth match 带来的极大震撼
gaifanking
2022-09-30 16:33:22 +08:00
@Coelacanth 跟 if else 看上去没太大区别呀

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

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

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

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

© 2021 V2EX