Учиться всегда лучше на практике. К программированию это относится на все 100%.
Есть отличный сервис Codewars, с задачами по программированию на куче разных языков: от древних Кобола с Фортраном до более молодых Go и Crystal.
В качестве мотивации выступает рейтинг, обзываемый тут честью (Honor), решая более сложные задачи (kata), получаем больше опыта и качаемся. Может, даже в рейтинг попадаем :)
Простые kata обычно относятся к основным функциям языка и общепринятым вещам вроде форматирования строк и арифметических действий. Очень помогает, когда "пересаживаешься" с одного языка на другой.
В более сложных надо будет уже думать головой: как это должно работать и по какому алгоритму...
Задачи придумывают, модерируют и оценивают сами пользователи, поэтому обычно баги и ошибки чаще всего правят.
Главная фича Codewars - онлайн IDE с запуском написанной программы на сервере и инструментарий для тестирования.
Обычно авторы заранее заготавливают пару мелких тестов (Sample Tests) для быстрой проверки в окне тестирования, где мы тоже можем писать свои тесты.
Если первый этап тестирования проходит хорошо, нажимаем кнопку Attemp и видим, что будет, если прогу замучать кучей тестов со случайными входными значениями.
Посмотрим на примере задачки, на первой картинке я намеренно убрала -1 в выражении, и решение проваливает тестирование. На следующей уже все оке.
После того, как задачу зачтут, можно посмотреть решения других людей. Весьма интересно и полезно :)
После решения задачи можно предложить ее "перевести" на другой язык, если автору ваш перевод понравится, он его зачтет, вам будет плюсик, а другие пользователи получат почти новую задачу.
ОоОочень классная штука Kumite - можно написать свою программу и тесты вне решения задач, позапускать на сервере - и это все в браузере.
Может пригодиться, если находитесь не за своим компьютером, и IDE с компилятором / интерпретатором под нужный язык нет, а кодить ну очень хочется :)
Если есть свежие мысли - можете и свою задачу сочинить, если ее примут - все будут в плюсе.
Зарегистрироваться можно бесплатно, при регистрации спросят язык, с которого бы хотели начать обучение, и дадут малюсенькую программку с ошибкой, которую надо будет исправить.
Записывайтесь в воины и добавляйтесь ко мне в друзья.
Можете дать автору копеечку на кофе, а можете и не давать :)