<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>编程哲学 on 我的博客</title><link>https://osong.cc/tags/%E7%BC%96%E7%A8%8B%E5%93%B2%E5%AD%A6/</link><description>Recent content in 编程哲学 on 我的博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 22 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://osong.cc/tags/%E7%BC%96%E7%A8%8B%E5%93%B2%E5%AD%A6/index.xml" rel="self" type="application/rss+xml"/><item><title>Worse is Better 哲学案例详解</title><link>https://osong.cc/posts/worse-is-better/</link><pubDate>Wed, 22 Apr 2026 00:00:00 +0000</pubDate><guid>https://osong.cc/posts/worse-is-better/</guid><description>&lt;p>这个哲学最早由 &lt;strong>Richard P. Gabriel&lt;/strong>（Lisp 语言共同设计者）在 1989–1991 年的著名文章《The Rise of &amp;ldquo;Worse is Better&amp;rdquo;》中提出。他原本是带着&amp;quot;吐槽&amp;quot;心态写的——为什么理论上更完美的 Lisp 系统输给了&amp;quot;更糟&amp;quot;的 Unix/C？结果却意外成为软件设计界的经典框架。&lt;/p>
&lt;h2 id="核心对比the-right-thing-vs-worse-is-better">核心对比：The Right Thing vs. Worse is Better&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>维度&lt;/th>
&lt;th>The Right Thing（MIT/斯坦福风格）&lt;/th>
&lt;th>Worse is Better（New Jersey 风格）&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>简单性&lt;/strong>&lt;/td>
&lt;td>接口简单 &amp;gt; 实现简单&lt;/td>
&lt;td>实现简单和接口简单都重要，但&lt;strong>实现简单优先&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>正确性&lt;/strong>&lt;/td>
&lt;td>必须在&lt;strong>所有可观察情况&lt;/strong>下完全正确&lt;/td>
&lt;td>大多数情况下正确即可，少数边缘情况可牺牲&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>一致性&lt;/strong>&lt;/td>
&lt;td>绝不允许不一致&lt;/td>
&lt;td>避免不一致，但若会损害简单性则可接受&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>完备性&lt;/strong>&lt;/td>
&lt;td>必须覆盖所有合理预期场景&lt;/td>
&lt;td>可以牺牲完备性，优先快速实现核心功能&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>核心理念&lt;/strong>：在资源有限、用户采用意愿关键的世界里，&amp;quot;&lt;strong>稍微差一点但足够好、容易实现、容易传播&lt;/strong>&amp;ldquo;的方案，往往比&amp;quot;理论完美但复杂难用&amp;quot;的方案更具生存优势。它像病毒一样快速扩散，因为实现门槛低、迭代快。&lt;/p>
&lt;h2 id="经典案例">经典案例&lt;/h2>
&lt;h3 id="1-unix--c-语言-vs-lisp--multics--lisp-machine">1. Unix + C 语言 vs. Lisp / Multics / Lisp Machine&lt;/h3>
&lt;ul>
&lt;li>Lisp（The Right Thing）：语法优雅、完全一致、垃圾回收完美、支持符号计算，几乎所有特性都&amp;quot;正确&amp;rdquo;。但实现复杂、内存占用高、编译慢、移植难。&lt;/li>
&lt;li>Unix + C（Worse is Better）：语法简陋、指针野蛮、内存管理手动、很多边缘 case 不完美。但&lt;strong>实现极其简单&lt;/strong>（几千行 C 就能跑起来），能在各种硬件上快速移植，用户能立刻上手写程序。&lt;/li>
&lt;li>&lt;strong>结果&lt;/strong>：Unix/C 像病毒一样席卷全世界，Lisp 虽&amp;quot;更好&amp;quot;却小众。Gabriel 感慨：&amp;ldquo;C 是为写 Unix 而设计的，Unix 是用 C 写的——这正是 Worse is Better 的胜利。&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;h3 id="2-markdown">2. Markdown&lt;/h3>
&lt;ul>
&lt;li>The Right Thing 做法：设计严格的上下文无关文法（CFG），完美无歧义，像 CommonMark 试图做的那样。&lt;/li>
&lt;li>Worse is Better 做法：Aaron Swartz 故意保留&amp;quot;人类写着最舒服&amp;quot;的模糊规则（列表缩进、链接定义位置等），哪怕不同渲染器偶尔不一致。&lt;/li>
&lt;li>&lt;strong>结果&lt;/strong>：Markdown 瞬间征服全世界（GitHub、Notion、微信公众号……），而严格规范的替代品（如 reStructuredText）始终小众。实用性完胜理论完美。&lt;/li>
&lt;/ul>
&lt;h3 id="3-x86-架构-vs-更优雅的-risc-架构">3. x86 架构 vs. 更优雅的 RISC 架构&lt;/h3>
&lt;ul>
&lt;li>x86：指令集&amp;quot;丑陋&amp;quot;、兼容历史包袱重、很多设计&amp;quot;错得离谱&amp;quot;。&lt;/li>
&lt;li>RISC（如 MIPS、PowerPC）：干净、一致、理论高效。&lt;/li>
&lt;li>&lt;strong>结果&lt;/strong>：x86 凭借 Intel 的生态和&amp;quot;够用就行&amp;quot;的简单实现，统治 PC 市场几十年。RISC 虽在服务器/嵌入式领域优秀，但桌面端输得彻底。&lt;/li>
&lt;/ul>
&lt;h3 id="4-javascript">4. JavaScript&lt;/h3>
&lt;ul>
&lt;li>设计时仓促（10 天搞定），类型系统松散、this 绑定诡异、很多&amp;quot;坏特性&amp;quot;。&lt;/li>
&lt;li>但&lt;strong>实现简单 + 浏览器原生支持&lt;/strong>，让它成为网页脚本的事实标准。TypeScript 后来补救，但 JS 本身早已无处不在。&lt;/li>
&lt;li>对比：更优雅的语言（如 Dart、Elm）至今无法撼动其地位。&lt;/li>
&lt;/ul>
&lt;h3 id="5-其他高频案例">5. 其他高频案例&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Windows Registry vs. 纯文本配置文件&lt;/strong>：Registry 理论上结构化更好，但复杂易坏；.ini / .config 文件&amp;quot;更糟&amp;quot;却更易用、更易传播。&lt;/li>
&lt;li>&lt;strong>REST / HTTP vs. 严格的 SOAP / CORBA&lt;/strong>：REST 简单到&amp;quot;几乎没规范&amp;quot;，却靠易实现征服 Web 服务。&lt;/li>
&lt;li>&lt;strong>Linux + Git vs. 商业 Unix / 更完美的 VCS&lt;/strong>：Linus Torvalds 多次提到&amp;quot;够用就好&amp;quot;的哲学，Git 的&amp;quot;糟糕&amp;quot;设计（分布式、命令行优先）反而让开源协作爆炸式增长。&lt;/li>
&lt;li>&lt;strong>Facebook 早期哲学&lt;/strong>（&amp;ldquo;Move fast and break things&amp;rdquo;）：Zuckerberg 公开引用 Worse is Better——宁可快速迭代、容忍 bug，也要先把产品推到用户手里。&lt;/li>
&lt;/ul>
&lt;h2 id="gabriel-后来的反思">Gabriel 后来的反思&lt;/h2>
&lt;p>2010 年代 Gabriel 自己写过《Worse is Better is Worse》，承认这种哲学有时会&amp;quot;腐蚀思维&amp;quot;，导致长期技术债。但他仍认为：在&lt;strong>早期采用和传播阶段&lt;/strong>，Worse is Better 具有不可替代的&amp;quot;生存优势&amp;quot;。&lt;/p></description></item></channel></rss>