C vs C++
limmeau: In order to program productively in C++ without too many segfaults, you need a deep understanding of what's going on, why the wrong one of your three two-argument copy-constructors is being called, when the invisible initialization of superclass vtables takes place, which spurious error symptoms indicate delete[]d non-arrays and so on. It takes quite some time to learn all this. Other languages like Java will also require a mental model of the execution environment, but in most languages that model is smaller and misunderstandings are easier to find.In short: learn C++ if you expect to program in C++, but prepare to spend a lot of time before you get the good "I'm sitting on top of a seven-wheel motorcycle at 200mph, wheeee!" feeling C++ can give you.