научиться програмировать и выучить ЯП это, как по мне разные вещи. Не стоит их путать.
что такое “научиться програмировать”? ИМХО естественно

1. Обучение алгоритмическому мышлению и организации программ. Для многих людей, не являющихся программистами, это часто сложная проблема. В этой части необходимо показать, как создаются программы, и из каких кусочков они создаются: циклы, ветвление, присваивание, процедуры, функции…. Чем просваивание отличаеться от сравнения, а процедура от функции, ну и т.д.
2. Понимание основ компьютерной архитектуры. Как представляются числа, как устроена память, функции операционной системы. Почему, например, не стоит каждый раз читать данные из файла в цикле.
3.Обзор алгоритмов и т.п. Объяснение сложности алгоритмов в применении к конкретному языку, например, когда стоит использовать список vs array, какая сложность стандартных функций…
4. Обучение решению класса задач. Тут уже непосредственно учиться ЯП необходимый для решения конкретной задачи.
ах, ну и PS:
Нет смысла учить целенаправленно какой-то язык «для обучения», чтобы потом на основе этих знаний учить тот язык, который вам будет нужен. Учите сразу то что вам будет нужно.