Hey guys, I am a complete beginner to programming. My only background is basic programming in C. I would like to learn more but I don't know where to start, I thought about learning C++ but then i read somewhere that learning obj-C or Java is a better idea. At this point I am completely confused and would like your advice.

In the future I would like to create simple programs(hopefully with a GUI, I am tired of writing programs for DOS). I would also like to write for iPhone/iPod/iPad. However these are two different goals and I don't really want to learn a language just because its better for apple platforms.

In other words, what would be a good beginners language for windows OS and what would be a good language for apple's mobile platforms.

Thanks,
hope I wasn't all over the place...

I thought about learning C++ but then i read somewhere that learning obj-C or Java is a better idea.

C++ is the best language to start (and keep going). Once you know it (or any OOP language) you can easily code in Java, Python etc.
As for windows or any other platform consideration, then Java is a good option. But other language won't let you down anyway.
If you intend to do game programming, again go for c++.

You are asking which language you should program in.. on a C++ forum! I think you know where this is going to lead.

C++ plays the central role in the world of computer programming. What that means is that all other languages define themselves in comparison to C++. It means most languages try to have a C++-like syntax to have the best chance of appealing to the massive body of C++ programmers, which means most other languages are easiest to learn when coming from a C++ background. It means also that most (if not all) platforms, operating systems, software tools, etc. are either natively in C++ or provide direct (or very good) compatibility/interface with it. Finally, it means that C++ is key in having broad competences in programming.

The above are (sort-of) facts, that might not mean that C++ is the best to start with. In my opinion, it is. But I'm a bit tough. People say that C++ has a steep learning curve (at least at first), and I would also say it's very long, but mostly because C++ is not limited to OOP, it has two more levels, i.e. generic programming and template meta-programming (that other languages don't have, or only partially).

The criticism you most often hear of C++ is that it is too close to hardware (too low-level), too complicated to port between platforms, and that memory management (or the lack thereof) in C++ is too error-prone. Yet, most companies that use C++ for there development (which is the wide majority) will basically say the exact opposite: you can more easily put levels of abstraction in the code (hide the hardware-related stuff), porting applications between platforms is a breeze (if you use that right libraries), and memory management is not a problem for any programmer who is doing C++ professionally (basically, beginners have trouble with that, then they give up, and bitch about it later! But professionals don't even see it as an issue at all because C++ offers so many flexible options to deal with memory management issues, while other languages usually provide a one-size-fits-all approach that doesn't really fit well to anything). end of rant.

As for playing with GUIs and stuff. I would suggest you just download Qt Creator for example, and start building some little graphical program (a little calculator or something). Basic C knowledge should be enough to start, but you might want to keep a C++ book handy. You should certainly work through some C++ coding from book exercises or tutorials, but it sure can get a bit boring doing only command-line stuff. In that case, just mix the two: work through some online Qt or other GUI tutorial codes, and when you feel overwhelmed by the syntax or complexity, and you are not sure what is going on, then maybe switch to textbook exercises.. and come back to ask questions on this forum!

NB: if you find the learning curve of C++ too steep, then I guess Java would be the next one to try. Python might also suit your purposes. Both Java and Python are also generally well supported by both GUI tools and mobile platforms. If those three are all too hard for you, then maybe programming is not your thing.

This article has been dead for over six months. Start a new discussion instead.