From speaking to industry folks that have worked on IoT devices and systems before, C, C++, and Java are the most popular choices for general purpose projects. C is one of the first programming languages and is popular for low-level projects, C++ expands on the capabilities of C. There’s another language called C#, Microsoft’s own higher level version, but not many developers use it. Better explanations for the differences between the three C’s can be found here, here, and here.
C is considered the most useful for IoT devices because it doesn’t require a lot of processing power. C++ is an alternative if the IoT device requires more complex tasks, think thermostats and smart toasters rather than devices that detect moisture or heat. Java is another general purpose language that is useful for IoT devices that require a lot of interfacing and calculation, since it is more portable than C++, lightweight (for a high level language), and more commonly taught.
Several blogs we viewed mention Go and Rust, concurrent programming languages developed by Google and Mozilla, respectively. Go provides a way for devices to talk to one another and receive information simultaneously, but is plagued with errors and the threat of data loss. Rust is more stable, but does not have the device sharing functionality.
If you don’t want to go with C, there are some other low-level programming languages that may suit your needs. B# is one of those, a language built from the ground up for very low power devices. It is similar to C#, but stripped of the hand holding and fitted with real-time control functions.
Assembler is capable of running on just about anything. The downside is there’s no hand holding at all, if you code doesn’t work, if a new processor doesn’t accept Assembler code, too bad.
Google and Nest’s language, Weave, could become popular if it receives more support from developers. Google also has Brillo, an all encompassing platform for IoT devices, which could promote Weave use if it becomes popular. Apple is a contender with its open source language Swift, currently marketed at iOS and Mac OS developers.
For now, IoT developers should look at the programming languages we have used for decades, before venturing into the niche and new.