Also, to pedantically correct myself, technically a C# program doesn't need the .NET runtime, Java programs don't need the JRE and C++ programs don't need the MSVC runtimes
Keep in mind this is a borderline language bashing thread, so a healthy mix of farce and jest should be expected.
I'd prefer "opinionated"This section is a bit misleading too
Yes you can write an OS in C# or a massive GUI in C++, but IMHO it's not the most productive approach.
C++ isn't used in the Linux kernel simply because of Linus Torvalds stereotyping of C++ programmers (much in the same way the C++ programmers stereotype Java programmers, and Java programmers stereotype... end users?). Windows has successfully used C++ at low levels, and we should all know that C++ is no more bloated than C thanks to it's pay for what you use philosophy.It's considered too bloated and error-prone for use in the Linux kernel, and embedded platforms tend to lack a decent C++ compiler.
I'm not sure if embedded platforms still tend to lack good C++ compilers -- yeah, you've had to write "C with classes" type code in the past (which can often be be a better style for such simple systems anyway... ;P) but the majority of systems I've used have supported a fairly modern GCC or similar quality compiler.