{"id":4963,"date":"2016-09-28T05:14:14","date_gmt":"2016-09-28T05:14:14","guid":{"rendered":"https:\/\/www.modernescpp.com\/index.php\/requirements-of-embedded-programming\/"},"modified":"2023-06-26T12:41:05","modified_gmt":"2023-06-26T12:41:05","slug":"requirements-of-embedded-programming","status":"publish","type":"post","link":"https:\/\/www.modernescpp.com\/index.php\/requirements-of-embedded-programming\/","title":{"rendered":"Requirements of Embedded Programming"},"content":{"rendered":"<p>Bjarne Stroustrup&#8217;s <a href=\"http:\/\/www.stroustrup.com\/C++11FAQ.html#specific-aims\">FAQ<\/a> makes it crystal clear. One of the design goals for C++11 was to make C++ even better for the embedded world.<\/p>\n<p><!--more--><\/p>\n<p>&nbsp;<\/p>\n<p>Or to say it in the words of Bjarne Stroustrup, inventor of C++: &#8220;Improve performance and ability to work directly with hardware &#8212; make C++ even better for embedded systems programming and high-performance computation.&#8221;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-4962\" src=\"https:\/\/www.modernescpp.com\/wp-content\/uploads\/2016\/09\/BjarneStroustrup.jpg\" alt=\"BjarneStroustrup\" width=\"432\" height=\"324\" srcset=\"https:\/\/www.modernescpp.com\/wp-content\/uploads\/2016\/09\/BjarneStroustrup.jpg 432w, https:\/\/www.modernescpp.com\/wp-content\/uploads\/2016\/09\/BjarneStroustrup-300x225.jpg 300w\" sizes=\"auto, (max-width: 432px) 100vw, 432px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>I reasoned a lot about this sentence because I changed from software development in the middleware area into the embedded world. I was responsible for the software on defibrillators. So I started my search for the kind of features in C++11 that are particularly well suited for embedded programming. I presented my search results at <a href=\"http:\/\/www.grimm-jaud.de\/index.php\/oeffentliche-vortraege\">conferences<\/a> in Berlin, Munich, and Sindelfingen.<\/p>\n<\/p>\n<p>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 toolbox 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 &#8220;Embedded programming with C++&#8221; are particularly valuable in embedded programming.<\/p>\n<p>What&#8217;s the reason for my perception? The answer is simple. There is no typical embedded system. The diversity is large. There is <a href=\"https:\/\/en.wikipedia.org\/wiki\/Radio-frequency_identification\">RFID<\/a> transponder about the size of a few millimeters, pacemakers that should work reliably 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 borders between the embedded systems and other systems as game development or low-level systems, are blurred.<\/p>\n<p>What makes embedded programming unique? Embedded programming is the more intensive programming. More intensive because it has to deal with strong requirements:<\/p>\n<ul>\n<li>High-performance requirements up to real-time requirements<\/li>\n<li>Safety-critical systems<\/li>\n<li>Reduced resources such as memory and CPU power<\/li>\n<li>More Tasks that should be accomplished in parallel<\/li>\n<\/ul>\n<p>I had a long fight on how to present the features in a 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 embedded programming. The requirements are the key points of my structure.<\/p>\n<ul>\n<li>High safety requirements<\/li>\n<li>Performance matters<\/li>\n<li>Careful handling of resources<\/li>\n<\/ul>\n<p>Additionally, I will provide information on which C++ standard you can use for this feature.<\/p>\n<h2>What&#8217;s next?<\/h2>\n<p>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 of myths about C++. I will present them in the <a href=\"https:\/\/www.modernescpp.com\/index.php\/myths\">next post<\/a> and provide the facts.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bjarne Stroustrup&#8217;s FAQ makes it crystal clear. One of the design goals for C++11 was to make C++ even better for the embedded world.<\/p>\n","protected":false},"author":21,"featured_media":4962,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[364],"tags":[],"class_list":["post-4963","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-embedded"],"_links":{"self":[{"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/posts\/4963","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/comments?post=4963"}],"version-history":[{"count":1,"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/posts\/4963\/revisions"}],"predecessor-version":[{"id":6942,"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/posts\/4963\/revisions\/6942"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/media\/4962"}],"wp:attachment":[{"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/media?parent=4963"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/categories?post=4963"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/tags?post=4963"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}