🌑

Hi Folks.

造轮子的乐趣

我忽然也想造轮子了。

大一的时候,老哥让我关注公众号码农翻身,作者义愤填膺,劝告初学者不要重写工具浪费时间,一来并不会把工具变好,还有很大可能性使得接口写坏,那时我连造轮子都不知道是什么意思。

小马哥教我数据结构的时候,他让我们自己去实现数据结构“队列”和“堆”。这应该是我第一次去造轮子,太爽了,无论是钻研publicprivate的区别,还是自己动手实现heap,这都让我受益匪浅,而这一次造轮子也让我不再害怕阅读源码,毕竟源码归根到底是其他人造的轮子嘛!

最近,我看到 GitHub 上那些几百行代码就能干大事的神仙项目——30 多行的 svpng、不到 500 行的 Tiny HTTPd、200 行的极简 shell lsh,我才突然悟到了造轮子的另一层境界:少即是多(Less is more)。

工业级的重卡与探索者的滑板车

回想当年“码农翻身”里那番痛心疾首的劝告,其实他并没有错,只是语境不同。在实际的工程交付中,盲目去复刻一个漏洞百出、接口糟糕的工具确实是在浪费生命。工业界需要的是大而全、能扛住各种极端异常、支持向后兼容的“重型卡车”。

但在个人的技术成长轨迹里,情况恰恰相反。当我们想要跨越“会调包”到“懂底层”的鸿沟时,亲手造一个粗糙但转得起来的轮子,是无价的。

剥洋葱的快乐

阅读和模仿这些精简的代码,本身就是一种极具美感的体验,很像一层层剥开操作系统的洋葱:

看 Tiny HTTP的时候,我发现 HTTP 协议褪去现代 Web 框架的层层封装后,本质上不过就是建立 Socket 连接、解析文本流、返回状态码。那些高深莫测的并发与响应,是基础 I/O 操作的组合。

看 inih 和 log.c,如同看一位可爱的姑娘,优雅的 C 语言 API,发现与体会指针传递、可变参数和回调函数在代码解耦中的精妙运用。

跟着写一个 lsh,那些原本在操作系统课本里枯燥无比的进程控制(fork / exec)和管道重定向,瞬间就成了指尖可以随意调度的实体。

对于越来越痴迷于系统工程和底层逻辑的我来说,这种感觉太迷人了。无论是轻量级的服务器监控,还是想深入底层系统的开发,哪怕是去探索 AI Infra 的世界,都必须把底层的轮子拆开看过、自己装过,才能在搭建上层建筑时游刃有余。

我真该把大学时期没写完的Tiny-LSM写了。

— 2026年7月16日


Search