TL;DR'd this topic:
Don't worry about learning a language. In fact, this is probably the most mis-interpreted skill ever. People seem to idolize someone else when they say "Oh, I can program in C, C++, Java, PHP..." etc, like the number of languages someone knows is directly correlated to how big their dick is. Truth is, this has nothing to do with programming. I could take a language that I have never seen before and master* it within a week, if not less, with absolutely no problem simply by applying what I know about functional programming to the language. Most modern languages are INCREDIBLY similar, and you can easily apply what you know about a programming language you already know to the programming language you are trying to learn. The fundamental underlying concept to any programming language is problem solving, which is what you should focus on.
The easiest way to begin programming is to just pick a language. Managed languages (C#, Java, Vala, J#, D) are easy to start with and provide a good foundation for learning a programming language. These languages are usually fairly easy to newcomers because they guide you in the right direction by not allowing things that would normally be considered illegal that many "expert" programmers may abuse for simplicity of efficiency. However, if you would like to dive right into it, learning a language like C++ (which is what I started with about 11 years ago) is definitely recommended. Simply put, while using one of the previously mentioned languages may stop you from doing something stupid, using C++ forces you to learn not to even think about doing things stupid, because you'll learn quite quickly after spending days debugging something about what you should and should not do.
I would also recommend web programming as a good place to start. It's easier to create smaller scripts here, because you don't have to be concerned with any OS independent implementation, or anything like that. PHP, a common web programming language, is very much like the C/C++ programming languages, but gives you some leeway on what you can do. PHP programming is also event-based, meaning that actions and only happen if a user prompts it (for instance, such as loading a page, clicking a button, etc. Event based programming is very easy to learn, because you have an incredibly clear flow of program.
As for what you should start programming, you tell me. You could follow a tutorial if you'd like, especially if following a tutorial complements your learning style. This is a very good way to learn the basics, but there is only so long you can just follow a tutorial. There are generally two ways I suggest to begin programming. The first, in keeping with the problem solving theme, think of something that you would like to automate, and try to apply that to programming. For instance, I created programs for my Algebra classes back in High School that could take certain inputs and then solve the problems, complete with showing work. I eventually extended these to working with Pre-Cal, Calculus and Linear Algebra problems as well. It had nothing to do with not being able to do the math, I just didn't want to be bothered with it.
The second way would be to find something you want to work on. There's no point in learning if you will only program things that you have no interest in. For instance, the first, fully functional program I wrote was a re-creation of the old web-based Starcraft RPG game (SCRPG). It worked. Mostly. It was also incredibly shitty, but I learned alot from it.
Finally, if you really want to learn programming, you'll need help. Begin to familiarize yourself with your languages documentation (another reason I recommend C# or PHP, because they have amazing documentation, which Java does not), and sign up for some sites such as
Stack Overflow, which can help you out immensely.
Just some tidbits from what I skimmed through:
- Shaders are not child's play, you need to know quite a bit about graphics programming before being able to make anything remotely complex.
- A functional Game Engine is even more complex, even in the bare minimum. I would advise you not to start here, unless you wish to create a simple game from a simple engine that is already provided for you.
- Visual C++ does not require .NET, only the CLI version does. You can develop native, MFC, Win32 and ATL applications without C++
- Don't use Java. Please.
- Visual Studio is probably the most powerful IDE you'll find, but power != best. Find one that you like, there's plenty of free ones around.
- You can get free MS Software from DreamSpark
About me: I'm studying for a goddamn Ph.D. in Software Engineering.
Anyways, gotta run, might post some more later.
None.