最近翻到一篇讲 Unix 的 spell 怎么在 64K 内存里跑完的文章,挺感慨的。大家老盯着"64K 怎么塞进去"看,其实真正妙的不是它省内存,是它压根没想把字典塞进去。spell 自己只做个小引擎,字典甩到程序外面,要用的时候通过管道接 ed、读外部词表,该干啥干啥。说真的,当年这套路一点也不稀奇:一个工具只管一件事,数据、引擎、界面各过各的,缺啥接啥,谁也不绑架谁。
反观现在,随便装个 npm 上的拼写检查,依赖动辄几十兆,词库和 UI 全焊死在一个包里,你想换个字典?可以可以对不起,没门。那种"可替换、可组合"的克制,不知道啥时候就丢干净了。
离谱
做开源项目的话,这事儿挺值得琢磨。与其拼命堆功能、把东西揉成一团,不如老老实实把自己设计成一个能接进管线的过滤器:引擎和数据解耦,词典随时能换。这种克制,比省下那点内存值钱多了,也经得起时间折腾。