Scars Unseen said:
henritje said:
don't start hard with stuff like C/C# or C++ start easy like BASIC and move up.
I'm going to have to disagree with this one. You can write basic programs in languages other than BASIC. It's best to pick a language you think you would actually use and learn that(and then learn other languages too). There are easy to follow tutorials for most languages(Working my way through Land of Lisp right now), so telling someone they should stick to BASIC is archaic advice.
I disagree with that too. Better to stay away from BASIC, if you can.
Starting easy and moving up isn't really necessary or beneficial, and BASIC in particular has a lot of problems that can leave you with bad programming habits that you'd be better off without. I started off with C and never found it too challenging, whereas I had a friend who started off with Visual Basic (This was back in the day before C# even existed, and Python hadn't experienced its huge surge in popularity).
Every time he wanted to make the change to a more "serious" language, he never went all the way with it because he was so familiar with the easy way VB did things, and it became like a crutch for him.
Personally, I say C first, and there is a good reason for that. C is a simple, somewhat low-level language. In C, you have to manage memory manually. This will give you a good understanding of how addressing and memory management works behind the scenes, and also give you a greater appreciation for (and understanding of) languages that manage memory for you, via dynamic memory allocation, garbage collection, etc. If you start off with a language that has libraries built in with all the data structures and algorithms you could ever need, then you may never learn how all those things really work, or how they're implemented, or the advantages of one over another. If you pick up a good algorithms or data structures book and implement those things by hand in C, you'll understand them far better than someone who always relied on implementations that had already been supplied for him.
The simplicity of C makes it one of the best languages for learning the fundamentals, the basic principles that you could benefit you in any other language. Learning it early and learning it well will teach you to write tight, efficient code, and not to be lazy. Besides, it's the basis for a zillion other languages and is still probably the most common language used in embedded systems and hardware programming, so you might as well master it.
I'll echo everyone else's recommendation for K&R C, and say that if you're serious about learning programming, you should pick up
Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein (sometimes just referred to as CLRS, or the big book of algorithms). It doesn't teach you any one programming language, but will teach you all about algorithms and data structures in a way that can be applied to pretty much any language. All of the code is provided as generic pseudocode. And it is very, very thorough. It's one of the books that EVERY programmer should have on his shelf.
Note that this isn't a casual book. It's relatively mathy.