I think the best way to learn is to use the internet tutorials. I would recommend Python if you've never programmed before, because it is very easy to learn, works on all operating systems, has a very natural syntax (way of writing the code) and has great community support. If you wanted to try it I'd recommend the Dive Into Python book (http://www.diveintopython.net/toc/index.html) which is aimed at complete beginners and is how I learnt to program.
Failing Python, you could go the other way and learn Java, which has a much steeper learning curve but will force you to think proper coding right from the start.
Whatever you decide, if you wanted to pm me asking any questions, help etc then great, but a tutorial series is gonna be a lot better for you than having someone try to teach you personally in my opinion...
Finally, I presume you're planning on doing this in order to create games (most indie programmers are), but I'd warn you to stay away from graphics programming until you have a very secure understanding of basic programming concepts like OOP, inheritance, functions etc.
I'd recommend starting out with Java or its Microsoft cousin C#. Both are really easy to use, well-supported, and relevant to games. More than the language though, I can't stress enough how most programming tutorials out on the internet are actually helpful. It surprised me in my first time how good of a job it did at challenging the notion of a formal education.
There are several options to start learning programming. I myself learned Java when I started programming in school, but that was in school. Java is a great language to begin with, because it's very similar to other programming languages, like C#.
I recommend C++. It is C# but with added features, hence the "++". C# is the language that a lot of programming languages are based off of, so learning C++ will give you the knowledge and ability to learn more languages effectively. My suggestion is to find a good book online that uses the Code Blocks compiler because it is available for Mac.
C++ is the favourite language of "serious" programmers. If you're really concerned about performance, there is probably no language better than C++ (which is based on C, not C# as posted above). However, since you're probably interested in writing a 2D game, you don't really need to worry about performance, and can choose a language based on other qualities.
Java is very popular and powerful, and has a lot of nice features for beginners. It's also the language that Android apps are written in if you're thinking about creating something like that, and has extremely helpful documentation if you learn to read it properly. In my opinion, the only thing Java lacks is a graphical library that is both accessible and powerful. It has plenty of one or the other, but none of both.
C# and Python are also great choices. Python is perhaps the highest-level (read: closest to natural language) programming language I've ever written anything in, and gets used extensively in scientific applications. It also exposes you to scripting-style programming. I don't know much about C#, but it seems to be very well-supported if you want to write games for Windows, for example.
My personal recommendation would be C#, it has many good libraries for game development, is reasonably cross platform, easy to pickup with a plethora of powerful features to ease development even further once you are ready to move on to more advanced programming.
But the already mentioned Python and Java are good choices as well. Java is kind of... meh..., It is still really good but seems really antiquated with C# basically being a cleaner, better version of it. Unless of course you are interested in Platforms that have better or even exclusive Java support (Android).
I'd strongly recommend to stay away from C++ for now though, there are so many issues with the language that make it unsuitable for a beginner, though you may or may not want to pick it up later.
Last edited by Yankas; March 12th, 2013 at 02:19 AM.
Start with an engine like unity, love2d or moai. Then choose the language lua or c#, get an introductory book read it until things start to click then dive into a project you think you can do. Start small! Really small.
Don't bother with c++ and never try and c++ from the web too many tutorials are just plain wrong. If you learn c++ youll spend all your time trying to make a game engine and never learn how to make games.