设计哲学

UNIX 设计哲学

UNIX 背后的哲学:

  • 编写只做一件事并且做好这件事的程序

  • 编写能够协同工作的程序(没有额外的输出,不强制要求交互式输入)

  • 编写处理文本流的程序,因为文本流是通用接口

UNIX 也采用了"差即好"(Worse is better)的哲学。

这种思维方式很强大。在更高层次上,你在函数式编程中经常可以看到这种思想:构建专注于单一功能的原子函数,没有额外的输出,然后将它们组合在一起来完成复杂的任务;组合中的所有函数都是纯函数;不需要跟踪全局变量。

也许正是这种思想的直接结果,UNIX的设计专注于两个主要组件:

  • 进程(Processes)

  • 文件(Files)

UNIX中的一切要么是进程,要么是文件。没有其他东西。

核心原则

  1. 简洁性:每个程序只做一件事

  2. 可组合性:程序之间通过管道和重定向协同工作

  3. 文本流:所有程序都处理文本流,作为通用接口

  4. 可移植性:程序可以在不同的UNIX系统上运行

在现代软件中的应用

这种设计哲学在现代软件开发中仍然具有重要影响:

  • 微服务架构:每个服务专注于单一职责

  • 函数式编程:纯函数和函数组合

  • DevOps工具链:小型专用工具的组合

  • Unix管道:通过|连接多个命令

与其他设计哲学的对比

  • "MIT 哲学":追求完美和复杂性

  • "New Jersey 哲学":简单性优先,接受妥协

  • UNIX选择了后者,这解释了为什么它能够如此成功和广泛传播

参考资料

最后更新于