Skip to content

项目概览

定位

Build Your Own Tools (BYOT) 是一个系统编程学习仓库,核心理念是:

"One idea, two implementations" — 同一个问题,两种语言实现,对比学习。

不是什么

  • ❌ 语法教程 — 不教 Rust/Go 基础语法
  • ❌ 玩具项目 — 不是简化版 demo
  • ❌ 生产替代 — 不替代真正的 dos2unix/gzip/htop

是什么

  • 系统编程案例研究 — 真实 CLI 工具的完整实现
  • 语言对比实验室 — 同一问题的双语言实现
  • 工程化实践 — CI/CD、跨平台构建

技术选型

为什么是 Rust 和 Go?

特性RustGo
内存安全编译期所有权检查GC 运行时
错误处理Result<T, E> 枚举error 接口
并发模型async/await + Tokiogoroutine + channel
泛型完整泛型系统类型参数(1.18+)
学习曲线陡峭平缓
编译速度较慢极快

为什么选择这三个工具?

工具学习价值复杂度
dos2unix流式 I/O、缓冲区边界、换行符处理
gzip压缩管线、CLI 设计、错误处理模式⭐⭐
htopTUI 架构、进程指标、跨平台系统 API⭐⭐⭐

项目结构

build-your-own-tools/
├── dos2unix/           # 换行符转换工具
│   ├── src/           # Rust 源码
│   └── Cargo.toml

├── gzip/              # 压缩工具
│   ├── go/            # Go 实现
│   │   ├── cmd/       # CLI 入口
│   │   └── pkg/       # 库代码
│   └── rust/          # Rust 实现
│       ├── src/bin/   # CLI 入口
│       └── src/lib.rs # 库代码

├── htop/              # 进程监控工具
│   ├── unix/          # Unix 平台
│   │   ├── go/        # Go 实现
│   │   └── rust/      # Rust 实现
│   └── win/           # Windows 平台
│       ├── go/
│       └── rust/

├── docs/              # 技术文档
├── .vitepress/        # 文档站点
└── .github/           # CI/CD 工作流

学习路径建议

初学者路径

  1. dos2unix (Rust) — 理解流处理基础
  2. gzip (Rust) — 学习管线设计
  3. gzip (Go) — 对比两种语言的实现方式
  4. htop (Rust) — 挑战 TUI + 系统编程

进阶者路径

  1. 直接阅读 对比研究 章节
  2. 分析 设计决策 理解技术选型
  3. 贡献新的工具实现

架构师路径

  1. 阅读 系统架构 理解整体设计
  2. 分析 工程实践 了解 CI/CD 设计
  3. 研究 跨平台策略 学习平台适配
  4. 评估 技术债务 和演进方向

下一步