Изучение программирования и изучение языка - это вообще два разных дела. Новый язык учится за пару дней, если ты уже умеешь программировать. Потому что язык - это всего лишь инструмент. Поэтому, правильно задавать вопрос: что входит в основу программирования?
Ну как минимум: типы данных, операции с типами данных (математические, строковые, и т д), структуры (массивы, хэши), циклы, функции, ООП, стандартные алгоритмы и паттерны программирования.