At 1/29/15 09:03 PM, PsychoZombii wrote:
thanks for the recommendations for Python too. i will absolutely try to learn python, but i think i'll begin with C/C++. it's an extremely difficult language to grasp, yeah, but i'm quite sure that if i grasp it now, it'll help me out with many things in the future, seeing as all languages seem to derive from it. plus, it's probably the hardest language to grasp, so once i actually learn it, it'll be something like smooth sailing from there! i'm gonna bookmark those python links though, they'll definitely come in handy. i'll probably start learning python after i get an understanding of C/C++.
I am glad that you chose to take up C/C++ learning for understanding programming a bit more. Most high level languages hide memory functionality from you and use a thing called "Garbage Collection". What this basically means is that it will manage all the memory for you, but more often than not this actually causes performance problems the larger your game becomes.
Languages that have Garbage Collection are okay for small projects, but those without will have a significant performance increase that is noticeable as games grow larger in both scale and depth. C++ has its own garbage collector, which is in itself off-putting.
What a lot of software programmers - particularly object-oriented ones - tend to think is that "Garbage Collection is necessary" or "Throwing Exceptions should be a good thing." The thing is, these concepts are what causes performance problems, and while this may not be noticeable at first on modern systems, write a complex mathematical algorithm and you will instantly see the difference.
Game programming should focus on performance, since you will need to learn optimal algorithms for your graphics rendering. If you're interested in the C++ route, you can try a video series on YouTube called Handmade Hero. This video series is about developing a video game from scratch (using barebones Windows API functionality), so it's pretty hardcore and I'm slowly going through the series myself.
Alternatively, if you're lazy you can try Haxe and OpenFL and target multiple platforms using that one language - Flash, Windows, Linux, Mac, iOS, Android. OpenFL is still in development and growing - at the moment, their focus is optimising and fixing the HTML5 target, but native and Flash outputs work as you would expect. Some functionality on native platforms may still be absent, however.
"Good programmers" are not necessarily good programmers, anyway. It is also very subjective once you get past the obvious:
1. Someone who is willing to learn new things.
2. Is able to work through their own and other peoples' code without assistance.
3. Can develop code without creating overhead (code that serves no practical purpose)
4. Write's classes and objects that are meaningful and only does what it says on the tin (don't over-extend the code from its main purpose)
These are just four of several more that would make someone a "good programmer" but even "good programmers" make plenty of mistakes and is often the reason why even AAA titles swarm with graphical glitches or bugs on release.