13

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.

Blaisorblade
  • 6,438
  • 1
  • 43
  • 76
Alex Baranosky
  • 48,865
  • 44
  • 102
  • 150

12 Answers12

54

Boost:

free peer-reviewed portable C++ source libraries.

We emphasize libraries that work well with the C++ Standard Library...

We aim to establish "existing practice" and provide reference implementations so that Boost libraries are suitable for eventual standardization. Ten Boost libraries are included in the C++ Standards Committee's Library Technical Report (TR1) and in the new C++11 Standard. C++11 also includes several more Boost libraries in addition to those from TR1. More Boost libraries are proposed for standardization in C++17...

gnat
  • 6,213
  • 108
  • 53
  • 73
Donut
  • 110,061
  • 20
  • 134
  • 146
  • 4
    +1 for making your answer community wiki, even if the question wasn't. – Mark Ransom Aug 07 '09 at 15:37
  • 2
    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 Aug 07 '09 at 15:41
  • yep. This is definitely one of the biggies. – jalf Aug 07 '09 at 16:07
  • 3
    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 Aug 07 '09 at 16:57
  • 2
    How did this answer pass the 15-character minimum? – Pekka Feb 01 '10 at 22:20
20

"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
  • 243,077
  • 51
  • 345
  • 550
  • 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 Aug 07 '09 at 16:59
  • 4
    I really wish people would stop calling it "STL". It has been the C++ Standard Library for a long time now. – Kristopher Johnson Aug 07 '09 at 17:36
  • 4
    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 Aug 07 '09 at 17:43
  • 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 Aug 07 '09 at 20:17
  • 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 Aug 07 '09 at 20:26
10

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
  • 9,529
  • 12
  • 42
  • 57
  • 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 Aug 07 '09 at 16:56
  • 1
    I think it will be C++1x now :) – Tamás Szelei Aug 07 '09 at 16:57
  • @James Black: True, Visual Studio 2010 will follow the C++0x standard. Time passes by so fast! :P – Partial Aug 07 '09 at 17:09
  • 2
    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 Aug 07 '09 at 17:15
  • 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 Aug 07 '09 at 17:28
9

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

Dirk Eddelbuettel
  • 360,940
  • 56
  • 644
  • 725
  • 5
    But how much has it really influenced C++ programming as a whole? – jalf Aug 07 '09 at 16:08
  • 2
    @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. – chrism1 Aug 07 '09 at 16:17
  • 2
    Not everyone thinks MVC is a great idea. –  Aug 07 '09 at 16:21
  • 1
    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 Aug 07 '09 at 16:25
  • 5
    Actually, I would argue that MVC has had little influence on C++ programming. –  Aug 07 '09 at 16:29
  • 1
    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 Aug 07 '09 at 16:35
  • 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 Aug 07 '09 at 16:37
  • 3
    @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 Aug 07 '09 at 16:38
  • It's notable that modern Smalltalks have either abandoned MVC completely (Squeak) or radically re-architected it. –  Aug 07 '09 at 16:40
  • Qt is actually a C++ library for non C++ experts, e.g. people coming from Java (they support Java-style iterators). They moreover (used to) stay away from many esoteric C++ features, for portability reasons, but also to make the API simpler. – Blaisorblade Nov 23 '11 at 23:25
5

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
  • 257,169
  • 86
  • 333
  • 562
4

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
  • 5,971
  • 5
  • 29
  • 36
4

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.

Community
  • 1
  • 1
chrism1
  • 657
  • 1
  • 7
  • 12
  • Effective C++ came out in 1992 - that's 17 years ago. –  Aug 07 '09 at 16:30
  • 1
    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. – chrism1 Aug 07 '09 at 16:38
  • It did come out years ago, true, but the influences were not immediate then. +1 – Tim Aug 07 '09 at 20:11
  • 1
    @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 Aug 07 '09 at 20:22
  • @tim Well, I read it when it first came out, and it certainly influenced me and all the people I lent my copy to! –  Aug 07 '09 at 20:33
  • >that's 17 years ago Thanks Neil, now I really feel old! – Martin Beckett Aug 08 '09 at 18:52
3

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
  • 34,653
  • 44
  • 154
  • 278
2

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
  • 4,168
  • 20
  • 23
1
  • 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
  • 6,286
  • 7
  • 51
  • 81
1

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
  • 219,715
  • 46
  • 258
  • 445
0

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

Boost was already mentioned and I second that.

The importance of Boost is not just its efficiency and spectrum, but also the promotion of concept-based methods.

Stepanov's famous statement at http://www.stlport.org/resources/StepanovUSA.html

I find OOP philosophically unsound. It claims that everything is an object. Even if it is true it is not very interesting - saying that everything is an object is saying nothing at all.

still holds, the concept of "everything" is still every thing and not "object" - if it was "object", what would "class" then be?

And promoting those concept-based methods is in order, because contrary to common wisdom OOADP is often amazingly concept-less:

OOA is nice for reformulating problems the fancy way but we're not paid for talking fancy but for realizing machine support for workflow concepts users have for their problem domain.

OOD has more value in it if it used as a means to achieve a proper decomposition of large systems and as means to express thinking in patterns (which is quite natural for us), but it is never to be taken as a self purpose. I still recall OO "designs" from ~2000 which were presented with great ado and OO babble and featurism but were not even self-consistent.

The concept behind that method should be finding appropriate and useful abstractions, not finding every possible abstraction. Also in ~2000 I've once seen a (even multi)-inheritance hierarchy of depth 7 from which just one leaf class and its possible descendants would ever be used in the system to be created.

Finally OOP, in the closest sense, naturally tends to create state which is then carefully, and, of course, by more OO, so "More of the Same" (Watzlawick), to be protected against concurrent access. In these situations often the concept needed would be doing something instead ot the OO assembly having something.


C++ coding was 10 years ago, especially due to its "competition" with Java, quite susceptible for the OO odds mentioned, so I think that concept-based methods were a great cure. Boost libs are role models for successfully applying those methods.

Solkar
  • 1,228
  • 12
  • 22