azteched said:
C++ is in no way "nasty", if you take the time to learn to use it properly, and learn the more advanced features.
However, it'd be pretty tough as a first language.
If you want a good grounding & a challenge, try C.
First of all, the concept that C++ is an ISO standard rather than just created by a company (like Sun with Java) complicates things, it means random non-standard extensions and a whole host of possible compilers, and a complication in the difference between make and build.
Secondly, C++ has a whole host of internal mechanisms that are far tougher to understand (such as pointers, memory management, inline functions, multiple inheritance, friend functions, templates (even though those have been recently introduced to java), precompiler operatives/macros, dll compilation etc etc) than, say, Java.
This makes C++ much, much harder than Java. Java I can just open notepad, import some functions, extend and object, compile and run. C++ I need to make a make file, link in libraries, includes directories, link, not to mention decide which of the compilers I will use, or attempt to install one of the hundred IDEs to use.
At the moment I am lucky because the C++ I am developing fits within the OpenSG framework so autotools picks up and autoconfigures, but that would be a *nightmare* for someone just starting out.
My typical test cycle looks like this :
Edit my core (as necessary)
Edit my test file (as necessary)
Do a make clean & make on the lib to compile the lib from within builds directory
Go to the top directory, sudo make install to install the .so
Go into the builds test directory and make clean & make
./testMyCode
And that is assuming that all of my paths etc are installed correctly.