I find that, for me, learning languages is easiest and most efficient when I make practical programs. Tutorials and stuff never really do it for me, because a) copy paste, b) I learn things that are just utterly useless in the real world and c) I never improve my code because I never use it, so...