Links
The Descent to C
chiark.greenend.org.uk
You’re probably thinking, by now, that C sounds like a horrible language to work in. It forces you to do by hand a lot of things you’re used to having done for you automatically; it constantly threatens you with unrecoverably weird behaviour, hard-to-find bugs, and dangerous security holes if you put one foot across any of a large number of completely invisible lines that neither the compiler nor the runtime will help you to avoid; and, for goodness’ sake, it can’t even handle strings properly. How could anyone have designed a language that bad?
To a large extent, the answer is: C is that way because reality is that way. C is a low-level language, which means that the way things are done in C is very similar to the way they’re done by the computer itself.