Originally Posted by jpalcoriza
Visual basic is also a great program for learning, there is no easy way on learning that's for sure. But I think C++ is more of the basics in programming that every programer needs to master.
Starting with C++ for the vast majority of the population, I am talking like 99.999% of the population, is just a patently wrong thing to do.
Yes, C++ is the language of the pros ( although less and less though every day, take for example this current Bethesda job posting
) use, but that doesn't mean it's a good language to start with.
Language pitfalls aside ( and there are a ton when it comes to C++ ), the build environment is simply not conducive to a learner. Before you can even write a single line of code you have to figure out semi arcane topics like the linker and preprocessor, which to a new developer are not simple task. On top of that, most of the tutorials and references on the web are horrifically out of date ( and C++ has changed A LOT ). Finally the error messages are in a completely foreign language.
I mean, here is a simple error message ( I got from Googling ) and by no means an exceptional one... this kind of message is typical of the kind of errors C++ gives:
pascal@zetwal:~/temp$ g++ stltest.cpp
stltest.cpp: In function ‘int main()’:
stltest.cpp:9: error: no matching function for call to ‘std::vector<int, std::allocator<int> >::insert(int)’
/usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/vector.tcc:93: note: candidates are: typename std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(__gnu_cxx::__normal_iterator<typename _Alloc::pointer, std::vector<_Tp, _Alloc> >, const _Tp&) [with _Tp = int, _Alloc = std::allocator<int>]
/usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/stl_vector.h:657: note: void std::vector<_Tp, _Alloc>::insert(__gnu_cxx::__normal_iterator<typename _Alloc::pointer, std::vector<_Tp, _Alloc> >, size_t, const _Tp&) [with _Tp = int, _Alloc = std::allocator<int>]
Make sense to you? Didn't think so.