This post adequately explains why learning modern C++ is useful, but -- speaking as someone whose C++ experience looks more like hacking together C-style code with objects -- what are the best resources to actually learn modern C++?
If you're an experienced C++03 programmer, the features of C++11 make perfect sense and are intuitive to use, except for some details around how the heck rvalue references work and the reference collapsing rules (and what exactly std::move and std::forward do and how to use them). (But why you want rvalue references and move semantics should be quite clear.) I think, for such users, the Wikipedia article on C++11 is the place to go, and then look at what C++14 adds.
For some C programmer that doesn't "get" C++, I'd have recommended the book Accelerated C++, written before C++11 came to be. Now I'm not so sure that's the best recommendation, but it's still a good one. On the other hand, one could say, hey, the real meat of knowing how to use C++ is just learning how to be safe in the presence of exceptions. After that, it's just a matter of restricting yourself to stuff you understand (and knowing not to use iostream :-).
(Sorry, I think this is a somewhat mediocre answer.)
> But here is a set of language and library features that will definitely make you more productive, and that you must learn to remain a relevant C++ developer
Yeah, that poor things keeps improving. But ditching it is still the most productive option available.
That statement isn't constructive either and also tends towards zero signal. Even if "du-jour" languages don't end up being used in production, some of them add really nice new concepts/ideas. Take for example Rust and its compile time borrow/ownership checking.
Judging by your argument, we all should've sticked with C and wouldn't even need C++.
Taking a look beyond the current horizon sometimes ends up being useful.
Judging by your argument, we all should've sticked with C and wouldn't even need C++.
Perhaps I was unclear.
My argument is that you should use the right tool for the situation, given all the context of that situation.
Simply stating that language X simply shouldn't be used anymore is an utter nonsense. We absolutely should not have stuck with C. That's crazy, and you know that's not what I was suggesting; please drop that passive-aggressive nonsense. We're not children and we don't need it.
New languages (barring toy languages that are written for the fun of it, such as Ook!) arrive to meet particular needs that particular people have in particular situations, be that to explore something in programming or for actual application. That's a lot of specific context. To take a new language and declare that because this new language exists an existing one should now be simply dropped is to ignore all the context and, as a bonus, reveal oneself to be very inexperienced or to hold a very narrow view of programming. If such people are lucky, someone will contend their point. If they're unlucky, the people around them will simply say nothing.
I kind of hate when people say "modern C++", because it doesn't mean anything. Are we talking about C++11? Automatic memory management features, lambdas, what?
9 comments
[ 3.6 ms ] story [ 35.3 ms ] threadFor some C programmer that doesn't "get" C++, I'd have recommended the book Accelerated C++, written before C++11 came to be. Now I'm not so sure that's the best recommendation, but it's still a good one. On the other hand, one could say, hey, the real meat of knowing how to use C++ is just learning how to be safe in the presence of exceptions. After that, it's just a matter of restricting yourself to stuff you understand (and knowing not to use iostream :-).
(Sorry, I think this is a somewhat mediocre answer.)
Yeah, that poor things keeps improving. But ditching it is still the most productive option available.
Heard it last year. And the year before that. And the year before that. And the year before and before and before and before.
Trite statements like this are meaningless nonsense carrying so much hidden context that they're effectively all noise and zero signal.
Judging by your argument, we all should've sticked with C and wouldn't even need C++.
Taking a look beyond the current horizon sometimes ends up being useful.
Perhaps I was unclear.
My argument is that you should use the right tool for the situation, given all the context of that situation.
Simply stating that language X simply shouldn't be used anymore is an utter nonsense. We absolutely should not have stuck with C. That's crazy, and you know that's not what I was suggesting; please drop that passive-aggressive nonsense. We're not children and we don't need it.
New languages (barring toy languages that are written for the fun of it, such as Ook!) arrive to meet particular needs that particular people have in particular situations, be that to explore something in programming or for actual application. That's a lot of specific context. To take a new language and declare that because this new language exists an existing one should now be simply dropped is to ignore all the context and, as a bonus, reveal oneself to be very inexperienced or to hold a very narrow view of programming. If such people are lucky, someone will contend their point. If they're unlucky, the people around them will simply say nothing.