views:

258

answers:

7

Hello. It's common to read a book to learn some programming language. But, I think we need to learn the skill of learning before doing so. What I'm talking about is that I need your help to make the learning process effective. To give an example, I'm reading chapter 12 in C++ Primer Plus. And I started to forget some details from the previous chapters because I don't use it. How can I solve this problem?. Another case to be an example is that I've knew about recursion. But, I can't use it in a real-world problems, because I still don't know much about using it.

Also, I want you to share any tip that can help in the learning process to make it effective.

+3  A: 

I started to forget some details from the previous chapters because I don't use it. How can I solve this problem?

Use it. Learning any skill from a book won't stick unless you use it very soon after you read it.

Any question which is phrased "X happens if I don't do Y, how do I stop X happening" has an implied "do Y" answer; so you probably don't need to know that. There will be things you don't use, and forget. Just try not to forget where you read about them, and then go back and read them again when you need to.

Pete Kirkham
I did so. But, after some time, I will forget it because it was long time ago since I've used it.
Loai Najati
Use it some more then. Repetition will make it stick if you use it enough.
Jonas
Even the most accomplished musicians will start their practice doing scales.
JMP
Another thing I want programming authors to do, is to give the reader more interaction in the coding process. They shouldn't write it like a novel. Am I wrong?
Loai Najati
@ Loai It all depends upon the book you are using.After all Every book has got its own standards.
Ravi
+4  A: 

The best way to learn is to write code. Architects learn by studying buildings but there aren't very useful if the never build anything.

It seems like the hardest thing for me to do when I was reading my first programming book was to actually write my own code. How did I solve this problem? I read another book! Except this one made me think, not memorize. It's called Code Complete. After I read the first few chapters, I actually started programming for the first time.

Lucas McCoy
+1  A: 

Don't expect to remember everything you read from a book while learning, especially if its programming. That's what references and the internet are for.

centr0
I love the Internet, but some places don't allow you to use the Internet for reference. Practice, I think, is really key. Oh, and knowing which resources to bring with you for when there's no Internet.
mrduclaw
+3  A: 

Don't read it as a novel and start coding while you read any part.You'll understand it better then.

About your recursion problem, get a paper and a pen and do some paperwork before coding. (I call it hand-running a code).Be conceptually clear before coding.

Ravi
+3  A: 

Most of the time I need to read a book twice before assimilating what it says.

The first time you read the book, maybe you'll forget 50% after one week (I don't know the real numbers it's an example). The second time, you will read the book faster because you never forgot completely what you think having forget... This time after 1 week, you'll remember almost everything.

I think that the first time you read a book you discover the possibilities, it's informative, the second time you effectively understand and remember them.

Practice is also another way to understand without reading twice the same thing, some books are so cool that they motivate you to use your knowledge in practice immediately (Code Complete, and the Pragmatic programmer).

You don't need to read these books twice because what they say influence immediately how you will develop. (Although I've read them twice for pleasure)

Nicolas Dorier
+2  A: 

You're very unlikely to learn a skill well just by reading it, and programming in a given computer language is a skill.

Get yourself a C++ development system. If you're on Windows, at least get Visual C++ Express from Microsoft. If on a Macintosh, the development system is available on the CDs that come with the system, although not normally installed, or you can download it from Apple's development site. If on Linux, get gcc and associated tools, which come installed on many distros (on Ubuntu, I had to sudo apt-get install development-essentials). None of these options will cost you anything except perhaps downloading time.

Once you've got what you need installed, use it. I'm not actually familiar with C++ Primer Plus, but I'd hope that any primer would have programming exercises for each section or chapter. Do some of them. Don't worry about them not being real-world problems. You need to know what you're doing to solve real-world problems, and you won't know what you're doing until you go through some exercises. (You can try to solve real-world programs, but don't put too much effort into it at first.)

You will still run into cases where you forget some of the things you need. Go back to review, and consider doing some more exercises. There can be a lot to learn, and you need to get things working right.

Remember that it takes work to learn a really worthwhile skill, and skill (as opposed to knowledge) comes from doing things. It can really help to have people to talk to (if nothing else, if you've given a problem a good shot and you're puzzled, you can ask questions here). You should figure out how you best learn things, since it's different for every person, and go with your strengths.

David Thornley
A: 

Just start doing some stuff, do a small application. And use for this all the learning resources you have: books, google, stackoverflow ... etc.

Omu