Выучить на достаточном уровне для трудоустройства за 4-5 лет вы сможете любой язык, вопрос в том, чем именно вы хотите заниматься. Java используется в одном, С++ - в другом, Python - в третьем. Нельзя сказать, что какой-то из этих языков "лучше" или "хуже", так что по таким вводным и рекомендовать что-то невозможно. Да, Java в данный момент популярнее, чем С++, но это не настолько существенная разница, чтобы исходя из неё выбирать свой карьерный путь (оба языка широко используются, и в обоих джуниором устроиться не так просто).
Кстати, что до литературы, то замечу, что книги лучше использовать как дополнение, но не как основу для изучения языка. Есть много курсов (платных/бесплатных) и туториалов, которые будут удобнее и нагляднее.
Бери любой актуальный язык и учись программировать - алгоритмы и шаблоны проектирования. Потому что языки приходят и уходят. А алгоритмы живут много десятилетий, какие-то даже через века прошли. Насчёт архитектурных решений вопрос не такой однозначный - какие-то живут долго, какие-то тоже приходят и уходят.
Изучив C++, ты сможешь быстро перейти на C# или Java, а тем более на Python. В наше время бывалые программисты умеют излагать мысли на 2-3х языках программирования. Как сказал Немчинский, "Вам однажды придётся учить другой язык. А спорить о том, какой лучше или хуже, глупо"
Рекомендую Вам сперва определиться с областью, в которую Вы хотите в дальнейшем идти работать, поскольку программирование - это общее названия достаточно большой группы направлений.
1. Мобильная разработка
2. Разработка многопоточных программ
3. Разработка высоконагруженных систем
4. Разработка десктоп приложений
5. Разработка Веб-приложений в части фронтенда
6. Разработка Веб-приложений в части бэкенда
7. Разработка Игр
и т.д.
Когда определитесь с направлением - будет легче определить, какой язык наиболее востребован, и перейти к его изучению.
Если будет желание - пишите в личку, помогу определиться и подскажу в части курсов, литературы, и необходимых прикладных знаний.