The two languages seem to be shrouded in a good number of myths, that I would like to debunk
- Myth: There is a language "C/C++"
- There is no language "C/C++". C and C++ have very little in common. Yes, I know C++ evolved from C, but that fact aside, the two languages are very different. C++ has a lot more in common with basically any given object oriented language than it does with C.
- Myth: C++ is the next version of C
- C++ is C with an object system grafted onto to it (object orientation is not a more evolved form of imperative programming, even though it's more suitable for some tasks).
The next version of C is C1x.
- Myth: C++ is backwards compatible with C
- At some point, it was. But today, C++ is not backwards compatible with C, with void pointers and whatnot.
- Myth: If you know C++, you know C
- This is a superficial truth. You may know the syntax of the language, but this does not make you a good C programmer. The C language has a large number of limitations, and to overcome these requires a lot of experience in C.
C++ has other ways of overcoming these limitations, and there generally is no way to directly translate these to C. Finally, imperative C++ code is bad C++ code, not C code.
As a side note, this is why speed comparisons between C and C++ are typically pathological. If you compile a piece of C code in C++, it will run at the same speed as it would in C. But code in the wild is not going to be side-stepping the object system like that.