The programming language C occupies an unusual position midway between
conventional high-level and assembly languages, allowing the programmer
to combine the best features of both. This book is an introduction to
the language itself, and to the special style of thinking that goes with
it. Anyone wishing to learn C is likely to have some experience in a
high-level language such as BASIC or Pascal, and it seems sensible to
make use of that experience. We therefore assume some facility with
conventional notation for computer arith- metic, and simple notions
(such as looping and branching) common to most high-level languages.
However, that cannot be the whole story. One cannot learn to speak
colloquial French by thinking in English and performing a routine
translation. No more can one learn to program in colloquial C by
thinking in BASIC and performing a routine translation. However, when
learning French it is normal to assume familiarity with English,
building on that in the early stages, thereby creating the confidence
necessary to provide that mot juste to which nothing corresponding
exists in English. Our approach to C is similar. In particular we do not
introduce at the very beginning some of the features of C which
eventually lead to more efficient and elegant code-for example, the
ability to do several things, apparently at once. Initially, such
constructs can be confusing. Once the reader has acquired some facility
with the language it then becomes possible to bring these features into
play in a natural manner.