Rust 训练营总结丨第三次入门 Rust

缘起

2023 年我给自己定了很多个目标,最终的结果是每个都做了一些事情,但是没有一个是做得比较彻底的,印证了《孙子兵法》的那句:“无所不备,则无所不寡”。

在 2023.10.23 出于好奇,我订阅了《Rust 语言从入门到实战》的专栏,跟着课程的更新节奏学习完了整个专栏。

Rust语言从入门到实战结课证书

虽然我第一次入门 Rust 失败了,但也被 Rust 的种种特性所吸引。我是个特别喜欢“痛苦前置”的人,而 Rust 编译器"睚眦必报"的编译器检查正给予了我被虐的爽感,编译通过后程序的稳定运行也符合我追求成为一位“靠谱”工程师的愿景。

加之我的主力语言是 Go,一门应用编程语言,所以我一直希望学习一门系统编程语言,以期将来有能力窥探一些底层的细节原理。C/C++ 太古老了,特性太多了,大神太多了,我怎么学都不可能赶得上别人,嘿嘿,学个新的,大家都没学过,这不就舒服了么。

后来极客时间决定开设《Rust 训练营》,讲师是陈天老师,我去搜了关于陈天老师的一些资料,看了一些他写的文章和技术分享视频,甚至油管上还有他之前面试的视频。OK,这个人得到了我的认可,我想跟这样的人交个朋友,哪怕只是加个微信,至少我多了个口子,得以窥探精英阶层人士的生活一角。

结合 2023 年的教训,2024 年年初我就给自己制定了一年的目标,只有一个,就是踏踏实实、完完整整学习完整个 Rust 训练营,其他所有事情和目标,都要为其让步

其实是 2 个目标 hhh,另外一个目标是:完成人生的第一场半程马拉松。

筑基

为了更好服务于《Rust 训练营》,在 1-4 月份,我花了差不多 3 个多月的时间啃下了《Rust 程序设计(第二版)》,对整个 Rust 的语言特性建立了更加完善的体系基础,也多奠定了一些基础,当然,这是我第二次入门 Rust 失败。

Rust 程序设计(第二版)阅读计划

修炼

4 月 18 号开营,本来是预计 7 月份结营的,不过陈天老师分享的欲望刹不住车,硬是“拖堂”到了 11 月 22 号。事实上,这是有点难受的,一个事情拖太久,思维上很容易疲惫,懒惰也愈难克服。不过从消费者的角度,这是赚翻了,毕竟,学着学着,花呗的 12 期无息分期也差不多要还完了。

所以,其实一个 1095 的程序员,在 4.20 到 11.22 是可以花 279 小时 54 分钟学完 202 讲课程的。

即使你将来不使用 Rust,相信你学完这门课程后也能成为一位更好的软件工程师。 —— 陈天

是的,在学习中,更多时候感受到的不仅仅是在学习 Rust,而是在重学软件工程,我开始切身接触优秀的软件开发具备了哪些不可或缺的流程。为了效仿这些优秀的思想和实践,在实际工作中,今年我做了一些尝试:

  1. 引入更丰富的 CI/CD 流程,尽可能发挥机器的能力,让机器不厌其烦地做那些的重复劳动,而这些不起眼的重复劳动,却能以最小代码为我们排查出最多难以发现的“失误” BUG。
  2. 开始学习写单测,开始学习如何将代码写得能单测、易单测,学习着如何将那些不能单测的💩代码改造成可单测的代码,也将单测运行加入了 CI/CD 的流程中。在单测多次帮我揪出那些我意识不到的不小心改错的逻辑的时候,我才切身感受到单测的作用,也真正理解了“写单测并不会影响开发效率,如果影响了,那也是提高了开发效率”。幸运的是,截至目前(11.27),我已经连续 2 次,在上千行代码的需求开发中,提测阶段和线上发布阶段,都是 0 Bug,运气不错。
  3. 引入监控系统,在指标上,存储层、应用层、业务层和网关层进行分层监控,在开发时,从业务无关组件(goapm),到业务相关通用组件,最后再到应用程序特定组件的分阶段分层次开发,开始学习着“先解决业务背后的领域问题,顺带解决业务问题”。
  4. 开始思考一些架构层面的东西,开始思考一些代码组织、接口契约、领域模块划分的问题,以期写出质量更好的代码。

为了支撑上面这些事情,今年我又顺带读了一些书,我是个很少读书的人,因为我总觉得:“读书好慢”。而且我读书也确实很慢,主要是,很困 😅。然而,当我回望来时路,一切却都在我的意料之外。

hedon 2024 的书单

这个时候我才知道:

  • 慢就是快
  • 少就是多

历劫

rust-road

这些书其实都不在我的计划之内,因为 2024 我只有一个目标:完成 Rust 训练营的学习。它们只不过是我完成既定计划之余的加餐罢了。

