1.5 UNIX Philosophy

Reference: Gancarz, Mike, "The Unix Philosophy", Digital Press 1995

1. The power of UNIX comes from the relations (interfaces) between 
programs rather than the programs themselves.  You are encouraged
to take the basic building blocks (commands) and put them together in
interesting (to you) ways, yeilding a new, and more useful program.

2. If you understand and use this idea, you will use UNIX effectively.  
Besides fitting into the UNIX environment, your work will be better 
understood by you and by others.

3. Other UNIX principles

	* Small is Beautiful. *

In UNIX, it's commands (programs) are small and do one thing very well.  
Such programs can be connected very easily.

	* 10% of the work solves 90% of the problems. *

In UNIX, you have commands and can build on these to form very
sophisticated programs. This is the 10% you contribute. The 90% is
the building blocks themselves.  UNIX is not there to do everything
for you (like VMS), you have to participate.

	* When faced with a choice, do whatever is simpler. *

Simple tools are easier to understand, use and are more reliable.  Code
with special cases gets more and more burdensome to the user over time 
as he/she becomes more knowledgable.  The UNIX file system has a single, 
and simple file access method which is very efficient and works
easily for almost all applications.

	* Solve the problem, not the machine. *

Build programs while ignoring the underlying machine hardware or operating 
system as much as possible.  Focusing on the platform results in non-portable 
code. Such programs are not useful in different contexts and can't adapt 
themselves to solve other problems.

	* Solve at the right level, and you only have to do it once. *

Examples abound in UNIX. file name pattern matching (wild cards) is only 
implemented once in the shell rather than in every program that uses files.  
Input, output, and error message streams are handled by the shell, 
not by each program.

4. Discuss what your experience is with large, swiss-army-knife programs
that do anything you want (but their way). 

DOS is training wheels for UNIX.

Questions? Robert Katz: rkatz@ned.highline.edu
Last Update June 19, 2003