I agree with all that has been said about C but do find that often mc code written in C is inefficient due to a lack of understanding of the underlying hardware. So, I would add to the discussion, learn to read data sheets at the same time as you learn C or if you know C, take time to read the relevant sections in the data sheet.
I should have mentioned I enjoy programming in C18, BASIC, and Assembler and I recognize strengths and weaknesses in each. I agree it does take more time to write a program in Assembler than it would to write the same program in C18 or BASIC.
I really shouldn't encourage or discourage the use of one language over another. I can write tight, simple, elegant code in each. I can also write loose, sloppy, unintelligent code in each.