But Java's not unmanaged code, so why did you include that on the list?
OK, I'll be honest.
I believe a CS student should learn C and C++ for imperative programming, and Python/Ruby as well for dynamic programming. That is the way I see it, with no balanced view, political correctness or anything of the sort.
I don't doubt that Java and C# are more than adequate, as they contain most if not everything good about C++, but you have to be more responsible without a garbage collector, and if you then need to work as a programmer you can go managed or unmanaged. Starting
off managed with C# means it is difficult for most to then go unmanaged.
I think the most pertinent question is why the CS student does not use what is there already, be it C++ or Java books. Don Syme says this in a recent video. Instead of saying "where can I find a F# Math library", you should find a C# library (or whatever
.NET langauge) and use that instead.