Call for Class Proposals

A call for next CppCon:

Call for Class Proposals

From the article:

The conference is asking for instructors to submit proposals for classes to be taught in conjunction with next September’s CppCon 2016.

If you are interested in teaching such a class, please contact us at [email protected] and we’ll send you an instructors’ prospectus and address any questions that you might have.

CppCon 2015: Last online videos

The videos of CppCon 2015 are coming online. You can see them all here: Youtube

Here are the most recent ones:

  • Evolving Legacy Code
  • Functional programming: functors and monads
  • Benchmarking C++ Code
  • Transactional Memory in Practice
  • Declarative Control Flow

 

Evolving Legacy Code, by Rachel Cheng & Michael VanLoon

We will be presenting on the evolution of a legacy monitoring subsystem modernized to C++11 with enhanced interfaces and better programming techniques. The presentation will cover some abstracted example problem areas, the solutions, and talk about the strategy employed to modernize the code.


Functional programming: functors and monads, by Michał Dominiak

Following the 'Applying functional programming in code design' session from Wednesday, I'd like to conduct a 'crash course' on functors and monads, and why they are important - and useful - regardless of the language you are writing code in.


Benchmarking C++ Code, by Bryce Adelstein-Lelbach

With the ending of Moore's Law and the rise of multicore systems, programmers from across the industry are increasing forced to develop and maintain highly performance sensitive software. For C++, a language frequently used for performance sensitive projects, benchmarking and performance analysis is especially important. Developing good benchmarks can be tricky; gathering and analyzing data from benchmarks can be an even greater challenge.

This talk will discuss techniques and best practices for writing C++ benchmarks using facilities from the standard library and Boost. We'll also cover the development of performance unit/regression tests. We'll discuss the statistical best practices for gathering data, as well as techniques for benchmarking a variety of different metrics - time, memory, algorithmic complexity, etc.

The main topics which will be covered:

* Statistical Best Practices (dealing with uncertainty, achieving statistical confidence, how to sample)
* Time-Based Benchmarking (best practices for timing, derived time-based metrics)
* Non-Time-Based Benchmarking (memory, algorithmic complexity in time and space, etc)
* Techniques for C++-specific Performance Metrics (counting copies/moves, allocator tricks)
* Converting Benchmarks into Tests


Transactional Memory in Practice, by Brett Hall

Transactional memory has been held up as a panacea for concurrent programming in some quarters. The C++ standardization committee is even looking at including it in the standard. But is it really a panacea? Has anyone used it in a shipping piece of software? There are scattered examples, mostly from the high-performance and super-computing realms. On the other end of the spectrum, at Wyatt Technology we've been using transactional memory in a desktop application that does data acquisition and analysis for the light-scattering instruments we build. That application is called Dynamics and we've been using a software transactional memory system in it for four years now. This talk will detail how our system works, how well it worked, and what pitfalls we've run into. Prior experience with transactional memory will not be assumed, though it would help if you have experience programming threads with locks and an open mind about alternatives and why we're looking for them.


Declarative Control Flow, by Andrei Alexandrescu

Getting exception handling right is a perennial problem in C++ that has eluded systematization. Not for much longer. New language and library developments make it possible to handle exceptions in a declarative manner, leading to drastic code simplification.

This talk discusses an alternative approach to handling exceptional flow that eliminates the need for small ancillary RAII classes, try/catch statements that rethrow, and other cleanup mechanisms. The popular Scope Guard idiom gets a spectacular generalization. Statements specify in a declarative manner actions to be taken if the current scope is left normally or via an exception. The resulting code is simpler, smaller, and easier to maintain.

CppCast Episode 30: Stop Teaching C (When Teaching C++) with Kate Gregory

Episode 30 of CppCast the only podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Kate Gregory to talk about why we should stop teaching C (when teaching C++).

CppCast Episode 30: Stop Teaching C (When Teaching C++) with Kate Gregory

by Rob Irving and Jason Turner

About the interviewee:

Kate Gregory has been using C++ since before Microsoft had a C++ compiler, and has been paid to program since 1979. She loves C++ and believes that software should make our lives easier. That includes making the lives of developers easier! She'll stay up late arguing about deterministic destruction or how C++ these days is not the C++ you remember.

