Modern C++ Advanced

Boost Your Productivity with Modern C++

by Peter Gottschling

The information era falls upon us with full force: Google, Facebook, Twitter, Groupon, ...

Even if it appears at the first glance that IT these days only happens in the web, the backbone of web 2.0 is mostly built in C++ and C. Hence, many big internet companies hired famous C++ gurus for their technologies: Matt Austern works for Google, Andrei Alexandrescu used to work for Facebook, ... Of course, C++ is not only used for web programming but as well for operating systems, compilers, embedded systems and almost every area of software development. Even if there are hypes about new languages come and go, C++ is of timeless importance.

Mastering C++ demands some work but this is rapidely paid off multiple times by excellent productivity and optimal performance. With this course, I want accompany you a good piece along the road to masterhood. This road should not only bring work but foremost joy in programming and discovering new language features and programming tricks.

Brainstorming on future C++ with Bjarne Stroustrup (the C++ inventor)

 

Based on many years of programming experience—e.g., developing the Matrix Template Library—I want to share my C++ knowledge with you. This experience is spiced with the accumulated proficiency of Bjarne Stroustrup, Herb Sutter, Scott Meyer, and other C++ experts whose advises also originate from programming experience.

Target Audience

The course is designed for software developers who aim for excellent software characterized by intuitive interfaces and maximal performance. There is a chance that after this seminar you are still not a perfect C++ programmer. My goal for this week is that you can afterwards program perceivably more productively. That your programs are usable more flexibly and nonetheless explore the hardware as efficiently as possible. That your software becomes clearer and simpler and thus more readable and more maintainable. That the cooperation with your team will also be more productive.

Description

From our experience, especially compute-intensive software is quite often developed with obsolete programming techniques because its development dates back to the last century or is designed based on the misguiding assumption that modern programming concepts impede maximal performance. The result is that such software can only be maintained and expanded with horrendous effort.

The language C++ offers techniques that allow programmers to write elegant, expressive, maintainable, and expandable software without losing performance compared to C or Fortran. To the contrary, certain calculations cannot be realized as efficient in any other language.

Although C++ is primarily associated with object-oriented programming, we focus in this our seminars on templates (generic programming). On one hand, functions and classes are more flexible when they are liberated from the thight corset of inheritance hierarchy. On the other hand, the massive use of virtual functions decreases drastically the performance.

An important element of the seminar will be the introduction of the new standard's features.

Prerequisites

Basic knowledge in C++ and experience in practice are required.

Topics

  • New techniques
    • Range-based for-loops (C++11)
    • RValues and move semantics (C++11)
    • Initialization lists (C++11)
    • {} vs. ()? (C++11)
  • Templates (generic programming)
    • Function templates
    • Class templates
    • Variadic Templates (C++11)
    • Concepts (C++20?) (*)
    • Specialization
    • Template arguments that are not types
    • Functors
    • Safe downcast without overhead (*)
  • Type deduction in detail
    • Template arguments
    • auto (C++11)
    • decltype (C++11)
    • decltype(auto) (C++14)
    • Deduced return type (C++14)
  • Lambda (C++11)
    • Foundations
    • Generic lambdas (C++14)
    • Extended capture (C++14)
  • Standard Template Library
    • Iterator concept
    • Containers (partially C++11)
    • Functions (partially C++11)
    • Concurrency-Intro (C++11) (*)
  • Meta-programming
    • Let the compiler compute (*)
    • Providing type informations
    • Const-adaptive classes (*)
    • Expression templates

(*) These topics are omitted or significantly shortened in three-day courses. Other topics are discussed in less detail during shorter courses.

Free Consulting Included

As extra service I offer you—interest and non-disclosure of company secrets provided—to discuss and refactor your own software (as far as time allows). We will not aim for the perfect program but consider for real-world software examples various implementation options and discuss their adventages and disadvantages. (Not included in 3-day courses.)

Trainer

Peter Gottschling is author of the Matrix Template Library 4, co-author of the Boost Graph Library and other scientific libraries. He is vice-chair of DIN's programming language group and was (the last) head of the German delegation in the ISO committee for C++ standardization. He is managing director of SimuNova and taught C++ at TU Dresden, TU Berlin and Indiana University. 

Registration

To register go to the main training page.

Courses will be held in Leipzig, at Norplatz 9.

© 2017 SimuNova UG