Do you want to learn programming so you can make games or is learning programming itself the goal?
If it's the former, just jump into Game Maker, Construct and ( another similar tool with a visual programming interface, the name escapes me though ). No point in making engines when the game design and creation is what interests you, you'll be able to pick up some programming as you go.
If it's the later, you can stay with C++ and SDL or learn Python and Pygame or C# and Unity. C++ isn't the horrible beast it's made out to be, but do try out the alternatives and stick to what you like.
I started with C++, because in the sixth grade that's what the internet told me games were coded in. Of course, going through school means I haven't touched it in years, since everyone teaches Java at first, and for game creation I've been using XNA (C#) and Unity (Also C#, though it's just a syntactical overlay on whatever their underlying scripting language is). I will say, though, that every important concept you will ever learn in coding goes across all languages (object-oriented vs functional aside, I suppose). The important stuff is all in the logic. Honestly, I'd say pick up Game Maker or RPG Maker (both have good free versions; RPG maker is great for top-down stuff, a la JRPGs, and Game Maker is more malleable to be whatever you want). Both are 2d, both are very simple. Don't even worry too much about learning the actual scripting language; just focus on the logic of the game. Once you understand basic logic, you can honestly go anywhere. I would not recommend trying anything 3d unless you have a strong understanding of Linear Algebra (look it up if you haven't heard of it, it's not what you learned in grade school). 3d orientations are complex to model, and you'll wind up struggling with the math as much as with the code if you aren't already familiar with it. After fooling around in those for a bit, pick up an introductory programming textbook (there may be good free resources I'm not aware of) and work on picking up a real language. Java is likely to have the best tutorials out there (and the online API is excellent), but it's not necessarily a language you're ever going to want to really use. C++ is a bit complex to learn all at once, but it's honestly not that bad to learn, and it's a great language. C# is basically MS making their own version of Java, but it is pretty good and you can grab the XNA framework to help you make games much easier. I do not recommend Javascript simply because it teaches some very poor habits. I recommend learning a "real" language before spending too much time on any scripting language, just to be sure you don't fall into any bad habits.
It's a bit obscure, particular and long term but what really fascinates me with games is procedural generation, ultimately I want to fiddle with lots of procedural generation and randomisation, even if it's just on a extremely basic level at first (or at all). Would something like Game Maker be flexible enough to accommodate this?
Last edited by hexagonalbolts; 12-10-2012 at 10:00 PM.
If procedural generation and randomization are your interests, then Processing might be of interest to you. Download and install the environment, open one of the included tutorials and start tweaking. You can literally have stuff up on the screen within a minute of launching it. It lets you to output graphics easily, and that's important for getting a good sense of what you are generating at a given moment.
To emphasise what other people have at least hinted at, I think it's important you have goal/project in-mind when you start-out, because just "learning programming" is a daunting task (I've been doing it for 32 years and I'm not there yet).
As Victory says, if procedural generation/graphics and stuff like that are your interest, Processing is much worth a look - if you have other interests, there are other tools equally suited to other things.
If you want to make games, for example, a dedicated games creator will take you through that too (The GameMaker package new to Steam is probably the ideal starting point).
I'd say you have to want more than just 'learn programming' tho - because that's a bit like saying "learn foreign languages", there's a lot of them, they're very different, there are many different levels of knowledge (casual conversation, reading, writing, giving a lecture, writing a book on their Irregular Verbs(*) and so on).
(*) this could even result in you becoming the President of a South American country - but we're WAY off-topic now... ;)
Creator of Steam Greenlight LITE
p.s. if someone wants to learn just one set of tools which can do 'almost anything' I'd suggest they learn Javascript - because if you add HTML and CSS to that, you can build websites, games, apps - almost anything expect platform-specific low-level stuff like disk analysers, in-fact...
Creator of Steam Greenlight LITE
As others have mentioned, starting out with C++ is a bad idea. C++ is like industrial machinery, it's huge and chock full of moving parts required to do the simplest thing, yet these moving parts will only make sense if you've worked a few years in the industry. To put it another way, don't be surprised if you have to write 60 lines of code to get a "Hello World" app in directx.
Javascript is the best bet as it has the least overhead to get to actual code and does not require compiling.
Actionscript is also a great starting point - you have more freedom than Javascript (you can do a lot more binary data manipulation in AS3 than in javascript), and incorporating 2d animated assets is way easier than JS. Another good reason for going with AS3 is portability. Javascript is nice in that you can literally open up notepad, save an html file and have an "app" up and running, but then that html file will behave differently on each browser due to cross-browser compatibility issues. Javascript is easy to start with but hard to maintain, so if you want to start on an actual game project with your new skills Flash is a safer bet.
Regarding tutorials, with the vast array of blogs dealing with actionscript and flex development, googling will do just fine.
FlashDevelop is an open source IDE (dev tool) which can get you up and running relatively quickly:
http://www.flashdevelop.org/
For inspiration:
http://wonderfl.net/c/imOx
http://wonderfl.net/c/kvkU
http://wonderfl.net/c/h9dR
http://wonderfl.net/c/juFu
http://wonderfl.net/c/nmsw
http://wonderfl.net/c/2F0r
http://wonderfl.net/c/2HBv
http://wonderfl.net/c/59Oz
http://wonderfl.net/c/t5IZ
Steam profile
PC Specs: I have a big e-peen