<2021-08-24 二>,雨夜

缘起

几年前我曾经学习过Rust。其时,我发现Rust编译速度很慢,语法有些烧脑。于是浅尝辄止一下Rust,很快就转向了Go语言,并深深迷恋。不知为何,当时并没有注意到Cargo包管理的存在。

Go语言的包管理没有一步到位。Go最初包管理是分布式的,有些像Java Classpath的设计,叫GOPATH,是线性的。而Java也渐渐引入OSGI的设计,进一步模块化。GO包管理也出现许多第三方,最终统一为Go Mod。不能说Go Mod多成功,只能算不失败罢了:中间走了弯路,最终也没有达到理想的状况,但的确是工作的。

Go另一块薄弱项是和C语言的交互,上下文切换性能差太多了。这也是没有办法的事,算引入GC的代价。但和C关系不好就阻碍了Go向下发展。有用 Go写操作系统的,但从没人提用Go开发Linux内核。

最近我发现Cargo设计干净,有美感,也实干,工程气息浓郁。 BottleRocket项目把Cargo用到了极致,但也远没有探到Cargo的上限。

在学

这次Rust再学,没有把语言放在前面学,而是先把周边搞清楚:

  1. Cargo日常使用,
  2. Workspace, Package, Crate, Module依次搞清楚,
  3. Unit Testing如何写,
  4. Rust Doc以及mdBook

最后才慢慢看Rust的语法:

  1. Common Programming Concepts,
  2. Ownership, Smart Pointers,
  3. Fearless Concurrency

在看mdBook时候,顺便把本博客更新了下。

过往

读过去自己写的东西,是一个逐渐了解自己的过程。好似在读一封封来自过去的信,有恍若隔世的感觉。过去自己的想法甚至能解当今的困惑。细细思索,倍感神奇。

由此打算重拾写作,为将来的自己,提供一点寻找初心的线索。