Bjarne and I are speaking in Chicago on Tuesday night

Bjarne Stroustrup and I are giving back-to-back talks on Tuesday night in Chicago, while we’re both in town for the standards meeting next week. Admission is free. Register by email here (and ignore the “it’s full / sold out” note on the page — see below.)

Note that my talk will be 80% new material followed by the last 5-10 min of my GoingNative 2013 keynote, so even if you’ve seen that talk most of the material will be new. Here are the coordinates:

A joint Chicago Chapter ACM and Chicago C/C++ Users Group meeting

Broad-spectrum C++/C++14 (Bjarne Stroustrup)

One C++ (Herb Sutter)

Tuesday, September 24, 2013
Doors open approximately 6:30 pm
Presentations run 7:00 pm – 9:30 pm

Renaissance Chicago Downtown Hotel
1 West Wacker Drive, Chicago, IL 60601
Room A/B [or a nearby larger room, just follow the crowd when you arrive]

Note: The page says the event is at capacity and the primary registration link balks, but there is space because they keep expanding the room — it has already expanded from the original 100 seats to 200 and currently 300 seats, and they’re looking into moving to a still larger room as we speak. So do add yourself to the waiting list via this email link as it looks likely you will still be able to get in.

Reader Q&A: “Will C++ remain indispensable…?”

A reader wrote me today to ask the following. Since this is a FAQ, I thought I’d post the answer here.

With the advent of C++11 and upcoming C++14 and C++1y, the language has strapped much of the digital electronics industry under its belt. High performance software, Libraries, Embedded, Research, Web backends, our everyday software, and trivial systems; Everything directly or indirectly depends on C/C++.

My question is -: Will C++ remain indispensable for creating above mentioned class of production software for very long foreseeable future ?

Short answer: Yes, but don’t stop there because that’s not all of what C++ is about!

Expanding on “Yes”: Yes, I think so. The main reason is that several long-term industry trends now in progress favor C++’s core strength of “efficiency per Watt/cycle/transistor + full flexibility and control” in a portable language. For example, for mobile (notebook, tablet, phone) and cloud datacenter (Facebook, Google, etc.) app environments, both of which are clearly large and will continue to experience long-term growth, the critical measure has already switched to “performance per Watt”… if that’s your primary constraint and cost, you’ll usually end up at either C or C++, and the latter gives you stronger abstraction. And performance per Watt is just one example; besides that one, as other trends like the power wall and the eventual end of Moore’s Law continue to grind out, the value proposition of “performance per Watt/cycle/transistor + full flexibility (to express what you need) and control (over hardware and things like memory layout)” will remain valuable in the long term.

Expanding on “but don’t stop there because that’s not all of what C++ is about!”: Old C++ used to be harder, but today modern C++ is far from limited to those categories. As I pointed out my “One C++” talk last week (start around the 42:00 mark), C++ is already a de facto standard language to teach artists (not professional programmers) in the world’s top design schools such as Parson’s, notably using C++ plus the openFrameworks library, and C++ is also a widely used library outside schools for creative interactive applications (again often by people who are not programmers by training), notably using C++ plus the Cinder library.

Other languages are important and useful too, and often are built on top of C++, and that’s great – there is no such thing as “one language fits all,” and everyone realizes that like any language C++ is not for everyone or every use. Nevertheless, C++ is very horizontal, meaning usable in many domains, and the cases where C++ is applicable and actively used is growing, not shrinking; one effect is that we have to relearn what a “C++ programmer” is because that group is getting increasingly diverse. As we continue to make C++ more accessible, I expect we will continue to hear about its being used more and more even by people we didn’t expect, like artists and financial gurus who are not programmers by training and whom we never used to think of as C++ programmers… it’s happening already.

My “One C++” talk from GoingNative is now posted

I see the recording went live this morning. Thanks again to all the speakers and in-room and worldwide attendees for coming and watching!

Day 2 Keynote: One C++

Herb Sutter

My favorite part was seeing the response to the challenge to write a cool graphical interactive C++ program from scratch in 24 hours using a library most had never seen before – Cinder or openFrameworks. In two other GN segments we showed the results. Here’s they are:

