1978 年前后,Unix 圈子总结出几条"小原则"。其中最有名的一句被 Doug McIlroy 写成:
Write programs that do one thing and do it well.
写程序,只做一件事,并把它做好。半个世纪过去了,这句话还值不值钱?
它赢的地方
你手机里那个"万能 App"——能聊天、能买菜、能挂号、能打车——表面上方便,实际上每一块都在将就。它什么都做,但没有一件事做到极致。
反观终端里的 grep、sed、awk,每个都只管一件小事,却因为"小"而能被反复组合、被信任、被用了四十年不换代。这才是对"做好"的尊重。
它输的地方
一体化的代价是割裂。Unix 哲学鼓励你堆小工具,但用户不想自己当管道工。普通人要的是"打开就能用",而不是"先把这五个程序串起来"。
这也是为什么 GUI 赢了桌面、Web 赢了分发——它们把组合的成本藏了起来,或者说,替你付了。
我的折中
我认为 Unix 哲学没过时,只是换了战场:
- 对内,模块保持小、保持纯——你写的库、你的函数、你的服务;
- 对外,把组合封装好,别让用户看见管道。
# 理想状态:用户只看到一行,背后是十个专一的小程序
weather --city beijing --notify
结尾
"做一件事并做好它"从来不是技术建议,而是一种价值观:承认自己的边界,把专业交给专业。在一切都想做平台、做生态的今天,这份克制反而很贵。
顺便——这种克制,也是我还在用命令行的原因。