Bjarne Stroustrups FAQ makes it crystal clear. One of the design goals for C++11 was it to make C++ even better for the embedded world.
Or to say it in words of Bjarne Stroustrup, inventor of C++: "Improve performance and ability to work directly with hardware -- make C++ even better for embedded systems programming and high-performance computation."
I reasoned a lot about this sentence because I changed from the software development in the middle ware area into the embedded world. I was responsible for the software on defibrillators. So I started my search for that kind of features in C++11 that are particularly well suited for the embedded programming. I presented the results of my search at conferences in Berlin, Munich, or Sindelfingen.
In the meantime my perception of the new features as user-defined literals, the type-traits library, or constant expressions has changed a lot. They are such great features that they belong in the tool box of each professional C++ developer. This statement is even more true for the embedded world because they have to deal with stronger requirements. Therefore, the posts about "Embedded programming with C++" are particular valuable in the embedded programming.
What's the reason for my perception? The answer is simple. There is no typical embedded system. The diversity is large. There are RFID transponder about the size of a few millimetres, pace makers that should work reliable for a longer period, defibrillators consisting of a few boards and even more CPUs that wait years for their application, or cars having more the 100 electronic control units (ECUs). The boarders between the embedded systems and other systems as game development or low-level systems are blurred.
What make the embedded programming special? Embedded programming is the more intensive programming. More intensive because it has to deal with strong requirements:
- High performance requirements up to real time requirements
- Safety critical systems
- Reduced resources as memory and CPU power
- More Tasks that should be accomplished in parallel
I had a long fight how to present the features in structured way. In addition, the features are often dependent on the C++ standard. Here is my plan. The features are the answers to typical requirements in the embedded programming. The requirements are the key points of my structure.
- High safety requirements
- Performance matters
- Careful handling of resources
Additionally, I will provide the information since which C++ standard you can use this feature.
Before I start with the posts about embedded programming I have to make a short detour. In my profession as a software developer I heard a lot myths about C++. I will present them in the next post and provide the facts in the post after the next.
Thanks a lot to my Patreon Supporters: Matt Braun, Roman Postanciuc, Tobias Zindl, Marko, G Prvulovic, Reinhold Dröge, Abernitzke, Frank Grimm, Sakib, Broeserl, António Pina, Darshan Mody, Sergey Agafyin, Андрей Бурмистров, Jake, GS, Lawton Shoemake, Animus24, Jozo Leko, John Breland, espkk, Wolfgang Gärtner, Louis St-Amour, Stephan Roslen, Venkat Nandam, Jose Francisco, Douglas Tinkham, Kuchlong Kuchlong, Avi Kohn, Robert Blanch, Truels Wissneth, Kris Kafka, Mario Luoni, Neil Wang, Friedrich Huber, Sudhakar Balagurusamy, lennonli, and Pramod Tikare Muralidhara.
Thanks in particular to Jon Hess, Lakshman, Christian Wittenhorst, Sherhy Pyton, and Dendi Suhubdy
I'm happy to give online-seminars or face-to-face seminars world-wide. Please call me if you have any questions.
Here is a compilation of my standard seminars. These seminars are only meant to give you a first orientation.