To fe fair, C# really is no better than Java for desktop development (both need similar resource requirements). However, Java has had a bad reputation traditionally due to a bad start in GUI development. Java Swing is a very efficient and capable framework today. Sun was never a leader in desktop tooling and Microsoft was always stronger here. Hence, Microsoft has made C# look much better than it is, by developing good tooling like the Visual Studio IDEs for it. In contrast one will be hard pressed to find something equivalent for Java GUI development.Regarding the question of needing Comp Sci for C++ programming, I'd say that any programmer will benefit from some theoretical Comp Sci, whether it be VBA, Fortran, Python etc. After one learns the syntax, one will be limited by their background in the theoretical underpinnings of software engineering as well as the more discrete mathematical apsects.