This week Microsoft announced that it’s working on making C++ better suited for massive parallelism. This follows Google’s recent benchmarks that showed that C++ is still faster than most programming languages (at least if you know how to optimize it correctly). Also, Google has been working on incorporating C and C++ support into Chrome.
In other words, C++ is a strong and important language, and will continue to be even in a browser dominated landscape. Here are a few resources for leaning C++, and its predecessor C.
Introduction to C Programming
You don’t need to know C to learn C++, but many C++ books assume knowledge of C. If you’re completely new to programming and want to learn C++ from a free book, please see How to Think Like a Computer Scientist below.
Miles has also written free e-books on C#.
The C Book
The C Book by Mike Banahan, Declan Brady and Mark Doran is an introduction to C for experienced programmers. The print edition, first published in 1991, is no longer in print.
How to Think Like a Computer Scientist C++ Version
How to Think Like a Computer Scientist C++ Version is the C++ “port” of Allen B. Downey’s classic introduction to programming. The Python version has been used by MIT for its introduction to programming. It assumes no prior programming experience.
There are also versions in Python and Java, and a Ruby version is in progress.
Thinking in C++
Thinking in C++ by Bruce Eckel aims to “move you, a little at a time, from understanding C to the point where the C++ mindset becomes your native tongue.” It’s written with the expectation that the learner have existing knowledge of C syntax. It begins by introducing object oriented programming and moves into covering more advanced C++ over the course of two volumes.
A print version is also available.
Eckel also wrote Thinking in Java which we included in our round-up of free Java e-books.
C++ Annotations is a free e-book by Frank B. Brokken of the University of Groningen. He uses it as the primary text of his course on C++, and it’s written for programmers already familiar with C.