2023 年 06 月 14 日
这是我第三次学习 Rust 语言。与前两次一样,这次依然是以逐步实现一个实用小程序的方式在实践中学习 Rust。至于前两次实现的小程序是什么并不重要,因为实现它们所涉及的 Rust 知识在这一次必然会被全部涉及。
这一次实现的小程序,名曰 rzeo,是一个文学化编程前端工具,它能够将程序说明性文字以及程序源代码片段混合而成的文档转化为 YAML(一种以简洁且易于人类阅读而著称的结构化文本标记语言)文件,再由后端程序从 YAML 文件提取完整的程序源代码或将 YAML 文件转化为某种文档排版工具的源文件。后端程序可使用任何一门编程语言编写,若该语言有可用的 YAML 解析库则更佳。
rzeo 的设计与实现采用原型迭代的方式进行,即每一次的设计与实现所期待的目标是下一次设计与实现的原型。对于未知因素较多的项目(学习 Rust 语言本身便是一种未知因素),该开发模式通常是最为稳健且能保证开发效率的最佳模式,因为每一次原型的开发都能直观地暴露出既定方案的不足之处,从而为下一次的原型趋向于目标提供了准确的方向。
在这个项目中,我还有一个小的野心,对于采用 Rust 语言编写的每个 rzeo 原型,我会花费一些时间写一个 C 语言版本作为对照,此举不仅有利于熟悉 C 语言者能够更为深入地理解 Rust 语言,也能在开发效率和程序运行效率方面对这两种语言有一些直观的考量。倘若你对 C 语言并不熟悉,可以无视文档中出现的 C 代码,它们充其量只是对部分 Rust 代码所作的额外的解释。
rzeo 的开发以及本文档的撰写皆是在 Linux 环境中进行,不过大概只有不到 1% 的内容与 Linux 环境相关。我相信任何一个人,只要对 Linux 没有太大偏见,应该不会因为我用了 Linux 环境而觉得此文档不值一睹,倘若是因其他原因而作此判定,我深信这一定是合理的。