What kind of person attends C++ and Beyond?  We wanted to know that before the event began, because we figured the more we knew about the attendees’ backgrounds, the better we could tailor our presentations to them.  Now that this year’s event is over, I thought you might be interested to see what we found out about the people who joined us in Banff.

Geographically, they came from nine countries. In no particular order, those countries were Taiwan, Germany, Canada, the United States, Brazil, Australia, England, Japan, and Sweden.  That means we drew people from five continents, which we were very excited about.  (Assuming we do another C&B, I’m going to press for free admission for the first resident from Antarctica to register.)

Our attendees’ years of experience with C++ vary, but the vast majority have between six and twenty years:

Their adoption of C++11 (nee C++0x) features in production code was surprisingly high, with over 20% permitted to use rvalue references, lambda expressions, auto variables, and regular expressions, and even more permitted to use unordered containers, std::function and std::bind, and std::shared_ptr and std::weak_ptr:

Because Herb was giving a talk on GPU programming and I was slated to explain the C++11 memory model, we asked a number of questions about people’s experience with concurrency and parallelism.  The first question asked for their years of experience with in-process concurrency (threads) other than GPU programming.  Over 60% had four or more years under their belts:

When it came to GPU programming, though, nearly 90% had no experience at all.  (This did not surprise us.)

The experience level picked up again when we asked about experience developing software using cross-process concurrency (separate processes) on a single machine, although nearly 20% had no experience with this kind of programming, a significantly higher value than for thread-based programming:

That number jumped to nearly 35% for cross-process concurrency (separate processes) on multiple machines (i.e., distributed computing), a sign that thread-based non-GPU concurrency is the most common form, at least among C&B attendees.

We were also curious about the size of the data sets C&B developers work with, so we asked.  The values were surprisingly distributed, with roughly 20% each typically working with tens, hundreds, thousands, tens of thousands, and hundreds of thousands of megabytes of data:

On the time front, over 70% of developers described their typical runtimes as being best measured in CPU-minutes, but there were a few whose runs corresponded to CPU-Months or CPU-Years.  (How’d you like to be the person responsible for a bug discovered near the end of a multiple CPU-year run?)

Finally, we asked about which of our books they’d read.  Contrary to what you might think, this had nothing to do with stroking our egos. Instead, we wanted to know what kind of information attendees were likely to have already absorbed.  Given a conference with the title “C++ and Beyond,” it’s not terribly surprising that Andrei’s book on D fared worse than the others. I was pleased to see that Effective C++, Third Edition got the highest ranking, because, you know, there’s something to be said for bragging rights over Herb and Andrei :-)