As flame-bait, Ten reasons why every programmer should learn C is pretty good. It takes a perfectly reasonable proposition, that learning C can be helpful, expresses it as an absolute, then backs it up with ten points, each of which is either misleading, irrelevant, or true only when the universe of programming languages consists entirely of C, C++, C# and Java.
For the record, I think that learning C can be helpful for many programmers. Not only is it an extra language under your belt – C is #2 on the TIOBE index – it is a useful way to learn about using RAM, and it gives an appreciation for the forces shaping C’s successors – C++, Java and C#.
Comments
And learning about flailing pointers and malloc will put hair on your chest.
Is it OK to say that I learnt C fifteen years ago and haven't used it since?
Barring learning Assembler, C is a bloody good way to learn about how computers actually work. Fundamental data types, pointers, memory alignment, memory allocation, all that stuff.
I also learnt C about fifteen years ago and use it on and off these days (the most recent was haxx0ring the new exceptions type into Python 2.5 ;)
C is indeed an excellent language to study for many reasons. As you say, it shows one the roots of the entire C-family of languages, which is quite helpful in understanding Java, C++, and such. It's rather like learning to speak Latin was about a hundred years ago. I am also intrigued by the way in which C has influenced processor development. So many programs are written in C that it has influenced the design of processors. It's also the "most portable" language -- not that C code is portable, making any non-trivial C code portable is a monumental task -- but some version of C will run on absolutely ANYTHING.
And of course, C is of historical interest: it was an interesting language for its time (which was decades ago) and many interesting programs were written in C.
Plus, if you ever need to write a device driver, the underpinnings of an OS, or some embedded code for a small, constrained processor it's still a fine tool. (Not IMHO the best, but a fine one.)
Guys, you're forgetting that C is far-and-away the most portable language in existence. There is barely a computing platform made which does not have a C compiler available. Nothing else is close.