<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix"><br>
uh, where I said "make C++ more competitive with newer, higher
level languages to do stuff on embedded platforms."<br>
I meant NON-embedded, bigger platforms.<br>
<br>
<br>
<a class="moz-txt-link-abbreviated" href="mailto:sleepy_dog@gmx.de">sleepy_dog@gmx.de</a> wrote:<br>
</div>
<blockquote cite="mid:a3f59152-e5f1-27db-8c75-aa50549cd2a2@gmx.de"
type="cite">
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
<div class="moz-cite-prefix"><br>
*if* you want to do C++, here are some pointers:<br>
<a moz-do-not-send="true" class="moz-txt-link-freetext"
href="https://www.artima.com/shop/effective_cpp_in_an_embedded_environment">https://www.artima.com/shop/effective_cpp_in_an_embedded_environment</a><br>
<br>
I once found those presentation slides freely downloadable
somewhere, and it didn't seem fishy... (maybe this offer is
fishy, or terms changed)<br>
perhaps you might, too.<br>
(Scott Meyers... knows C++)<br>
<br>
<br>
If you want to "make stuff", soon, and you learned C, 10 years
ago, and will almost exclusively program things for STM32 and
similar,<br>
then perhaps you might want to try a while gaining/refreshing
some experience with C programming first, though.<br>
<br>
C++ always was a complex beast with lots of opportunities, even
subtle ones, to really dig yourself into the dirt.<br>
But this hasn't exactly improved, in that regard, in recent
years. The amount of stuff you need to understand, and think
about next to your actual task at hand, to get anything done is
not small - especially if one of your aims is to do it
"properly".<br>
While some of C++ newer versions' aspects can also help for
embedded development (off the top of my mind, you can do complex
stuff at compile time more easily, elegantly, understandably -
and what's done at compile time doesn't need to be done at
run-time),<br>
I'd say the majority of additions help make C++ more competitive
with newer, higher level languages to do stuff on embedded
platforms.<br>
<br>
There are some nice things about even the "procedural" subset of
C++ doing things differently that C in some ways that annoy be
about C.<br>
Then again, in C99 and C11 has some things that make some
typical embedded stuff nicer (look for free documents explaining
what C99/11 got new vs. C89 / ANSI, to get an idea.)<br>
E.g. assigning of const arrays in an explicitly indexed way, or
in similar vein, assigning structs (or arrays of such) qualified
with member names.<br>
So if you want to make const data structures that get put into
program memory, which is usually much more plentiful than RAM on
such devices, you can do so, right in the code, without any
external fumblings (or ugly macro trickery) assign things in a
manner that's very readable and not so likely to be wrong - like
it can get if your initialization depends on the order of
something else and must remain in sync with it during
development/maintenance, to avoid making more complex/wasteful
structures that would also prevent this problem.<br>
<br>
I will now list some not free resources, i.e. books.<br>
You might be able to get them used and cheaper than the listed
prices here.<br>
<br>
If you (also) want to use C:<br>
<br>
One way to get an idea of how to craft programs which are not an
infinitely intertwined mess is - to keep things *testable*.<br>
Here is one book that demonstrates how to do that in C.<br>
Although it promotes the "write tests first, then the
implementation" way, which weirds out some people - nobody
forces you to do that. May still be interesting.<br>
<a moz-do-not-send="true" class="moz-txt-link-freetext"
href="https://www.amazon.com/Driven-Development-Embedded-Pragmatic-Programmers-ebook/dp/B01D3TWF5M">https://www.amazon.com/Driven-Development-Embedded-Pragmatic-Programmers-ebook/dp/B01D3TWF5M</a><br>
<br>
<br>
A more general classic:<br>
<a moz-do-not-send="true" class="moz-txt-link-freetext"
href="https://www.amazon.com/Code-Complete-Developer-Best-Practices-ebook/dp/B00JDMPOSY">https://www.amazon.com/Code-Complete-Developer-Best-Practices-ebook/dp/B00JDMPOSY</a><br>
<br>
<br>
This might be useful if you're not very experienced. Just in
case.<br>
<a moz-do-not-send="true" class="moz-txt-link-freetext"
href="https://www.amazon.com/Debug-Repair-Prevent-Pragmatic-Programmers/dp/193435628X">https://www.amazon.com/Debug-Repair-Prevent-Pragmatic-Programmers/dp/193435628X</a><br>
<br>
<br>
----------<br>
I saw this while looking for the links - don't know this one,
but ratings look good?<br>
(note that libopencm3 has GPL license, IIRC, in case that
matters)<br>
<a moz-do-not-send="true" class="moz-txt-link-freetext"
href="https://www.amazon.com/Beginning-STM32-Developing-FreeRTOS-libopencm3-ebook/dp/B07DGGHZN6">https://www.amazon.com/Beginning-STM32-Developing-FreeRTOS-libopencm3-ebook/dp/B07DGGHZN6</a><br>
<br>
<br>
- Steve<br>
<br>
<br>
Spiros Makris wrote:<br>
</div>
<blockquote
cite="mid:CAGbpyRdfE4ATacKa6v7s+fX3y7=6u54y3eP2NLkwrAO13GZPsw@mail.gmail.com"
type="cite">
<div dir="ltr">Hello list, <br>
<div>I want to improve my coding habits so that my results
will stay maintainable and easy to mod/reuse in the future.
The scope of my applications (thus far) is sequencing and
other similar low frequency control/real time devices. I use
the arduino platform a lot for it's incredible simplicity
and driver availability (I love you Teensy) but I'm trying
to transition to STM32 eventually, seeing it as a more
"serious" and professional platform. In both cases I use
C/C++.</div>
<div>I was officially taught C while studying in the
university but that was 10 years ago and I've only picked up
programming again in the past two or three. I understand
digital hardware and the core C concepts, however, I don't
have the opportunity to work alongside an experienced
colleague to learn how I should write my code to be up to
"industry standards" (= not be an unmaintainable mess etc)
and I'm looking for something to refer to, other than my own
trial and error.</div>
<div>Example topics include anything from structuring headers
to using globals or structuring function calls- especially
under the prism of embedded applications. I would appreciate
any suggestions on online resources or books.</div>
<div><br>
</div>
<div>Regards,</div>
<div>Spiros</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
Synth-diy mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:Synth-diy@synth-diy.org">Synth-diy@synth-diy.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://synth-diy.org/mailman/listinfo/synth-diy">http://synth-diy.org/mailman/listinfo/synth-diy</a>
</pre>
</blockquote>
<p><br>
</p>
</blockquote>
<p><br>
</p>
</body>
</html>