C, C++ or Assembly ?
C, C++ or Assembly ?
The problem with C# is it requires a runtime framework to use. A big issue with this is that most certainly you'd want the .NET Framework, which limits your OS options to just Windows. While there's an open source implementation that you could run on Linux, it's likely not on par with the .NET, though I haven't really looked too deeply into this.
Requiring a runtime framework is also not on the table for embedded devices too. Especially since these are expected to be low power device and being able to shave off whatever milliamps you can tends to force certain languages to be used for the actual apps.
Also in terms of optimization, having software that only includes what it needs is a cheap and easy one. Needing a software framework where you may not need 80% of its features is not ideal.
It's clear that embedded systems will always run C (or C++ if you have advanced hardware). That's the reality I'm used to. Right now I'm working on a project for a Cortex A53 embedded device, handling messages between two GUI applications that can run on Windows or Linux—both setups are feasible. For performance-critical interfaces, C/C++ remains the only suitable option; it balances speed and compatibility. If you're not focused on raw performance, C# offers a more straightforward experience with fewer risks, though its portability across platforms is still a consideration.