April 24th, 2012, 03:57 PM
Join Date: Jul 2010
Device(s): Nexus 4, Samsung Galaxy S II, HTC Evo 4G, Amazon Kindle Fire
Thanked 478 Times in 292 Posts
Well, the first thing you'll want to do is to pick a language to start with. Note, however, that this is not the only language you will learn, but the first (of many) languages that you will add to your toolkit. When I say "learn a language" that process has two steps:
1) Learn the syntax associated with the language
2) Learn the standard APIs associated with the language (i.e. JDK for java and STL for C++).
Which language you pick is entirely up to you and there is a lot of disagreement among devs as to which languages are best to start. Personally, I think it is best to start with C as it is procedural in nature, so you don't have to focus on the OOP paradigm quite yet, and the fact that memory is managed manually is, in my opinion (and this is where many programmers will disagree), a good thing as even in managed languages such as Java or C#, understanding how memory allocation and deallocation works, along with a working knowledge of pointers will help you greatly. With that said, learning C and then subsequently C++ will be an uphill battle and will take you many years to be comfortable with it, once you make it to the summit of that mountain, it becomes all downhill from there. With working knowldege of C/C++, you will possess all of the necessary basic programming concepts and can easily migrate to any language you want; just learning the syntax.
I honestly haven't touched C or C++ books in years, so I am not really sure what is out there, but book published by O'Rielly are generally held in high regard (if not the highest) in the CS field.
EDIT: Oh and be warned, programming is not for everyone. If after some time you realize that it's not for you, don't become disheartened. It takes a certain kind of brain that not everyone is born with to do it. Before jumping into it, I reccomend asking yourself a couple questions:
1) Do you enjoy mathematics?
2) Do you possess the abilitiy to think logically and outside of the box?
3) Are you persistent in things you do?
4) Do you like coffee?
If you answered no to any of the questions above (ok, maybe excluding the last one), you might want to reconsider your desire to program, as it will most likely not be an enjoyable endeavor for you.
P.S. by math, I am more closely referring to more specifics mathematical concepts, such as logic, linear algebra, and discrete math (which are all subsets of math) rather than basic arithametic, although that will definitely be useful as well.
Last edited by jonbonazza; April 24th, 2012 at 04:03 PM.