In this morning's mail, hot off the presses, I got my copy of 21st Century C: C Tips from the New School by Ben Klemens.
From the back cover:
Throw out your old ideas of C and relearn a programming language that's substantially outgrown its origins. With 21st Century C, you'll discover up-to-date techniques that are absent from every other C text available. C isn't just the foundation of modern programming languages; it is a modern language, ideal for writing efficient, state-of-the-art applications.
I've just read the preface, skimmed through the table of contents, peeked into a few particularly interesting areas... So, here are a few things I spotted that seemed noteworthy.
First, a lot of this book focuses not on code but on tools and libraries. Topics covered include the debugger, Autotools, and version control. There's a whole chapter on libraries.
I, for one, welcome this in-depth look at the C ecosystem. This is something other books about C only mention briefly in passing, if they mention at all, and it has been intensely frustrating. This info should be fantastic for anyone who wants to get productive with C.
The author makes a spirited defense of C as a general-purpose programming language, including its suitability for application programming. It's not just for system programming or embedded stuff, he cries! In that vein, he's got an entire chapter on object-oriented programming in C. Let me quote this bit...
C is great for its simplicity, but with such a simple grammar, how are we to resolve the multiple virtual constructors one can be saddled with when instantiating an instance of a subclass derived via polymorphic inheritance?
And the simple answer, of course, is that we don't.
I fall into the camp of OOP skeptics rather than OOP deniers. I feel like OOP was a worthy invention that definitely has its uses, but then somehow the whole programming world went OOP crazy and turned it into a monstrosity. So, in this book we're going to learn how to apply and benefit from the basic principles of OOP while tossing out all the baggage. Sounds like a good idea to me.
Also covered... New ISO C99 features. Sad to say, I've never even looked into the C99 standard before. I had no idea you could now set array size at runtime! How cool is that? So... I've got some studying to do on that.
What this book doesn't do... It really doesn't teach you C. It's definitely not a C language tutorial or a C language reference. At the same time, I sure wish I'd had something like this when I was learning the language. It should be a great companion piece for any of the many excellent C tutorials that are available these days.