Sunday, September 14, 2014

CppCon 2014 Is Over

Just got back from CppCon (http://cppcon.org/), *WOW* what a great conference for C++.

WOW AGAIN for a Great Conference.  Really heavy-hitters there, with information I don't know is available elsewhere.  For example:
  • Google C++ code base is 100 million lines, is managed as a single code base serving many projects, and they don't use exceptions in it anywhere.  Techniques on managing code base are impressive.
  • Similarly (from other presentations) lots of code bases don't/can't use exceptions, and this is not a, "solved problem" (especially for the game industry).
  • Facebook (Andrei Alexandrescu) "cheats" with "stealing bits" from their implementation of a "shared-pointer" to "steal-bits" for the "object-count", with the understanding that the count rarely goes above "4".  Correctness is sacrificed to increase performance 0.4%, which is a "huge win" for server load and electricity (saves $millions a month).  "Leak, Log, and Leave" is what they do for the uncommon correctness failure-case.
  • Empty constructors and empty destructors when "inlined" are not "free", and in large code bases can have significant cost.  Optimizations are not intutive, and must be measured.  (Facebook)
  • Microsoft compiler team, library team, STL team was represented.  Really fantastic talks, and these guys are smart.  If you had any concerns about the toolchain, they are absolutely going in a clear and strong direction.  (My biased recommendation for us is to move off our reference compiler of MSVC2008 to MSVC2013, and then move asap to the next compiler (probably released early next year) to make it our "reference-compiler" for an extended period of time (I am not concerned about "early adoption" on this next compiler, and I _do_ want the new language features).
  • Lots of Clang goodness -- have a look at ClangFormat (http://clang.llvm.org/docs/ClangFormat.html) and Clang AddressSanitizer (http://clang.llvm.org/docs/AddressSanitizer.html)
  • Great talks by Intel on concurrency/parallelism, interfacing with hardware, etc.  Other HW vendors there too like IBM, panel discussions on issues, etc.  It's increasingly obvious that C++ developers need to have greater understanding of hardware architectures to create well-engineered designs that take advantage of all the cores and caches.
  • Tremendous consistency in low-level talks on coding to consider the instruction-cache, L1 and L2 caches, other memory issues related to performance.  General/common knowledge:  Let your data structures take advantage of understanding that fitting inside 64-byte units is a Big Win for cache optimization, consider data layout for word-alignment, and consider allowing array-processing of raw contiguous data.  Also, using "std::vector<>" will never get you in trouble, many other "std::container<>" things can often get you in trouble.
  • Game industry had strong presence, including a keynote by Mike Acton (InsomniacGames) on, "Data Oriented Design".  GREAT example of engineering in the face of hardware constraints, seemed similar to an approach of "OO-using-C" (but using C++), talked about failed C++ design approaches for games.  REALLY made a lot of the audience uncomfortable (you've got to watch the video when it posts -- it will become a classic, was really a "punch in the gut" for some people), but I thought it was one of the highlights of the week (there were so many), and he wasn't wrong.
  • Some wickedly serious template metaprogramming techniques, including new ones now possible through C++14, including expressing previous meta-programming approaches with much greater elegance/readability and less work.  IMHO there is a strong place for this, especially inside libraries.
  • It is estimated 3-4M C++ developers exist in the world (Google has 4K C++ developers).  Tech book sales were down 3% over the past year, but C++ book sales were up 4% (C++ is growing in adoption).
  • Bjarne is really proud of his new book, "A Tour Of C++" (Sep-2013), and many people agree.  You should make it a gift to your programmer peers that don't currently do C++, or to those entering the field.  Should be required reading for those new to C++, but there's stuff in there for experienced C++ programmers that might want to "reset-their-thinking" to the C++11/14 mindset from the C++98 mindset (which compiles just fine also).  It's really a fast read -- 180 pages.  Get it.  Read it.  Know it. Love it. (http://www.stroustrup.com/Tour.html)
  • Lots of "Lightening Talks", 5-15 minutes each organized into sessions pre-regular program (morning) and post-regular-program (evening).  Great way to see what people are doing, and lots of interesting commentary and insight, "from the trenches".  These were very well organized and attended, with very high quality presentation.  You'd definitely walk away with great ideas on what to do (or not do).  Fun stuff.  This really helped round out a very full program so you absolutely would not have been bored on any day.
  • C++ language standard is maturing in a non-trivial and deliberate way through the Standard C++ Foundation (http://isocpp.org/) , especially for more parallel/concurrent, and more intimate interface with hardware.  It really is driven by the community -- you write a paper (proposal) so they can review it, and it may eventually get codified into the language or standard library.  They are always looking for people to review or write papers, or work in any of the working groups.  Anyone can attend, members can vote.  Especially when compared with what other programming languages do for their standardization and evolution, the Standard C++ Foundation IMHO really represents a great place for the community to substantively address real-world issues (it is a tremendous asset to our community).
This is just a subset, because I could not attend all talks.  All talks were professionally recorded, and will be posted online (for free).  Watch them.

CLOSING REMARKS 

This was a "first-year" conference, and it was a huge success (about 600 people, it exceeded their goals).  There is a strong possibility that it will double in size for next year, and they have a venue that can handle that.

It was tough to get your talk accepted -- so many submissions, I'd guess the acceptance was 1:3 or 1:4 (not sure).  There were many very high quality submissions that were rejected merely because the tracks were full.

Qt was not really represented.  That is understandable because there was SO MUCH other C++ there, and these dates were "in-conflict" with QtDevDays (http://www.qtdeveloperdays.com/) and KDE/Akademy (http://akademy.kde.org/), but I really think the Qt Community should consider, "coming out in force" next year.  Qt is a C++ library and framework, solving real problems in novel ways that will benefit this audience.

That's not to say, of course, that attendees were unfamiliar with Qt.  They know Qt, many of them ship using Qt.  They just didn't talk about Qt.  I guess in that respect it was like "Fight Club" (which we won't talk about).

LAST STATEMENT

Even though it was a, "first-year" conference, it is interesting to note that a "culture" is clearly starting to form.  It was incredibly open, and collegial, and supportive across the different industries and companies -- for newcomers and for experienced people alike (although it is most definitely a place where experienced people can finally discuss their advanced issues when they have nobody else at their company to help).

These were incredibly smart people merely coming together to talk about problems and solutions and experiences in using and growing C++.  I'm going back again next year (assuming their restraining order against me has expired by then).

[**UPDATE**, Fri-19-Sep-2014]

**CppCon 2015 Dates**

  • CppCon 2015 will be Sep 20-25, 2015, in Bellevue, Washington.
  • Look for a "Call For Submissions" and opening of early registration in early 2015 (announcements at http://cppcon.org/ )

[**UPDATE**, Tue-30-Sep-2014]