prophile wrote:I have to disagree over the C/C++ point. I find that the abstractions provided by libstdc++ make life one hell of a lot easier for someone new. Look at string handling specifically: when I tried to learn C the first time, strcpy() and co just went straight over my head. Using std::string is much simpler, and once you start understanding how it all works then you can move on to C.
Oh, there are certainly some things that are easier in C++ (objects can be very nice). However, there is a whole lot that is far more difficult, especially if you get into other libraries. Even with strings you have all sorts of different string libraries, each with their own features and functions. I also wonder how strcpy() is confusing while C++ isn't. I'm mean all you are doing is copying a string using pointers. Understanding pointers is key to both C and C++.
My main reason for suggesting learning C before C++ is that the vast majority of most people's needs in C++ are covered in C. If you have a good grasp of C (which is pretty easy to get) you can pickup those features of C++ you need without much problem. In fact almost all books I have seen on C++ start off with a relatively in depth C tutorial before even touching C++. For example the first 250 pages of C++, The Complete Reference are all about C.