C++ wenn auch sehr mächtig hat einen ganzen Haufen eigener Probleme. Ich halte auch garnicht so viel davon jemandem zu raten mit einer bestimmten Sprache anzufangen. Für den Anfang sollte es zwar m.E. eine stark typisierte Sprache sein, einfach um dem Anfänger eine gewissen "Sauberkeit" aufzulegen aber abgesehen davon ist das wichtigste dass der Anfänger seine If-Schleifen versteht und grundsätzlich weiß wie er einen Ablauf (Algorithmus ist vielleicht zu hoch gegriffen) in Code umsetzt. Das gute alte Pascal ist für einen Anfänger vielleicht garnicht so schlecht.
Wohin man sich dann wendet zeigt einem das Interesse und die Erfordernisse der Praxis.
Wobei beide Sprachen einen Grund haben warum es bei ihnen geht, bzw nicht geht. Und das ist mehr Philosophie als Technik!
Am Ende sind C++ und Java aber noch von der Art her sehr ähnliche Sprachen, auch wenn es bei der Ausführung der Programme und der Sprachumgebung fundamentale Unterschiede gibt. Aber am Ende gehen beide auf C zurück.
Andererseits gibt es Sprachen die sich fundamental unterscheiden. Funktionale Sprachen wie Lisp beispielsweise. Auch wenn man vielleicht niemals ein praktisches Projekt in einer solchen Sprache umsetzen wird kann die Beschäftigung damit einem doch viel für das Verständnis gewisser Features der Sprache der Wahl bringen. Hierzu: Can Your Programming Language Do This? - Joel on Software
Zum Thema Programmiersprachen und was dahinter steck empfehle ich jedem dieses Buch: Masterminds of Programming: Conversations with the Creators of Major Programming Languages (Theory in Practice (O'Reilly)): Amazon.de: Federico Biancuzzi, Shane Warden: Englische Bücher