I am 17 years old and i have been programming c++ for a little bit more than a year. And i am wondering how much i "should" know by this time. I "almost" know all the basic stuff. There are some of the STL containers and just minor things like function pointers that i havent fully understood yet.
I have started with basic OpenGL and i really like it! am right now working on a pretty big 2D towerdefence game with my friend, using SDL/OpenGL. I know pretty much SDL also, Really good starting Graphics API.
I have also learned some basic java, i have just started with GUI there, really nice language this far in my opinion.
And i have also learned the terrible language Visual Basic in school, i hate it. I find it very unlogical. Atleast the way my teacher does it. He usually do these ugly non dynamic solutions to things. Maybe VB is a good language that just have been taught bad by my teacher.
Right now i am trying to expand my knowledge in the math for computer graphics, if you know any good tutorials focused on computer graphics math, please link them. Or maybe a book?
Still i feel like i am a bit after. I often feel stress for how much i have to learn.
So now i ask you, How long time did it took you to feel comfortable with most c++ basics?
And how long time did it took you to feel comfortable with SDL and OpenGL?
Right now im feeling that i want to work with programming in the future.
Just don't stop learning because there's always boatloads more to know. Programming is one of those things in life that one day you'll feel like, "Wow! I really know a lot about this." only to spend 6 more months learning more to say, "Wow, 6 months ago I knew NOTHING! But now...now I know a lot about this !!!" only to spend 6 months more...etc.
I often feel stress for how much i have to learn.
Trick is to always be open to new ideas and eventually EVERYthing that u'v learned up to a certain point will allow u to cross a threshold of minimum required ability and THEN u'll be able to do some rly cool stuff with programmin!
Remember that no one person can know all about programming. Ppl specialize in a few (often related) fields. U can know just about all there is to know in those fields if u want to like SDL and OpenGL.
All languages serve a purpose. It really depends on what u're trying to build. At 17 (or better to say...at 1yr of studying) just keep working on the basics. It would probably be better to focus on only 1 language and get the foundation strong before learning others since many share a similar foundation but with different syntax. Java is a breeze if u know c++ and vice versa. VB is fine too and 'easier' than c++ in a way but I'm not a fan of it either :D
Thank you for your comment. I would never wanna stop learning, i just wanted to know if i was a bit after. Actually it feels a bit better now.
Me and a friend are planning to make a pretty advanced 2D for school in about a year. Do you think, im programming very much right now to prepare myself.
Do you think it's possible?
By the way, i feel that i am really bad at planning my work (class design, etc)
Do you know any good articles or tutorials on this?
would be really appriciated!
The word 'after' doesn't make sense here. Do u mean 'late' as in u r starting too late ? Haha I'm more than a decade older and wondering the same thing. I'm sure u'r fine. The point is that u started :D
Me and a friend are planning to make a pretty advanced 2D (game)
imo advanced is a relative term. U'll only get better if u'r making things that r a little bit more advanced than what u already know. But, if u'r trying to do something too advanced it'll end up taking many many times longer to complete and u'll spend 100s to 1000s of hrs going back to old code and updating as u learn those concepts that u didnt know at the time. This'll create a whole mess of code mixed with somewhat understood concept to misunderstood or unefficiently implemented ones. My point is to not attempt a 'big' program in a 'learn as u go' approach. U should already know how to do well over 90% of the project before u start.
I'd start with a lot of smaller programs so that u can identify and perfect the concepts needed to solve them. For a fun example, make a classic pong game. See if u can handle all of the collisions of the ball to the paddles (and the walls). It'll require some basic geometry. Can u determine the angle that the ball should return based on the angle that it hit the paddle? Control the speed of the paddles ? and the ball ? Keep the score ? Keep the distance the ball traveled ? 2Players? 1Player vs AI ? There's lots of possibilities. It's a good game to start with since the collisions are very basic and ur paddle can only move up and down. What r all the classes that could accomplish this ?
Class design is very conceptual. They're meant to make ur programming life easier. My best advice is starting with smaller programs (which leads to simpler classes) and build ur understanding from that. http://www.cprogramming.com/tutorial/class_design.html
I look a lot at the classes in msdn too to see how they're built and what they're do.
I have actually already maked those old pong, snake and other very basic own ideas. I am right now working on a pretty advanced IMO tower defence game, with a map editor. Right now im a bit stuck on the Trigenometry part.
I have redesigned it many times when im working at it. it's painful but usually worth it, when i said advanced i really meant advanced. You know those games with 2D physics and nice non-shapedependent collision.
Ok, no more guessing where u'r at on the learning curvature ~~~
I'll just say that yes, the book u mention is indeed very useful if you're at least at an intermediate level of understanding of C++ concepts. Otherwise, most of the book will get lost in translation. Hard copy is best! ;)