It is not uncommon to see many resumes with “C/C++” listed as a language in the modern IT world. Of course, this would seem kind of redundant since C++ is a superset of C, and putting down “C and C++” comes off as a little odd. However, C++ is not the same thing as C#, and C++ is not the same thing as C. The differences are not negligible and a C vs. C++ background can tell you much about a programmer’s experience and the way he or she thinks about code.
**“An Octopus Made by Nailing Extra Legs Onto a Dog” **This snarky phrase was once made about C++ and its adaptation from C. While it underestimates the usefulness and sophistication of C++, the truth is that C++ was created by adding object orientation to a language that was not really made for it. In fact, the first C++ compiler was written in C++ (whoa, ponder that for a second, Neo).
C++ was meant as a better and more complete C, but it took less than a decade before Java and other memory-managed languages started taking over the claim of making development easier. This means that a lot of C++ code is either very domain specific, is legacy, or is code that was originally in C but rewritten as C++ with objects and extensibility in mind. C++ is most prevalent in the aerospace industry, operating systems, the embedded device industry (though many organizations are likely to use straight C instead), and the video game industry.
What is the most important difference between C and C++? Though object orientation is the obvious one, you can technically do (extremely messy) object orientation in C. The biggest difference is arguably in the standard template library (STL).
Both languages share roughly the same syntax, and C++ can compile with most of the C standard library without modification. However, the STL may be what really separates the two in actual industrial practice. The STL allows the programmer to create things such as dynamic lists, use sorting algorithms, and create hash tables much like in interpreted languages such as Java, Perl, and Python. However, the syntax for doing so can be a little nasty.
It is probably imperative when interviewing for a C++ position not to accidentally give a C interview. Forget malloc() vs. new: those are freshman concepts. Instead, see if the developer can do something useful with a in its place. Contact us for further advice on the ins-and-outs of languages and nerdy hair-splitting.