简单不等于小巧:Unix 哲学的误区
Simple Is Not Small

最近我在分享代码覆盖率调试经历时,被问到如何避免复杂的调试故事,我当时的回答是“追求简单”。但事后我意识到,我们常把“小巧”误当作“简单”。Unix 管道虽然由许多小巧的工具组成,但为了完成特定任务,它们往往紧密耦合,导致修改逻辑异常困难。相比之下,像 Google Drive for Desktop 这样庞大的程序,对用户而言却异常简单。真正的简单在于解耦,而非体积大小。在 Rust 和 Clojure 的对比中,我们可以看到数据结构与类型检查的耦合程度如何影响程序的灵活性。保持程序小巧在资源有限时很有用,但追求简单应始终是我们的目标。
Unix 工具是“小巧”的,但它们并不“简单”。
HN 评论区
87- getnormality
与那篇著名的文章《Worse is Better 的崛起》[1] 产生了强烈的共鸣,该文对比了(更好的)“MIT/Stanford 设计风格”与(更差的)“新泽西流派”。
MIT/Stanford:
> 简洁性——设计必须在实现和接口上都保持简洁。接口的简洁性比实现的简洁性更重要。
新泽西流派:
> 简洁性——设计必须在实现和接口上都保持简洁。实现的简洁性比接口的简洁性更重要。简洁性是设计中最关键的考量因素。
本文(TFA)将“简洁性”对应为