Внесу свою лепту в обсуждение))
Я считаю, что новичку полезнее разобраться в основах. Если он хочет действительно дальше этим заниматься, то я рекомендую начать с ассемблера. (да-да! именно ассемблер! давайте, начинайте в меня кидать свои помидорки

)
- После этого переходить на Си. Честно сказать, после года проведенного на Ассемблере, очень не хотелось переходить на Си, возникали сложности, но после перехода вздохнул с облегчением. Главное писать правильно и проигрыш в быстродействии практически не заметен, к тому же если уже знаешь Ассемблер, то не составляет труда проверить свой компилятор на "адекватность", подсмотрев Ассемблерный листинг и, в случае необходимости, внеся корректировку в код. Ощутимо уменьшается время написания программы.
- Только после этого я рекомендую переходить на использование библиотек высокого уровня. Это еще более ускоряет процесс проектирования. Главное выбирать библиотеки, проверенные временем и множеством пользователей.
Использование библиотек не может не понравится! Это путь к быстрому решению проблемы. НО, использование библиотек без опыта может иметь обратный эффект! Проще накосячить в параметрах функции, если не знать основ. Например можно долго пытаться запихнуть в 8-битный (аппаратный) таймер AVR 32-битный long и потом материть эту библиотеку, мол не работает, а потом создавать темы на форумах "Помогите!!!! не работает!!!!!!!!!!!"
Поверьте, без острой необходимости, никто меня не заставит перейти обратно! Я буду использовать библиотеки! Вы же не будете спорить о том, чем же лучше копать яму: палкой-копалкой или экскаватором??? Для каждой степени развития/задачи свой инструмент!
Экскаватор - большая скорость проектирования, большие объемы кода, небольшая нерасторопность... Палка-копалка - маленькая скорость проектирования, малые объемы кода, более точная работа.
Также бесспорно то, что с экскаватором не справится неандерталец, который только что работал палкой-копалкой (или вовсе ею не работал).
У меня все!
