Okay, this comment will sound trollish, but that's not my intent. I am not an C++ advocate by any stretch of imagination and I presently program in Java for living (and certainly like my job). Note, however, I am also speaking of in the context of professional programming, not open source projects/communities.
I tend to find that C++ jobs and the C++ developer community is usually (key word being usually, not always or even "almost always") more pleasant than the Java and even dynamic language jobs and communities.
I'd guess first reason is that C++ isn't very useful when you're doing simple work (such as data base driven websites, although it's certainly possible e.g., okcupid).
The sort of projects where only C or C++ make sense tend to just be more interesting (embedded, systems programming, high performance/low latency computing).
As it isn't an easy language, it takes more motivation than just money to learn it when there are other choices on the market. It's difficult for all the wrong reasons: not because it introduces powerful concepts like Lisp and ML-family languages do (which take time and effort to learn and understand), but because of complexities of manual memory management (especially if your dev organization doesn't like boost::shared_ptr and boost::scoped_ptr), inadequate standard libraries (stl and boost are nice -- again, if your dev organization allows you to use them -- but you almost always have to go beyond them and build your own data structures), etc... However as a result of the difficulty barrier, people who program in it tend to be smart and passionate and are more likely to write tools in Python and Perl and learn Haskell in their free time.
Additionally, when the PHB mandates C++, he can appeal to the developers' favourite (and most dangerous) indulgence: premature optimization instead of telling the truth ("I don't want to get fired if I screw up, so I am going with Industry Best Practices"). I've seen organizations go Perl to C++ and OCaml+Scheme to C++. There would be discontent, but there usually wouldn't be an exodus. I've never seen companies go Perl to Java or C++ to Java without an exodus of developers (either before the switch, allowing the switch to happen, or after, caused by the switch).
Comments
Okay, this comment will sound trollish, but that's not my intent. I am not an C++ advocate by any stretch of imagination and I presently program in Java for living (and certainly like my job). Note, however, I am also speaking of in the context of professional programming, not open source projects/communities.
I tend to find that C++ jobs and the C++ developer community is usually (key word being usually, not always or even "almost always") more pleasant than the Java and even dynamic language jobs and communities.
I'd guess first reason is that C++ isn't very useful when you're doing simple work (such as data base driven websites, although it's certainly possible e.g., okcupid). The sort of projects where only C or C++ make sense tend to just be more interesting (embedded, systems programming, high performance/low latency computing).
As it isn't an easy language, it takes more motivation than just money to learn it when there are other choices on the market. It's difficult for all the wrong reasons: not because it introduces powerful concepts like Lisp and ML-family languages do (which take time and effort to learn and understand), but because of complexities of manual memory management (especially if your dev organization doesn't like boost::shared_ptr and boost::scoped_ptr), inadequate standard libraries (stl and boost are nice -- again, if your dev organization allows you to use them -- but you almost always have to go beyond them and build your own data structures), etc... However as a result of the difficulty barrier, people who program in it tend to be smart and passionate and are more likely to write tools in Python and Perl and learn Haskell in their free time.
Additionally, when the PHB mandates C++, he can appeal to the developers' favourite (and most dangerous) indulgence: premature optimization instead of telling the truth ("I don't want to get fired if I screw up, so I am going with Industry Best Practices"). I've seen organizations go Perl to C++ and OCaml+Scheme to C++. There would be discontent, but there usually wouldn't be an exodus. I've never seen companies go Perl to Java or C++ to Java without an exodus of developers (either before the switch, allowing the switch to happen, or after, caused by the switch).