При обучении программированию важно знать, первый язык учит человек или не первый. Если не первый, то всё гораздо легче, потому что базовые концепции одни и те же. Не надо об'яснять, что такое переменные и проверка условий.
Но если язык первый?
Учебники по языкам бывают нескольких видов. Некоторые похожи на справочники. Открываем первую страницу, там написано "алфавит языка". Дальше рассказывается о ключевых словах, правилах составления идентификаторов и подобное. Моя любимая книжка по голому Си -- это Фомин, Подбельский. Она именно такая. К счастью, Си -- маленький язык. Поэтому можно себе позволить сделать то, что сделали Фомин и Подбельский. Каждый аспект языка рассмотрен практически досконально.
Но у таких книжек есть проблема. Вот эти теоретизированные разделы -- они к чему вообще? Да кто такой этот ваш алфавит, нахуй? Как программу-то писать?
Есть другой подход. Давать об'яснения на ходу, показывая примеры. Гэддис вот написал книжку "начинаем программировать на Питон". Там мы сразу начинаем писать простые программы и по ходу повествования осваиваем новые методики. Появляются переменные, циклы, списки и т.п.
Эти книжки хороши для начала, но очень быстро себя изживают. Такой стиль изложения -- очень медленный. А Питон -- язык гораздо более навороченный, чем Си. Это приводит к тому, что такие книжки неизбежно будут крайне поверхностными. После первой такой книжки придётся переходить к книжке-справочнику.
Ну и есть третьи книжки, я не знаю, для кого они. В них нет ни мягкого введения, ни досконального изложения. В качестве примера я приведу "Язык программирования Си++. Базовый курс" Липпмана. Я могу быть неправ, т.к. ещё не дочитал эту книгу. По первым страницам она кажется относящейся ко второму типу, т.к. на примерах начинает об'яснять, что и как. Однако уже через 30 страниц открывается такая бездна, что у меня пухнет голова (а ведь я уже имею общую подготовку). Тем не менее, как справочником этой книжкой пользоваться тяжело. В общем, не знаю.
Ну так и что, какой подход правильный? Ответа у меня нет.