<i>"as it is very user friendly and allows for a more complete freedom of expression and ease of compilation"</i> - I've got to take issue with this. For a new programmer, C++ is not particularly user friendly at all (believe me, I <i>was</i> that new programmer) but I think it's often taught as a first language because by throwing you in the deep end (with pointers, cryptic compilation errors, overflow issues and extensive but often quite primitive features) it teaches you about the logic and principles of programming. This means when you get to higher level things like Python/Perl/Ruby you can really appreciate why things are the way they are.<p>I think learning (say) Java and then C++ would be much more difficult than C++ then Java, because C++ gives the sort of "nuts and bolts" approach to programming, letting you do really powerful stuff but often at a reasonably low level (compared to lots of languages, obviously "level" is relative and is a topic for another day)