|
|
|
|
The UNIX Philosophy
Main Principles
- Small
is beautiful. Small things could be combined with other
small things to create unique and flexible systems. Downside:
people could have troubles interfacing with small things.
- Make
each program do one thing well. Focusing on a single
functionality can eliminate much of unnnecessary code and
promote flexibility.
- Build
a prototype as soon as possible. It allows generation
of efficient design.
- Portability
is more important than efficiency. Portable programs
have larger customer base and longer lifecycle.
- Store
data in flat ASCII files. It keeps the data portable,
data which is not portable is dead.
- Use
software leverage to your advantage. Good programmers
write good code, great programmers borrow good code.
- Shell
scripts have an advantage over compiled programs. They
are portable and leverage compiled programs.
- Avoid
captive user interfaces. These interfaces need constant
user input, thus locking the user or machine from doing
anything else.
- Make
every program a filter that operates on data.
Side
Principles:
- Allow
the user to customize the interface.
- Keep
the system kernel small and lightweight.
- Use
lower case and keep it short.
- Keep
data in electronic format - save trees.
- Silence
is golden - do not produce unnecessary output.
- Think
parallel.
- Sum
of parts is greater than the whole.
- Look
and implement 90% of the solution.
- Worse
is better, least common denominator is most likely to survive.
- Think
hierarchically.
Source:
M. Gancarz (1995) The UNIX Philosophy. Digital Press, Boston,
MA.
|