I have been taking C++ classes for awhile now, and doing some programming in my free time as well, I have no trouble with assignments or anything about that but I still am unable to do anything actually useful with what I know.
I mean I know all the basic stuff, but once I try do learn something more advanced and helpful I just end up starting at it for days and getting nothing done.
What I am really asking is, how does one learn how to do practical and worthwhile programming? Programming concepts that would be helpful in getting a job for example... Or any general tips on how to use programming, I have spent so much time learning all this stuff about programming and how to do it, but I have no idea what to do with any of what I know.
So what I am really asking is, how do you do useful things with C++? I end up having this problem with just about every language I learn (With the exception of assembly, strangely), so I suppose this is more of a "What are some tips on programming motivation?" thread than a C++ one.
Another quick question, does anyone have some recommendations on how to learn from others code? When reading other forums, especially when trying to develop plugins for some of the programs I use, one of the most common answers to any problem is "Look at somebody else's source code and learn from it" but I seem to have a surprisingly hard time understanding anyone's source code but my own.
If the other person has commented their code poorly, it should be expected that you don't understand how it works. I'm guessing that the biggest reason as to why people can understand each others code is because they all know the same techniques, and so they can spot them more easily and pick out the sections of code where they know what will happen and why they are doing it.
As for motivation, do you know how to draw onto the screen? Only making programs in the terminal can definitely be very discouraging.
That's not surprising at all. Reading other people's code is something that requires a lot of practice. When someone writes code, they're basically pouring their mind into the editor. Unless you have the same mental processes as someone else, and depending on the context, it's not that unlikely, any code inevitably looks like noise. Another thing is that when you're writing code, you can see how it gradually evolves as you solve problems that appear and add functionality. When you look at someone else's code, you're probably looking at a finished work. The moment you start reading you begin to ask "why is it doing this?", "why is it doing that?" Either you ignore your curious self, or the number of unanswered questions overwhelms you and you give up.
EDIT: Oh, and about comments, this is going to sound very odd, but except in certain circumstances they're a bad thing. Why? Two reasons: The compiler doesn't read comments, and programmers know this. It's not unusual for comments to become outdated, misleading, and even outright wrong as the code evolves, since programmers both reading and writing code tend to ignore them. If you ask me, the best place to put comments is at the top of functions to describe their behavior and where you're doing weird stuff.
As in WinAPI? I have a bit of experience with that, but once again only in writing programs for class. Essentially I have never made a WinAPI program for fun, mainly because all the ideas I come up with I end up finding myself unable to understand more of the finer aspects of it(Once spent 3 days trying to create a custom windows proc for a single edit box).
I have taken a look at DirectX/3D but I can't seem to find a good place to learn how to understand it.
Each tutorial has a text and .HTML version available for download, so you can check them out wherever you go. They are well explained, the speaker is very clear, and all of the code is written before-hand, so you don't end up with 5 minutes of just writing code.