重新发明轮子:为什么亲手造轮子是通往技术前沿的捷径

适度"重新造轮子"是程序员抵达技术前沿的必要路径
开发者Andrew Quinn将3GB SQLite数据库压缩为7MB的FST文件,由此引发对"重复造轮子"的深刻反思。他认为对造轮子的愧疚是认知陷阱,在大多数领域亲手重造四五个轮子,带着明确问题的实践比被动学习高效数倍,是通往技术前沿的必经之路。在AI时代,底层理解力更显珍贵。
一个引发深思的技术故事
最近,开发者 Andrew Quinn 分享了一个令人印象深刻的技术实践——他将一个 3GB 的 SQLite 数据库替换为仅 7MB 的 FST(有限状态转换器)二进制文件。但比这个技术成果更引人注目的,是他在文章脚注中写下的一段关于「重新发明轮子」的深刻反思。
FST(Finite State Transducer,有限状态转换器)是一种基于有限自动机理论的数据结构,它能够将键值对映射关系以极其紧凑的方式存储。与传统的哈希表或B树索引不同,FST通过共享前缀和后缀来实现极高的压缩率,特别适合处理有大量共同前缀的字符串集合(如英语词典、URL集合等)。在Rust生态中,Andrew Gallant(BurntSushi)开发的fst库是这一数据结构的经典实现,它支持有序遍历、前缀搜索和正则表达式匹配等操作,同时保持接近内存映射的查询速度。Quinn的项目之所以能实现如此惊人的压缩比,正是因为他的数据具有高度的结构化特征,而FST恰好能利用这种结构性来消除冗余。
这段话触及了每一位程序员在职业生涯中都会面对的核心焦虑:我正在构建的东西,是不是别人在三四十年前就已经做得更好了?
程序员的原罪:对「重复造轮子」的愧疚感
Quinn 坦言,在他人生的前二十五年里,尽管他一直对编程充满热情,却始终无法克服一种愧疚感——他不确定自己正在构建的工具,是否早已被某个更优秀的实现所取代。
他举了一个生动的例子:你可以自己写一个能感知 TSV 格式的搜索替换工具,也可以去了解 awk,然后一举解决整个类别的问题。awk是1977年由Alfred Aho、Peter Weinberger和Brian Kernighan在贝尔实验室创建的文本处理语言,其名称取自三位创造者姓氏的首字母。它体现了Unix哲学的核心理念:编写只做一件事并做好的程序,通过管道组合来解决复杂问题。awk特别擅长处理结构化文本数据(如CSV、TSV),能用一行代码完成其他语言需要数十行才能实现的文本转换。在这种对比下,自己动手写工具似乎总是「低效」和「愚蠢」的选择。
这种心态在技术社区中极为普遍。我们被教导要「站在巨人的肩膀上」,要善用现有工具,不要重复造轮子。Stack Overflow 上无数回答的潜台词都是:「别自己写,用这个库。」
核心洞见:「不要造轮子」是一个认知陷阱
Quinn 的核心论点简洁而有力:这种想法是一个陷阱。
他认为,要抵达我们对「造轮子」认知的前沿,你需要亲手重新发明几个轮子。不是一千个,也不是零个——在大多数领域,大约四五个就够了;在数学或计算机科学这样认识论上最严谨、最成熟的领域,可能需要二三十个。
这个观点的精妙之处在于它给出了一个具体的量级判断。它既否定了盲目造轮子的做法,也否定了完全不造轮子的极端。这不是一个非黑即白的问题,而是一个需要精心校准的实践策略。
为什么亲手造轮子比读书学习更高效
实践知识 vs 书本知识
Quinn 提出了一个大胆的效率对比:每一个你亲手重新发明的轮子,以及在这个过程中你提出的每一个有针对性的问题,都会比同等时间的漫无目的的学习——甚至是五倍时间的学习——更快地将你推向真正的技术前沿。
这与认知科学中的研究发现高度一致。建构主义学习理论(Constructivism)源于皮亚杰和维果茨基的认知发展研究,其核心主张是:知识不是被动接收的,而是学习者通过与环境的主动交互来建构的。在计算机科学教育领域,这一理论得到了大量实证支持。MIT的Seymour Papert提出的建构论(Constructionism)更进一步指出,当学习者在构建外部可分享的制品时,学习效果最为显著。认知负荷理论(Cognitive Load Theory)也表明,主动解决问题会激活工作记忆中的图式建构过程,形成的长期记忆比被动阅读更加稳固和可迁移。当你亲手实现一个数据结构时,你对它的理解深度是读十遍教科书都无法比拟的。
从 SQLite 到 FST:400倍压缩背后的判断力
Quinn 自己的项目就是最好的例证。将 3GB 的 SQLite 数据库压缩到 7MB 的 FST 二进制文件,这个 400 倍以上的体积缩减不是通过「使用现成工具」实现的,而是通过深入理解数据结构的本质,选择了一种更贴合问题特征的方案。
SQLite是世界上部署最广泛的数据库引擎,它以单文件形式存储整个数据库,无需独立的服务器进程。由于其零配置、事务性、跨平台的特性,SQLite被广泛用于移动应用、桌面软件、嵌入式系统乃至Web应用的本地存储。然而,SQLite作为通用关系型数据库,其存储格式需要支持随机读写、事务回滚、索引维护等功能,这意味着它在存储效率上必然存在开销。当数据是只读的、查询模式是固定的时候,专用数据结构往往能以数量级的优势超越通用数据库——Quinn的案例正是这一原理的完美体现。
这种技术判断力,正是从「造轮子」的经验中积累而来的。只有当你真正理解了底层数据结构的工作原理,你才能在面对具体问题时做出最优选择。
对技术学习者的实践建议
带着问题造轮子,而非漫无目的
Quinn 强调的不是随意造轮子,而是 directed questions(有针对性的问题)。关键在于带着明确的问题去实践,而不是为了造轮子而造轮子。每次动手之前,先问自己:我想通过这次实践理解什么?
找到你领域中值得重造的「四五个轮子」
对于不同领域的从业者,值得思考的问题是:在你的专业领域中,哪四五个轮子是值得你亲手重新发明的?
- 后端开发者:一个简易数据库、一个 HTTP 服务器、一个编译器前端
- 前端开发者:一个虚拟 DOM 实现、一个简易响应式框架、一个打包工具
- 机器学习工程师:从零实现反向传播、一个简单的 Transformer、一个梯度下降优化器
对于前端开发者而言,虚拟DOM(Virtual DOM)是React在2013年引入的核心概念,它通过在内存中维护一棵轻量级的DOM树副本,利用diff算法计算最小更新集,从而避免昂贵的真实DOM操作。亲手实现一个简易虚拟DOM(通常只需200-500行代码),能让开发者深刻理解reconciliation算法、key的作用、批量更新策略等核心机制。类似地,实现一个简易响应式系统(如Vue的依赖追踪)只需理解Proxy/Object.defineProperty、发布订阅模式和拓扑排序,但这个过程会让你彻底理解为什么某些写法会导致无限循环或遗漏更新。这些底层认知是调试复杂框架问题时不可替代的能力基础。
对于机器学习工程师,Transformer架构自2017年Google的《Attention Is All You Need》论文发表以来,已成为现代AI的基石。从零实现一个Transformer(通常包括多头自注意力机制、位置编码、层归一化和前馈网络)大约需要300-500行Python代码,但这个过程会让你理解:注意力矩阵的计算复杂度为何是O(n²)、为什么需要位置编码、残差连接如何缓解梯度消失、以及KV-cache如何加速推理。Andrej Karpathy的nanoGPT项目(约600行代码训练一个GPT)就是这种教育理念的典范——它证明了最前沿的技术也可以被解构为可理解的组件。
克服愧疚,把过程当作目的
最重要的或许是心态上的转变:不要因为「这个东西别人已经做过了」而感到愧疚。你造轮子的目的不是为了产出一个更好的轮子,而是为了让自己成为一个更好的工程师。过程本身就是目的。
结语:AI 时代更需要底层理解力
在 AI 工具日益强大的今天,这个观点显得尤为珍贵。当 AI 可以帮你生成大量代码时,亲手从底层理解技术原理的能力反而变得更加稀缺和有价值。
正如 Quinn 所言,通往技术前沿的路,不是绕过轮子,而是穿过它们。那些愿意花时间亲手重造几个轮子的人,最终会比只会调用现成方案的人走得更远。
核心要点
- 开发者 Andrew Quinn 将 3GB SQLite 数据库压缩为 7MB 的 FST 二进制文件,展示了深入理解数据结构的价值
- 对「重复造轮子」的愧疚是一个陷阱——适度的重新发明是抵达技术前沿的必要路径
- 在大多数领域亲手重造四五个轮子即可,在计算机科学等成熟领域可能需要二三十个
- 带着明确问题的实践,比同等甚至五倍时间的被动学习更能推动你走向技术前沿
- 在 AI 工具日益普及的时代,从底层理解技术原理的能力反而更加稀缺和有价值
相关推荐
观点碰撞Windsurf CEO深度访谈:速度是唯一的护城河
Windsurf CEO Varun Mohan深度访谈,分享AI编程IDE的创业pivot经验、产品构建方法论、异步Agent挑战,以及与Cursor竞争的差异化策略。速度才是创业公司唯一的护城河。
观点碰撞被低估即自由:AI时代的逆向竞争哲学
探讨AI行业中"被低估即自由"的逆向竞争策略。从OpenAI、DeepSeek到Cursor,解析为何低调积蓄力量比站在风口浪尖更具战略优势,以及这一哲学对AI创业者和从业者的深刻启示。
观点碰撞新教工作伦理如何被劫持:从保护工人到压迫工人的演变
哲学家Elizabeth Anderson揭示新教工作伦理如何从保护工人的理想被扭曲为压迫工具。从清教徒的公平商业伦理到新自由主义的复活,深度解析工作伦理的历史演变及其对AI时代劳动关系的启示。