Python, пожалуй, наиболее универсльный и удобный язык как для хобби, так и для работы, с удобным инструментарием и инфраструктурой и со всем что нужно для удовольствия от его использования. Он позволяет освоить и применить базовые принципы как функционального, так и объектно-ориентированного программирования.
JavaSctipt также сыскал себе популярность из-за удобной инфраструктуры и инструментов создания графического интерфейса в браузере, но сам язык совсем хромой и хорошо программировать он не научит. Лучше браться за него имея представление о принципах программирования с использованием других языков.
Java отлично подойдет для более основательного и глубокого изучения подходов объектно-ориентированного программирования и проектирования сложных приложений, потому что сам язык более строгий и простой и позволяет сосредоточиться на абстрактном проектировании, а не на способах и особенностях использования языка.
А освоение самих подходов и принципов программирования можно начать с чего-нибудь базового вроде "Рефакторинга" Кента Бэка и Мартина Фаулера, а продолжить по Бобу Мартину.