The Nature of the “Unix Philosophy”

Xah Lee xah at xahlee.org
Wed Jun 7 21:35:52 EDT 2006


The Nature of the “Unix Philosophy”

Xah Lee, 2006-05

In the computing industry, especially among unix community, we often
hear that there's a “Unix Philosophy”. In this essay, i dissect the
nature and characterization of such “unix philosophy”, as have been
described by Brian Kernighan, Rob Pike, Dennis Ritchie, Ken Thompson,
and Richard P Gabriel et al, and in recent years by Eric Raymond.

There is no one definite set of priciples that is the so-called “unix
philosophy”, but rather, it consistest of various slogans developed
over the decades by unix programers that purport to describe the way
unix is supposed to have been designed. The characteristics include:
“keep it simple”, “make it fast”, “keep it small”, “make
it work on 99% of cases, but generality and correctness are less
important”, “diversity rules”, “User interface is not
important, raw power is good”, “everything should be a file”,
“architecture is less important than immediate workability”. Often,
these are expressed by chantible slogans that exhibits juvenile humor,
such as “small is beautiful”, “KISS (Keep It Simple, Stupid)”.

Suppose, we take a team of student programers to produce a large
software system. When the software is done, give it to software critics
to analyze and come up with some principles that characterize its
design decisions, without disclosing the nature of the programers. The
characterization of such software, will more or less fit the
descriptions of the “Unix Philosophy” as described in different
ways by various unix celebrities.

For example, it would focus on implementation simplicity as opposed to
interface simplicity. It will not be consistent in user interface, but
exhibits rawness. It would be correct only for most cases, as opposed
to mathematically correct or generic. It would employee simplistic data
structures and formats such as text-files, as opposed to a structured
system or binary format that requires a spec. It would be speedy, but
less on scalability. It would consists of many small programs, as
opposed to one large system with inter-dependent components. It would
be easy to patch and port, but difficult to upgrade its structure or
adapt entirely new assumptions.

The essence of this theory is that when a software is produced for real
world use, it is necessary that it works in some acceptable way,
otherwise the software will be continuously debugged and refined. A
software system written by a bunch of student or otherwise
under-educated programers, but refined long enough for acceptably
practical, real world use, will necessarily develop characteristics
that is known as the Unix Philosophy.
----
This article is archived at:
http://xahlee.org/UnixResource_dir/writ/unix_phil.html

   Xah
   xah at xahlee.orghttp://xahlee.org/




More information about the Python-list mailing list