而幸好我只有一个目标,所以才能有更多时间和精力去应对跟随训练营学习中的一些困难:

  • 晚上 9 点下班,真累啊,休息下吧,真不想学了。
  • 工作了一周,真累啊,周末要不就休息吧,真不想学了。
  • 编译器报错好多啊,算了,要不直接 copy 现成的代码吧。
  • 这知识点在讲啥啊,算了,先不懂装懂吧,后面还那么多课,先赶进度再说。
  • 前端和客户端的知识,好像跟我没啥关系,算了,不听了,过过过。
  • 单测我就不写了,浪费时间。
  • 学完咯,感觉没啥好总结的,算了,下一个吧。
  • ....

运气不错,上述的 n 多种情况,至少在 50-70% 的时候,我能做到:

  • 学一下再说,累了再停。
  • 下午出去玩,早上先学了再说。
  • 算了,狠点,盲写,自己尝试解决一下,咦,也就那么回事。写完后再对比下,哦,其实这块没听懂。
  • 弄懂再说,多听几遍课,重新看几遍书,再搜一些相关博客,哦,这个知识点是这个意思,读书百遍其义自见原来是这味?
  • 算了,试试现在 LLM 是否如吹的那么牛,嗯,好像用 LLM 来实现前端和客户端的基础功能还真可以,也没那么无聊嘛。
  • 算了,先试着写下单测吧。哦,我的代码这么难测啊,哦,这行代码怎么就犯蠢了呢,哦,花不了多少时间嘛。
  • 要不还是总结下吧,哦,原来这个地方是这个意思,哦,原来还讲到了这个点。

所以这个时候我又知道了:

  • 慢就是快
  • 少就是多

小成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
➜  hedon-rust-road ll
total 0
drwxr-xr-x 21 wangjiahan staff 672B Nov 27 18:26 aicomm
drwxr-xr-x 23 wangjiahan staff 736B Sep 11 13:55 chat
drwxr-xr-x 17 wangjiahan staff 544B Sep 11 18:31 chatapp
drwxr-xr-x 26 wangjiahan staff 832B Nov 27 18:26 crm
drwxr-xr-x 22 wangjiahan staff 704B Nov 27 18:26 dino
drwxr-xr-x 16 wangjiahan staff 512B Nov 27 18:29 error-info
drwxr-xr-x 18 wangjiahan staff 576B Sep 4 19:00 hackernews
drwxr-xr-x 22 wangjiahan staff 704B Sep 12 15:54 hedon-bot
drwxr-xr-x 9 wangjiahan staff 288B Nov 27 18:29 httpie
drwxr-xr-x 13 wangjiahan staff 416B Aug 22 10:40 inverted-index-concurrency
drwxr-xr-x 7 wangjiahan staff 224B Nov 27 18:28 json-macro
drwxr-xr-x 26 wangjiahan staff 832B Sep 3 19:30 learn-ffi
drwxr-xr-x 8 wangjiahan staff 256B Nov 27 18:29 learn-proc-macro
drwxr-xr-x 7 wangjiahan staff 224B Nov 27 18:30 mandelbrot
drwxr-xr-x 10 wangjiahan staff 320B Aug 22 10:40 matrix-multi
drwxr-xr-x 7 wangjiahan staff 224B Nov 27 18:29 pest-parser-collection
drwxr-xr-x 19 wangjiahan staff 608B Nov 27 18:27 r-redis
drwxr-xr-x 21 wangjiahan staff 672B Aug 22 10:40 rcli
drwxr-xr-x 17 wangjiahan staff 544B Aug 22 10:40 simple-chat
drwxr-xr-x 17 wangjiahan staff 544B Aug 22 10:40 simple-shortener
drwxr-xr-x 21 wangjiahan staff 672B Aug 22 10:40 taotie
drwxr-xr-x@ 18 wangjiahan staff 576B Nov 27 15:38 thumbor
drwxr-xr-x 19 wangjiahan staff 608B Aug 29 10:56 winnow-parser-collection
➜ hedon-rust-road tokei -t rust
===============================================================================
Language Files Lines Code Comments Blanks
===============================================================================
Rust 336 25451 21615 644 3192
|- Markdown 53 546 0 476 70
(Total) 25997 21615 1120 3262
===============================================================================
Total 336 25451 21615 644 3192
===============================================================================

看老师画了那么多牛逼的图,要不“邯郸学步”模仿一下吧。故而又忍着“下一个吧”的念头,梳理了下这几个月到底做了些什么。

rcli
r-redis
macro-json
macro-error-info
rust-ecosystem
crm
taotie
dino
aicomm

归元

  • 知是行之始,行是知之成。
  • 遇事不决,可问春风。春风不语,既随本心。

2025 见!


Rust 训练营总结丨第三次入门 Rust
https://hedon.top/2024/11/26/rust-bootcamp/
Author
Hedon Wang
Posted on
2024-11-26
Licensed under