Еще подумал аргументы за и против C vs CPP vs Nim в embedded. Если работа по найму в этом направлении то мимо C точно не проскочить, CPP тоже много куда сейчас запихивать стали.
Nim же он пока только в начале пути в этом направлении.
Если же для себя или имеешь возможность выбирать языки для реализации (нет сертификации изделия и подобного) то Nim просто приятен, эстетически. Кроме того метапрограммирование весьма полезно именно в железках, вплоть до того что можно свой DSL создать на макросах, и компилироваться он будет в супер малый код на регистрах, как будто руками писал, но гораздо удобнее.
Для примера открой какой нибудь пример на C для работы с регистрами или hal, половина кода это простыни неудобоваримого кода, вторая половина это комментарии поясняющая что эта абракадабра делает.
Когда я придя с десктопов и веба в embedded увидел эти простыни прямо фаломорфировал, насколько ужасно всё выглядит внутри. Конечно дело в том, что микроконтролеры это набор палок и веревок которые нужно собрать в нужном порядке иначе не работает. Настройка элементарных вещей не тривиальна.
Казалось бы бери HAL от производителей. Но НAL это дно с точки зрения API, написанное индусами, но лучше нет.
И тут на помощь спешит Nim который позволяет завернуть это некрасивое нечто в обертки (раз и навсегда) и в большинстве случаев просто работать с красивым кодом.