| > To me they are not distinct enough as languages to truly be considered fully separate There are plenty of subtle differences, precisely because they aren't the same language. [0][1] They're deeply connected, but there are important differences between them, and it doesn't do to gloss over the details. For instance, empty structs are permitted in C++ but might get you into trouble in C. [2] > they use the same compiler Many of the major compiler suites support lots of different languages. You can compile Fortran, C, and C++ code using LLVM, GCC, ICC, or even OpenWatcom. So what? It's true that where you find a C++ compiler, you generally find a C compiler, but the converse does not hold. The TCC C compiler doesn't support C++, for instance. The same goes for many of the more obscure C compilers out there. Also, sometimes a compiler suite will have solid support for C++ but poor support for C. If you want to do modern C++ programming on Windows you might use MSVC, but MSVC has surprisingly awful support for C. [3] > We should all be free to write our own programs the way we want and not have to worry about standard practices or cultures. Disagree. It can improve quality to use strict coding-standards and a strict language. Software development is not about maximising creative freedom, it's about effectively developing high-quality solutions, see [4]. This is the reason software in safety-critical domains like avionics is never free-form, it invariably uses highly restrictive coding-standards like MISRA C, or highly restrictive languages like SPARK Ada. (Hope that wasn't too off-topic, my points there don't pertain whether a 'language' should be understood to include its conventions.) [0] https://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B [1] https://stackoverflow.com/a/21515839/ [2] https://stackoverflow.com/a/755339/ [3] https://github.com/MicrosoftDocs/cpp-docs/issues/407 [4] https://www.fastcompany.com/28121/they-write-right-stuff |