Na początku najtrudniej chyba nauczyć się przekładać problem na algorytm i na tym etapie raczej nie warto specjalnie wiązać się z jednym językiem, zwłaszcza takim w którym chcemy pisać docelowo. Najlepiej obracać się wokół języków pozwalających jak najszybciej osiągnąć jakiś konkretny efekt, bo to bardzo motywuje do tego żeby faktycznie coś robić. Można uczyć się tylko podstaw języka które faktycznie są nam w danym momencie potrzebne.
Wspomniany tu już Python powinien sprawdzić się dobrze. U mnie tą rolę pełnił Perl, dzięki wbudowanej obsłudze wyrażeń regularnych i LWP::Simple, oraz PHP i JavaScript. Żadnego z tych języków nie poznałem dobrze, ale dały mi podstawy, dzięki którym mogłem uczyć się dalej.
Jeśli chodzi o o języki o których pisałeś, to polecił bym tu raczej C++, ale tylko jako mniej zły niż Java.
Kiedy opanuje się już tworzenie prostych programów, problemem jest zorganizowanie kodu tak aby pisać bardziej złożone. Tu polecał bym paradygmat obiektowy i Javę.
Następnie warto zając się poznawaniem konkretnej technologii z całym ekosystemem, ale tym nie warto zawracać sobie głowy na początku, bo nie ma się podstaw do tego, aby wiedzieć co faktycznie chciało by się robić. Do tego momentu język jest rzeczą wtórną i łatwo przerzucać się z jednego na drugi.