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.

However, if you are new to programming and want to start with C, you might want to start with Introduction to C Programming by Rob Miles. A PDF version can be found here.

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

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.

Visual C++ 6 Unleashed

Visual C++ 6 Unleashed by Mickey Williams and David Bennett covers programming in C++ using Microsoft's IDE. A print version is available as well.

Want Even More?

There are many more free e-books on C and C++, including many on more advanced topics. You can find more here, here and here.

If you want to learn C# or Objective C, we have separate round-ups for you here and here.