Hi everybody, this might be, like, really late, but I have to respectfully disagree with quite a lot you said here. First of all: The first programming language you learn will be the one you make the most mistakes in, and in which you will acquire many bad habits simply because you don't know better. That's why, in my opinion, it should be one you probably won't be using productively. In fact, C, C++, Java etc. are just about the worst languages to learn anything in. Yes, they're good languages, each with their own benefits and drawbacks, but they aren't suitable for learning because of one simple fact: Most of the errors displayed during the first few weeks/months of learning (syntax errors, typos in variable names, etc.) will result in completely unreadable and frustrating error messages. Syntax errors in Java ring any bells? Obscure "Compiler errors" in C/C++? Oh, by the way: If you're using Windows, C/C++ don't exist for now. There's VisualC++, which is similar, but it's a separate language (mostly because many functions have different names). If anybody claims differently, they get to explain how to set up the development environment. When learning about the basics, forget about all of the compiled languages. Chose some quick and dirty scripting language, like PHP. In fact, I really do recommend using PHP because it's just about the worst language there is. It's easy to learn, you can do just about anything (even if you shouldn't), but you also quickly learn why it's important to check just about everything. Like I said, quick and dirty. So if you don't plan to go into web development, in which case you should learn PHP after you have acquired good coding habits and discipline, use PHP as your first "throwaway" language. Second: Once you have learned the basics, learn at least two other languages and use those basics. Compare and get a feel for the languages and their quirks; Just like with real languages, you will find that you like some of them better than others. That is just about the only valid criterium for a good language, because, let's face it: You will only truly progress if you are comfortable using your language. Don't let others decide that for you. Third: Do several projects. Just, whenever you think of something, do it - even if you spend 95% of the time looking something up, the only way to learn programming is to do it. Make mistakes, because I challenge every programmer out there to contradict me when I claim this: Most of our knowledge, including some of our best ideas, comes from making mistakes, finding limitations of our chosen languages and stubbornly working around them. You might even find that you prefer a different language for certain tasks, or (as I do) to write one or two quick and dirty prototypes in one language and do the final work in a completely different language. Lastly, you will find that you are better at coding some types of applications than you are at others. There are many branches of programming - data manipulation, simulation, networking, creating user interfaces,... - and just as each of them require the right people, each of them are also easier in some languages than they are in others. That's why you will probably chose your "final" language long after your first. TL;DR: Do yourself a favour and chose an easy language (like PHP) first, because you'll chose your "good" language(s) when you actually know what you're doing.