Unix Philosophy
Jump to navigation
Jump to search
A Unix Philosophy is a software design philosophy that emphasizes simplicity, modularity, and composability in Unix systems and Unix-like systems.
- AKA: Unix Design Philosophy, Unix Principles, Unix Way.
- Context:
- It can typically promote Single Responsibility where programs do one thing well.
- It can typically encourage Text Stream interfaces for universal compatibility and data exchange.
- It can typically support Program Composition through pipes and filters for complex operations.
- It can typically favor Simple Solutions over complex architectures for maintainability.
- It can often influence Command-Line Tool design with utilities and standard interfaces.
- It can often guide System Architecture toward modular design and loose coupling.
- It can often inspire Programming Languages and frameworks beyond Unix environments.
- It can range from being a Strict Unix Philosophy to being a Relaxed Unix Philosophy, depending on its interpretation level.
- It can range from being a Original Unix Philosophy to being a Modern Unix Philosophy, depending on its temporal context.
- It can range from being a System-Level Philosophy to being an Application-Level Philosophy, depending on its application scope.
- It can range from being a Purist Unix Philosophy to being a Pragmatic Unix Philosophy, depending on its implementation approach.
- ...
- Example(s):
- Core Unix Principles:
- "Make each program do one thing well" - modularity principle.
- "Write programs to work together" - composition principle.
- "Design and build software to be tried early" - prototyping principle.
- Unix Philosophy Expressions:
- Doug McIlroy formulation: "Write programs that do one thing and do it well."
- Ken Thompson principle: "When in doubt, use brute force."
- Rob Pike rules including "Rule of Simplicity."
- Unix Philosophy Applications:
- Unix Pipelines combining simple tools.
- Shell Scripts orchestrating utilities.
- Microservice Architecture inspired by Unix modularity.
- ...
- Core Unix Principles:
- Counter-Example(s):
- Monolithic Design Philosophy, which favors integrated systems over modularity.
- Windows Philosophy, which emphasizes graphical interfaces over text streams.
- Zen of Python, which has different emphasis though some overlap.
- See: Software Design Philosophy, Unix Operating System, System Design Principle, Zen of Python, Software Architecture, Modularity, Command-Line Interface.