Monday 

Room 1 

09:00 - 17:00 

(UTC+02

2 Days

Using C++ Modules with Confidence

In traditional C++, the highest-level means of program composition are functions, either as free functions or class members, and aggregates like classes, structs, or unions. There exists no higher-order grouping of those into e.g. libraries or program components at the C++ language level. This deficiency is made up by solutions outside of the language such as splitting out sections of code into separate files and designating them the library interface. This may lead to underspecified, context-dependent, or accidental interfaces because there is no concept of protection of non-interface entities that should not be available to other parts of a program.

C++

In addition to that, the so-called source inclusion model and independent compilation of separate pieces of code are potentially inefficient, brittle, and error-prone. Sometimes, people aren't aware of these problems and compilers can't help to avoid them because of the fundamental limitations of the way we are used to build programs. With the advent of modules in C++20, there is now an answer to all those problems within the language itself. Despite modules reusing existing concepts that have existed since the inception of C++, their application at this level is new and probably unfamiliar. This might hinder programmers from taking advantage of the benefits that C++ modules bring. The goal of the course is to instill confidence in the adoption of modules.

The course will
- introduce you to the motivation for the addition of modules to the language
- explore the shortcomings of libraries and library interface design in the traditional world, and how to overcome them and improve
- teach the foundational concepts of modules
- give the full picture of all the options available to you to compose modular libraries
- teach how to write modules from scratch
- give guidelines on how to use existing libraries as modules
- explore the potential pitfalls and how to avoid them
- show the performance benefits of modules
- look at the current state of the development ecosystem with regard to modules
- and give you the opportunity to ask me anything about C++

About a 3rd of the time is spent on interactive material presentations, the bigger part is individual hands-on coding on your computer where you
- create clean sheet modules
- do library to module conversions
- analyze a concrete code example

In the end, you
- can create simple and composed modules
- can use modules in applications
- identify and handle problems related to modules

--------

About Daniela Engert

Daniela is a member of the ISO C++ committee and mainly participates in the study groups dealing with the development of the language and tools. She has been researching the area of C++ modules since before the introduction of C++20 and has become one of the world's leading experts in this field. She has a degree in electrical engineering and has worked in small innovative companies in the field of software and hardware development for more than 30 years. Among other things, she spent her youth researching the first microprocessors of the late 70s and has been developing software professionally for 40 years. After a long period of using many different programming languages, C++ has become her sole workhorse for the last two decades. Most of her career has been in applied digital signal processing (medical, metrology, reconnaissance, etc.), but in the last decade the focus has shifted to specialised engineering in the field of industrial non-destructive testing of semi-finished and finished steel products using ultrasound.

Daniela Engert

Daniela has a degree in electrical engineering and has been working for more than 30 years in small innovative companies in the field of software and hardware development. She has spent her youth with exploring the very first microprocessors since the late 70's, and has been creating software professionally for 40 years now. After a long time using many different programming languages, C++ has now been the exclusive workhorse throughout the last two decades. With great pleasure Daniela is now also a member of the ISO C++ committee. For the better part of her career, the domain was applied digital signal processing (medicine, metrology, reconnaissance), but during the last decade the focus shifted onto special engineering in the field of industrial non-destructive testing of semi-finished and finished steel products using ultrasound. Besides that, she loves to relax with hard metal and soft cheese, hot curries and cool jazz.