Hi,
I think to copy is not the only thing you (need to) do, if you're going to learn something. But it's necessary! As many former posters said... If you just copy some code, compile it, run it - this does not have any learning effect to you.
I think you learn in 3 steps:
First you just
copy something, making sure the thing you're about to learn works and is correct.
In the second step you try to
understand how it this (code i.e.) does work. You try to follow how everything works and what the idea behind this all has been.
Finally you make sure you understood everything right by
modifying the copy. If the result of your modification meets with your expectation you finally learned something.
It doesn't matter if you used a book or the internet or even the manual of something... in any case you copied the information you read/heared.
Imagine you try to learn a programming language without having ever seen a single line of code. You start your IDE or maybe just a simple text editor and you don't have ANY clue how to write some code.
You have to copy any source of information. No matter which kind of source. This could be the internet, a book, the Readme/Manuel/Helpfile of the desired programming language or even any kind of teacher who tells you some basic instructions and syntactic rules.
I think I forgot a fourth aspect in any learning process: Experience.
Sometimes you can learn just from experience. Everyone who masteres 2+ programming languages (i.e..) knows that the second one was much easier to learn then the first was.
Because from experience you know that most (every) programming languages nearly work in the same way.
(Probably my English is not that good. I hope you can understand it nevertheless )