(C is a language that is difficult to learn and easy to use! C is difficult to learn, not only because of its profound grammar, the semantics behind the grammar, the deep thinking behind the semantics, and the object model behind the deep thinking; C is also difficult to learn because it provides four different (but complementary) programming thought modes: procedural based, object based, object oriented, generic.
More Effective C (Chinese version). pdf)