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