Herb’s UI Challenge Results

My Favorite C++ 10-Liner, plus UI Challenge Results Part 2 / Closing comments

Thank you all for coming! It was a blast.

Visual Studio 2013 RC is now available

At Build in June, we announced that VC++ 2013 RTM “later this year” would include the ISO conformance features in the June preview (explicit conversion operators, raw string literals, function template default arguments, delegating constructors, uniform initialization and initializer_lists, and variadic templates) plus also several more to be added between the Preview and the RTM: non-static data member initializers, =default, =delete, “using” aliases, and library support for same plus four C99 features.

Four days ago in my talk at GoingNative (recording was just posted today!), I updated that by saying we would ship an update to VC++ 2013 Preview with all of those features, and again a go-live license, “in September.”

Well, today is “in September”: Today we shipped Visual Studio 2013 RC, which includes all of those features in a production-supported go-live Visual C++ product. Thank you very much to everyone on the front-end, back-end, and other VC++ teams for making this possible! See that post for additional features – there’s more there than just conformance work, from new auto-vectorizer optimizations to graphics and native/Javascript debugging to quite a bit more.

What’s next? As announced last week we’re going to be shipping another CTP in the fourth quarter (compiler tech preview, think of it as an “alpha”) containing another bunch of conformance features. It’s designed to give you early access to a raft of new conformance features in Visual C++, including the following (the first couple are small but I’m breaking them out because the usual C++11/14 conformance lists do it that way):

  • __func__
  • Extended sizeof
  • Implicit move generation
  • Ref-qualifiers: & and && for *this
  • Thread-safe function local static initialization (aka “magic statics”)
  • noexcept (note: this is unconditional noexcept; the CTP likely won’t have the noexcept(expr) style yet)
  • constexpr (note: except for constructors, so the CTP won’t support literal types yet)
  • C++14: generalized lambda capture
  • C++14: auto function return type deduction
  • C++14: decltype(auto)
  • Bonus: “await” as currently proposed for the ISO Concurrency TS

Those are the “high probability” features to make it into the CTP. There’s a chance we might also get a couple more “medium probability” features into the Q4 CTP, such as C++14 generic lambdas, but never fear, we’re implementing them all – whatever features don’t get into this CTP will be at the front of the next batch as we push toward full C++11/14 conformance including the C++14-accompanying specifications for the file system library, basic networking library, and especially Concepts Lite. We’ll keep you posted as we know more.

Livestreamed talk at GoingNative this week: One C++

Don’t forget that the year’s great C++-fest GoingNative 2013 starts tomorrow morning and will be livestreamed on the Channel 9 home page.

Don’t miss the opening keynote by Bjarne Stroustrup at 9:00am Seattle time on Wednesday (other time zones). It will be followed by many other insightful and enlightening talks, from many of the gurus of C++. The first two days are about Standard C++ on all platforms; the third day contains a mix of portable platform topics and Microsoft-specific content that I think will be of interest to people working on other platforms too.

My talk is first thing Thursday, 9:00am Seattle time:

Day 2 Keynote: One C++

After a few minutes giving a promised update on VC++ conformance progress, I’ll switch to pure Standard C++ for the rest of the talk and focus on three topics:

  • ISO C++ update: The latest news from C++14 standardization now that the CD comment ballot recently concluded.
  • Portable C++ libraries update: I mentioned this at the last GoingNative, and here’s the status update people have been asking me for. This topic will get extra time for emphasis and news.
  • One C++: You’ll see what I mean…

I hope that you’ll find it to be informative, and leave with at least one or two thoughts you weren’t expecting to hear about and maybe with a different view of C++ than you had before.

In addition to the livestream, the entire conference will also be available on demand. Note that sessions typically take a few days to post after they occur, so if you miss a talk on the live feed, just be patient and it will appear.

Pre-emptive FAQ: Every time we do this, someone is disappointed that the livestream doesn’t work on their iPads or some other popular hardware. But it actually does work – just look for the alternative-format link if it doesn’t autodetect. You should be able to view it on any major platform.

Enjoy!