tags:

views:

700

answers:

11

I started programming in C++. It was my first language, but I have not used it in many years.

What are the new developments in the C++ world? What are the BIG things.

Technologies, books, frameworks, libraries, etc.

Over the last 7-8 years what are the biggest influences on C++ programming?

Perhaps we could do one influence per post, and that way we can vote on them.

+37  A: 

Boost

Donut
+1 for making your answer community wiki, even if the question wasn't.
Mark Ransom
Thanks, I think it's a good CW question; as the C++ language is ~30 years old, reflecting on new developments per the OP's description is (I think) a useful and enlightening activity.
Donut
yep. This is definitely one of the biggies.
jalf
Boost is so influential that the new spec seems to be including features almost directly from it, so it had a large influence on this spec.
James Black
How did this answer pass the 15-character minimum?
Pekka
+7  A: 

Qt is also pretty useful, 'pretty', well-documented, portable, and free (now under LGPL).

Dirk Eddelbuettel
But how much has it really influenced C++ programming as a whole?
jalf
@jalf: I would argue that those who use Qt will have improved their C++ somewhat since it imposes certain design patterns on the user; MVC and Observer spring to mind.
Not everyone thinks MVC is a great idea.
anon
Whether or not everyone thinks it's a good idea is orthogonal to whether or not it has influenced C++ programming. I could probably dig someone up who doesn't think references are a great idea, but that doesn't render them insignificant ;-)
Steve Jessop
Actually, I would argue that MVC has had little influence on C++ programming.
anon
Agree with Neil. That pattern was know long before C++ (go back to smalltalk) it is a well known OO pattern but it has no effect on the language design or use.
Martin York
Qt on the other hand has made C++ more accessible to new developers who want to implement an event driven application (ie a windowed application).
Martin York
@onebyone Exactly my point. QT is useful for a lot of things, certainly, but has it really changed the face of C++ development *in general*? Another way to put it might be, how big has its influence been on people who *don't* use QT? Take Boost for example, its influence has been huge, even on people who don't use it. Boost has still pioneered techniques and practices that affect everyone, even if they don't use that particular Boost lib.
jalf
It's notable that modern Smalltalks have either abandoned MVC completely (Squeak) or radically re-architected it.
anon
+4  A: 

Although it started in 1998, but it really got going in the last 7-8 years, the boost libraries have added a huge amount of high quality code, which in many ways has helped keep c++ somewhat up to date with the capabilities of more modern languages.

DeusAduro
+1  A: 

Commercially available whole-program and profile-guided optimization from various C++ compilers, notably Intel's and Microsoft's. In particular, cross-module inlining makes it easier to write well-factored code that blazes.

Drew Hoskins
+17  A: 

"Modern C++", STL, template metaprogramming and Generic programming.

(And yes, they're one single answer, because they're pretty closely intertwined and together represent a complete paradigm shift in C++ development. While some of them are older than 8-9 years, it's pretty much in the last years that they've really gained traction and really left "C with classes" in the dust.

jalf
I would have said STL more than Boost. Although STL is more than 7years old it has only become mainstream in the last few years (since MSVC supported it properly)
Martin Beckett
I really wish people would stop calling it "STL". It has been the C++ Standard Library for a long time now.
Kristopher Johnson
No, I said STL and I meant STL. The STL is the library designed by Stepanov, and a lot of it got adopted into the standard library, yes. But it is the STL part of it that has had a big influence on C++. Iostreams have not. The C legacy headers have not. The two terms are not interchangable. The C++ standard library encompasses a lot more than the STL subset of it (which, technically, isn't STL either, since some modifications were made when it was adopted into the standard)
jalf
jalf, I'm missing template-meta programming (TMP) in your list. It's the base of a lot of what's in boost, in MC++D, and the STL (although they weren't yet calling it TMP back then). Since TMP is underlying so many new stuff, to me it is the biggest influence, even though most C++ programmers don't write it themselves.
sbi
True. I kind of considered it an implicit part of the things I mentioned but you're right, it should probably be listed explicitly. Will edit my post. :)
jalf
@jalf: Good, now I upvoted it. `:)`
sbi
+3  A: 

Good books to help prospective C++ programmers learn how to use the language properly. Effective C++ by Scott Meyers was a massive help for me. There are other threads on C++ books.

Effective C++ came out in 1992 - that's 17 years ago.
anon
Fair point, although I've got the 3rd edition which was 2005 (IIRC) and it covers some recent additions to the language such as TR1. My point was that good documentation is an important influence on keeping C++ relevant.
It did come out years ago, true, but the influences were not immediate then. +1
Tim
@Neil: When the first two editions came out, most new C++ programmers came from C. Now most come from languages like Java, C# and the like. That's one reason Scott completely overhauled it for the 3rd edition. Another is that you cannot write a book like this nowadays without mentioning TMP, boost and other modern stuff. So, yes, IMO the 3rd edition is very up-to-date. I recommend reading it. `:)`
sbi
@tim Well, I read it when it first came out, and it certainly influenced me and all the people I lent my copy to!
anon
>that's 17 years agoThanks Neil, now I really feel old!
Martin Beckett
+3  A: 

Developers who actually understand OO rather than C with Classes.

Though the field is still full of C programmers with think they know C++ (but don't they are just C with Classes people).

Martin York
+7  A: 

C++0x

Modern C++ is not only a OOP language. C++0x (the new standard) will include many new additions. It might take some time before it is applied thoroughly in every IDE/compilers but it will add a lot to an already excellent language.

Here is a list of new features of the new standard: C++0x

**Edit: C++0x is the result of the past 8-9 years (thank you jalf).

Partial
From what I read it doesn't sound like it will take long to get it into the compilers, the main ones are prepared to incorporate the new standard quickly.
James Black
I think it will be C++1x now :)
Tamás Szelei
@James Black: True, Visual Studio 2010 will follow the C++0x standard. Time passes by so fast! :P
Partial
Is C++0x really a big influence *over the last 8-9 years*? ;)I agree it will become very significant once it is finalized and gains compiler support. But today, its influence is nonexistent.@Partial: VS2010 supports three C++0x features. It certainly does not follow the standard as a whole.
jalf
C++0x is rather the result of the influence of the past 8-9 years. @jalf: Sorry about that, I did not want to say the standard as a whole but instead mention that in such a short notice some of it will be part of it.
Partial
A: 
  • It’s usually not the first language you learn at college or university anymore. This makes prospective learners appreciative of C++ and eases them into it.

  • The internet, video editing sites, and forums that help programmers of all levels to get help and feedback in a very timely fashion.

dassouki
+1  A: 

To me, besides the already mentioned boost, TMP, MC++D etc., the shift away from teaching C++ as "C plus some extras" towards "C++ is a very different language that's not to be used like C" is very important. That would make Koenig/Moo "Accelerated C++" is a huge influence, even though it's a beginners book and even though it's a beginners book that has (with only 250 pages) much too steep a learning curve.

Stroustrup had been saying things about a better language hidden within C++ and the need to teach it better, but I never really understood what he meant until, after 10 years of C++ programming and experience in TMP, I read the book and was enlighted. :^> It's not that I learned any new technical facts from the book. It just taught me a better way to look at (and teach) C++.

And, yes, I have been programming different since then.

sbi
+2  A: 

Scott Meyers wrote about most important C++ people and the most important C++ books. These all had a major influence on how programmers write C++ today.

StackedCrooked