Let's consider now why C is a great language.

It is commonly believed that C is a hack which was successful because
Unix was written in it.  I disagree.  Over a long period of time
computer architectures evolved, not because of some clever people
figuring how to evolve architectures -- as a matter of fact, clever
people were pushing tagged architectures during that period of time --
but because of the demands of different programmers to solve real
problems.  Computers that were able to deal just with numbers evolved
into computers with byte-addressable memory, flat address spaces, and
pointers.  This was a natural evolution reflecting the growing set of
problems that people were solving.

C, reflecting the genius of Dennis Ritchie, provided a minimal model of
the computer that had evolved over 30 years.  C was not a quick hack.
As computers evolved to handle all kinds of problems, C, being the
minimal model of such a computer, became a very powerful language to
solve all kinds of problems in different domains very effectively.  This
is the secret of C's portability: it is the best representation of an
abstract computer that we have.

Of course, the abstraction is done over the set of real computers, not
some imaginary computational devices.  Moreover, people could understand
the machine model behind C.  It is much easier for an average engineer
to understand the machine model behind C than the machine model behind
Ada or even Scheme.  C succeeded because it was doing the right thing,
not because of AT&T promoting it or Unix being written with it.

		-- Alex Stepanov