Quite often I am asked, "How can I get started in C++ programming?" Well, that's a good question. C++ is not a simple language, but it remains the defacto standard for high performance applications.

There may be some advantages to learning a simpler language first. Perhaps start with an interpreted language, like Python, so that programming concepts can be explored more interactively. In any case, once you're ready to try your hand at C++, here is what I recommend:

First, start with the classic Kernighan and Ritchie book, "The C Programming Language". It is sometimes referred to as the "red book" because earlier editions had a red cover.

While modern applications are more commonly writtin in C++ (the object-oriented upgrade to standard C) learning standard C first from the K&R book will teach you the subtlties of C operators and will provide you with a sense of backgound for C. Some of the operations and approaches in classic C are not often used in C++, but they do show up from time to time, and, without the background of the K&R book, you may be forever vexed by their strangeness.

Once you have completed the K&R book and have achieved a degree of comfort with the examples and exercizes in that book, it's time to start learning the concepts of object-oriented programming. For this, there is one book that I feel does an excellent job of this. It is "The Object-Oriented Thought Process" by Matt Weisfeld. Don't let the reviews fool you - this is an excellent text. While this text deals with the fundamentals of object-oriented programming, I often recommend it for developers with some experience in object-oriented programming because I find that many are missing a few core concepts. This text uses the Java language to illustrate the concepts. That's fine. Some exposure to other languages is a good thing. It does not take away from the instructional value of the book.

After completing the Weisfeld book, I think you are in a good position to start digging into C++. And who better to learn from than the creator of C++ himself? Pick up a copy of "The C++ Programming Language" by Bjarne Stroustrup. Stroustrup also covers the standard library (STL) in this book, which is quite important to C++ programming.

Upon completion of the Stroustrup text, you will have a good sense of C++, and you will have acquired many good habits with regard to code structure.

From there, I strongly recommend digging into the Boost C++ Libraries. Boost has many excellent libraries that are tremendous time savers when creating real-world applications. Boost has excellent online documentation, so a book may not be necessary, though several exist if you want to go that route. (I'd be interest in your opinion of any Boost C++ book should you choose to get one.)

Be warned that what I have recommended above is not a quick-start guide. Working through these three texts will take some time. It's essentially a self-study curriculum. But given the heft of C++, the investment in time and texts is worthwhile if you want to build a strong foundation. And remember, this is just the beginning! There is no substitute for experience (and looking at other people's code), so start digging in.

Questions and Comments

Have questions or comments? Contact me at contact@jamescoulter.com.

All contents 1999-2013 James Coulter except where stated otherwise.