Kate runs a small consulting firm in rural Ontario and provides mentoring and management consultant services, as well as writing code every week. She has spoken all over the world, written over a dozen books, and helped thousands of developers to be better at what they do. Kate is a Microsoft Regional Director, a Visual C++ MVP, an Imagine Cup judge and mentor, and an active contributor to StackOverflow and other StackExchange sites. She develops courses for Pluralsight, primarily on C++ and Visual Studio. In 2014 and 2015 she was Open Content Chair for CppCon, the largest C++ conference ever held, where she also delivered sessions.

Bjarne Stroustrup on the 30th anniversary of Cfront (the first C++ compiler) -- A. Regat-Barrel

cpp30.PNGHow time flies -- 30 years ago today, the Cfront 1.0 compiler and the first edition of The C++ Programming Language were officially released. In celebration of the event, here's a new interview with Bjarne Stroustrup.

Bjarne Stroustrup on the 30th anniversary of Cfront (the first C++ compiler)

by Aurélien Regat-Barrel

Candidate for favorite quote: "I did learn a fair bit about C++ by trying to explain it to people." Experienced instructors will all tell you the same thing -- you really grok something after you've taught it to others. Thanks for 30+ years of teaching, Dr. Stroustrup!

30 Years of C++ -- Aurélien Regat-Barrel

Aurélien Regat-Barrel interviewed Bjarne Stroustrup about the first release of CFront (the first C++ compiler), exactly 30 years ago.

30 Years of C++

by Aurélien Regat-Barrel

From the article:

Aurélien Regat-Barrel gives an overview of the evolution of the language and talks with Bjarne Stroustrup about the first publication of "C++ The Programming Language", how he experienced the evolution of the language and they close the interview with an outlook of what is coming in the future.

 

Overload 129 is now available

ACCU’s Overload journal of October 2015 is out. It contains the following C++ related articles.

Overload 129 / PDF

From the journal:

Description : Concepts in C++11 had many false starts. Andrew Sutton show why they are a big deal now they are with us. by Andrew Sutton

Description : Concepts are abstract. Jonathan Coe and Andrew Sutton provide us with a concrete example of their use. by Jonathan Coe

 

 

Improving performance and maintainability through refactoring in C++11 -- Garcia, Stroustrup

garcia-stroustrup.PNGIn the "writing better code" department:

Improving performance and maintainability through refactoring in C++11

by J. Daniel Garcia and Bjarne Stroustrup

Abstract:

Abstraction based programming has been traditionally seen as an approach that improves software quality at the cost of losing performance. In this paper, we explore the cost of abstraction by transforming the PARSEC benchmark fluidanimate application from low-level, hand-optimized C to a higher-level and more general C++ version that is a more direct representation of the algorithms. We eliminate global variables and constants, use vectors of a user-defined particle type rather than vectors of built-in types, and separate the concurrency model from the application model. The result is a C++ program that is smaller, less complex, and measurably faster than the original. The benchmark was chosen to be representative of many applications and our transformations are systematic and based on principles. Consequently, our techniques can be used to improve the performance, flexibility, and maintainability of a large class of programs. The handling of concurrency issues has been collected into a small new library, YAPL.

CppCast Episode 29: Expression Templates with Joel Falcou

Episode 29 of CppCast the only podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Joel Falcou to discuss Expression Templates.

CppCast Episode 29: Expression Templates with Joel Falcou

by Rob Irving and Jason Turner

About the interviewee:

Joel Falcou is an assistant professor in France where he works on torturing compilers to get the best performance out of modern hardware. He's an active member of the Boost community and CTO of NumScale, a start-up aligned with parallel processing tools.

Bitesize Modern C++ : std::array--Glennan Carnie

Some details about arrays in C++:

Bitesize Modern C++ : std::array

by Glennan Carnie

From the article:

C++98 inherited C’s only built-in container, the array. Arrays of non-class types behave in exactly the same way as they do in C. For class types, when an array is constructed the default constructor is called on each element in the array...