When I first met arduino (and quickly more embedded boards afterwards), the hard part was not C[++], nor a toolchain around it – I’m a C guy since ‘00. It was the fact that this area has few de-facto standards on how things should cooperate. Basic tutorials have no notion of event loops, you just for-loop forever and poll pins. But once I’ve got few non-standard devices, like that pressure sensor I got somewhere in the city, it all falls apart, because e.g. the time required to talk to it via provided library consumes enough cycles for your entire process to be late on physics. And vice versa, your logging is not async and interferes with signal timeouts. You simply spend tens-thousands of cycles spin-locking on i/o and there is no way to fix that without rewriting “drivers” under some “os”. Idk if haskelling everything could help with that.
I decided to just move on to high-mhz stm’s or even -pi variants, where a whole different stratum of software lives (seemingly), but luckily project folded for unrelated reasons. My conclusion was that if you’re a software developer, don’t just go embedded, it is not what you used to and routes you can take are limited.
Edit: obviously missing some details here, and it was 7 years ago, would like if someone would elaborate on the state of the embedded world today.
I decided to just move on to high-mhz stm’s or even -pi variants, where a whole different stratum of software lives (seemingly), but luckily project folded for unrelated reasons. My conclusion was that if you’re a software developer, don’t just go embedded, it is not what you used to and routes you can take are limited.
Edit: obviously missing some details here, and it was 7 years ago, would like if someone would elaborate on the state of the embedded world today.