Original Post
There are a lot of threads in this forum, started by beginners such as myself, that ask which language to use, which one is easier, which one is more powerful. Same goes for game developing libraries or programs. I thought it would be constructive to present my experience as a beginner in this topic.
I've had an interest in programming since I took a QBasic course in middle school, although I didn't try to learn to program in earnest until a year ago. I started out with python, which was presented to me as a very simple and powerful language, also welcoming for beginners. I had just gotten my feet wet with python, when I started reading comments on how innefficient it was when it came to game programming. (Important note: Start taking forum comments as opinions, sometimes based on valuable experienced, but nothing more. You have to develop your own criteria through experience)
So I switched from python to C++, and continued learning, mostly through online tutorials and helpful individuals. It was a difficult, but enlightening at the same time. For example, the concept of functions was clearer to me when I used them in C++ than when I tried to use them in python. (In retrospective, it was the use of functions per se that cleared the concept, not the way the any of the languages present them.) It's curious how the simplicity and efficiency of working with python only became clear after I had worked with C++.
Even though I was overwhelmed by certain aspects of C++ (namely, pointers, templates and headers) I liked its strictness regarding syntax, which felt to me a lot more organized than python's. (Forced indentation vs curly brackets? Give me brackets any day!) I continued learning and eventually introduced myself to SDL, and subsequently to SFML. Finally, I could see some graphics on the screen! I wasn't making games yet, but at least I was moving sprites around, and that felt great by itself.
After using SFML for some time, I got interested in XNA, and figured that the jump from C++ to C# wouldn't be much problem. Turns out that I was misusing C++. Instead of programming in an object oriented paradigm, I was actually doing C/C++ halfbreed programs. I'm still getting the hang of object-oriented programming, but the point is that working with a fully OO Language (C#) was what made it evident.
While I had used classes in C++, I didn't grasp their concept until I programmed in C#. And with C#/XNA I learned valuable lessons regarding how to distribute jobs between classes, giving different parts of the program very specific instructions to carry out. As a result, when I returned to C++/SFML, I felt encouraged to work with multiple files and headers. No more gigantic main.cpp files. Instead, I created directories with main,cpp, input.cpp, gameloops.cpp, mouse.cpp, graphics.cpp, and so on.
Most importantly, all of this time I had been programming.
I learned to read g++'s compiler errors and Visual Studio's errors and warnings. I learned the value of an IDE after working with gedit (which I still use, and is great), and I learned that newbies have nothing to do messing with vi(m) or emacs (maybe I'll try again when I'm a proficient programmer). Every switch I made, from language to language, library to library, taught me something new.
In conclusion, I want to make it evident that you shouldn't be asking which language you should use, or which library. You should try it out for yourself. You'll learn a lot in the process. You'll learn that there are so many choices out there because each one serve different purposes. Experiment, and you'll find which one is right for you and your project. I've been going at this for a year (granted, I got a day job which keeps me busy) and I still consider myself a beginner.
I guess most of the content of this post was already said elsewhere (especially Tom Sloper's site, which is an excellent source of advice and information), but since the question regarding which language to learn and which library to use pops up so often, it might as well be said again.
I've had an interest in programming since I took a QBasic course in middle school, although I didn't try to learn to program in earnest until a year ago. I started out with python, which was presented to me as a very simple and powerful language, also welcoming for beginners. I had just gotten my feet wet with python, when I started reading comments on how innefficient it was when it came to game programming. (Important note: Start taking forum comments as opinions, sometimes based on valuable experienced, but nothing more. You have to develop your own criteria through experience)
So I switched from python to C++, and continued learning, mostly through online tutorials and helpful individuals. It was a difficult, but enlightening at the same time. For example, the concept of functions was clearer to me when I used them in C++ than when I tried to use them in python. (In retrospective, it was the use of functions per se that cleared the concept, not the way the any of the languages present them.) It's curious how the simplicity and efficiency of working with python only became clear after I had worked with C++.
Even though I was overwhelmed by certain aspects of C++ (namely, pointers, templates and headers) I liked its strictness regarding syntax, which felt to me a lot more organized than python's. (Forced indentation vs curly brackets? Give me brackets any day!) I continued learning and eventually introduced myself to SDL, and subsequently to SFML. Finally, I could see some graphics on the screen! I wasn't making games yet, but at least I was moving sprites around, and that felt great by itself.
After using SFML for some time, I got interested in XNA, and figured that the jump from C++ to C# wouldn't be much problem. Turns out that I was misusing C++. Instead of programming in an object oriented paradigm, I was actually doing C/C++ halfbreed programs. I'm still getting the hang of object-oriented programming, but the point is that working with a fully OO Language (C#) was what made it evident.
While I had used classes in C++, I didn't grasp their concept until I programmed in C#. And with C#/XNA I learned valuable lessons regarding how to distribute jobs between classes, giving different parts of the program very specific instructions to carry out. As a result, when I returned to C++/SFML, I felt encouraged to work with multiple files and headers. No more gigantic main.cpp files. Instead, I created directories with main,cpp, input.cpp, gameloops.cpp, mouse.cpp, graphics.cpp, and so on.
Most importantly, all of this time I had been programming.
I learned to read g++'s compiler errors and Visual Studio's errors and warnings. I learned the value of an IDE after working with gedit (which I still use, and is great), and I learned that newbies have nothing to do messing with vi(m) or emacs (maybe I'll try again when I'm a proficient programmer). Every switch I made, from language to language, library to library, taught me something new.
In conclusion, I want to make it evident that you shouldn't be asking which language you should use, or which library. You should try it out for yourself. You'll learn a lot in the process. You'll learn that there are so many choices out there because each one serve different purposes. Experiment, and you'll find which one is right for you and your project. I've been going at this for a year (granted, I got a day job which keeps me busy) and I still consider myself a beginner.
I guess most of the content of this post was already said elsewhere (especially Tom Sloper's site, which is an excellent source of advice and information), but since the question regarding which language to learn and which library to use pops up so often, it might as well be said again.