Unix has a long-established reputation as a good environment to
develop under. It's well equipped with tools written by programmers
for programmers. These automate away many of the grubby little
tasks that would otherwise distract you from concentrating on the
most important (and most enjoyable!) aspect of development— your design.
While all the tools you'll need are there and individually well
documented, they're not knit together by an integrated development
environment (IDE). Finding and assembling them into a kit that
suits your needs has traditionally taken considerableeffort.
If you're used to a good IDE — the kind of GUI-driven
combination of editor, configuration-manager, compiler, and
debugger now common on Macintosh and Windows systems — the Unix
approach may seem casual, murky, and primitive. But there's
actually method in it.
Many of these tools automate things that you could do yourself
by hand, albeit more slowly and with a higher error rate. The
one-time cost of climbing the learning curve should be more than
paid off by the ability to write programs more efficiently, and
spend less attention on low-level details and more on design.
Unix programmers traditionally learn how to use these tools by
osmosis from other programmers, and by exploration over a period of
years. If you're a novice, pay careful attention; we're going to try
to jump you over a big section of the Unix learning curve by showing
you what is possible right at the outset. If you are an experienced
Unix programmer in a hurry, you can skip this chapter — but
maybe you shouldn't. There might just be some bit of useful lore here
that even you don't know.