{"id":714,"date":"2024-10-21T11:43:59","date_gmt":"2024-10-21T09:43:59","guid":{"rendered":"https:\/\/thurow.de\/?p=714"},"modified":"2024-11-05T09:02:56","modified_gmt":"2024-11-05T08:02:56","slug":"embedded-und-c-manche-dinge-veraendern-sich-nur-langsam","status":"publish","type":"post","link":"https:\/\/thurow.de\/?p=714","title":{"rendered":"embedded und C  &#8211; manche Dinge ver\u00e4ndern sich nur langsam"},"content":{"rendered":"\n<p>Eigentlich durch Zufall ist mir ein guter Beitrag wieder unter die Augen gekommen, er stammt aus dem Jahr 2016:<\/p>\n\n\n\n<p><a href=\"https:\/\/www.heise.de\/hintergrund\/Schlanke-Embeded-Entwicklung-mit-Small-C-3576516.html\">https:\/\/www.heise.de\/hintergrund\/Schlanke-E<\/a><a href=\"https:\/\/www.heise.de\/hintergrund\/Schlanke-Embeded-Entwicklung-mit-Small-C-3576516.html\" target=\"_blank\" rel=\"noreferrer noopener\">m<\/a><a href=\"https:\/\/www.heise.de\/hintergrund\/Schlanke-Embeded-Entwicklung-mit-Small-C-3576516.html\">beded-Entwicklung-mit-Small-C-3576516.html<\/a><\/p>\n\n\n\n<p>Nun haben wir das Jahr 2024. In dieser Zeit gab es regelrechte Revolutionen bei der Programmiersprache C++, vor allem im Bereich der generischen Programmierung. Und sehr viele dieser Features erzeugen KEINEN Overhead im Maschinencode, keine zus\u00e4tzlichen <a href=\"https:\/\/de.wikipedia.org\/wiki\/Aufrufstapel\" target=\"_blank\" rel=\"noreferrer noopener\">Stackrahmen<\/a> etc., bringen aber die Verlagerung von Algorithmen in die Compile-Zeit, Typsicherheit, die M\u00f6glichkeit von zus\u00e4tzlichen Tests wieder in der Compile-Zeit, bessere Debug-M\u00f6glichkeiten etc. etc. etc. Daneben wird aus meiner Sicht zurecht immer mehr auf ein neues Pferd gesetzt, <a href=\"https:\/\/de.wikipedia.org\/wiki\/Rust_(Programmiersprache)\" target=\"_blank\" rel=\"noreferrer noopener\">Rust<\/a>.<\/p>\n\n\n\n<p>Es geht hier nicht darum, eine Programmiersprache gegen die andere auszuspielen. Ein guter Handwerker hat zu Recht einen ganzen Werkzeugkoffer, sein K\u00f6nnen besteht auch darin, je nach Problem die richtigen Werkzeuge auszusuchen und mit diesen in der Anwendung vertraut zu sein. Wer k\u00e4me schon auf die Idee, eine Diskussion vom Zaun zu brechen, ob ein Schraubendreher besser w\u00e4re als eine Kneifzange. Aber ohne Zweifel gibt es eben Schritte, wo der Schraubendreher dran ist und nicht die Kneifzange, oder umgekehrt.<\/p>\n\n\n\n<p>Was mich hier erstaunt, ist der noch immer sehr hohe Anteil an embedded Projekten, die <strong>REIN <\/strong>in C abgewickelt werden. Damit meine ich keine sehr <a href=\"https:\/\/de.wikipedia.org\/wiki\/Hardwareabstraktionsschicht\" target=\"_blank\" rel=\"noreferrer noopener\">HAL<\/a>-nahen Routinen oder die Implementation von <a href=\"https:\/\/de.wikipedia.org\/wiki\/Bin%C3%A4rschnittstelle\" target=\"_blank\" rel=\"noreferrer noopener\">ABIs<\/a>. Ich meine die Umsetzungen der h\u00f6heren Layer. Damit m\u00f6gen Programmierer mit nur prozeduralen Programmierwissen ohne Schulung besser zurechtkommen. Aber auf der anderen Seite bezahlt man aus meiner Sicht die Zeche in der Sicherheit des Codes und vor allem seiner Wartbarkeit. Es ist f\u00fcr mich wieder ein Beispiel von vielen f\u00fcr Sparen am falschen Platz: was ich hier am Anfang des Projektes einspare, muss ich sp\u00e4ter teuer mit Zinseszins obendrauf zahlen &#8230; angefangen schon in der Programmierung selbst, wenn die Architektur langsam etwas komplexer wird, dann im Bug Fixing, wo viele Fehler im Falle von C++ schon gar nicht aufgekommen oder vom Compiler entdeckt w\u00e4ren, und nicht zuletzt bei Anpassungen des Codes und vor allem seiner \u00dcbersichtlichkeit. <\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eigentlich durch Zufall ist mir ein guter Beitrag wieder unter die Augen gekommen, er stammt aus dem Jahr 2016: https:\/\/www.heise.de\/hintergrund\/Schlanke-Embeded-Entwicklung-mit-Small-C-3576516.html Nun haben [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[30,29,28,12,8],"class_list":["post-714","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-c-3","tag-c-2","tag-embedded","tag-programmierung","tag-projektmanagement"],"_links":{"self":[{"href":"https:\/\/thurow.de\/index.php?rest_route=\/wp\/v2\/posts\/714","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thurow.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thurow.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thurow.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thurow.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=714"}],"version-history":[{"count":5,"href":"https:\/\/thurow.de\/index.php?rest_route=\/wp\/v2\/posts\/714\/revisions"}],"predecessor-version":[{"id":745,"href":"https:\/\/thurow.de\/index.php?rest_route=\/wp\/v2\/posts\/714\/revisions\/745"}],"wp:attachment":[{"href":"https:\/\/thurow.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=714"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thurow.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=714"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thurow.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=714"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}