This is a book about Unix programming, but in it we're going to
toss around the words ‘culture’, ‘art’, and
‘philosophy’ a lot. If you are not a programmer, or you
are a programmer who has had little contact with the Unix world, this
may seem strange. But Unix has a culture; it has a distinctive art of
programming; and it carries with it a powerful design
philosophy. Understanding these traditions will help you build better
software, even if you're developing for a non-Unix platform.
Software engineering is generally an exception to this rule;
technology has changed so rapidly, software environments have come and
gone so quickly, that technical cultures have been weak and
ephemeral. There are, however, exceptions to this exception. A very
few software technologies have proved durable enough to evolve strong
technical cultures, distinctive arts, and an associated design
philosophy transmitted across generations of engineers.
The Unix culture is one of these. The Internet culture is
another — or, in the twenty-first century, arguably the same
one. The two have grown increasingly difficult to separate since the
early 1980s, and in this book we won't try particularly hard.