Language options for embedded firmware

How do you choose what language to start a project in? It seems the options range from the formidable C - sometimes C++ - to embeddable languages like Lua or Squirrel, and on to newer options like Javascript and Rust.

I’ve generally used plain C for my small embedded projects, but I’d love to work with something that can offer better tooling or better guarantees on my code.

Seriously, are we stuck with C forever, or will something like ever catch on? If so, what will it take?

I think C is with us to stay. It is a language that translates easily to native instructions and adds no overhead like memory management, vtables, threads, etc… All of those features make it harder to write a compiler for a new platform. C is good enough to get work done so why bother trying to get a more “advanced” language to work?

I hate javascript! How do you even work with single bytes? No type checking either! Gross! :smile:

I think @turbolaser is probably right. Your best bet for change in the short term is going to be platforms like that bundle up both hardware and a programming environment for you.

That said - I think there is also room for innovation here - imagine a firmware compiler that looks at your hardware design and prototypes it for you. Or a toolchain with some of the niceties we’ve come to expect from building for the web, but built more specifically for doing firmware.