Embedded software engineers primarily use C and C++, as these languages offer the low-level access to hardware and memory that is often necessary in embedded systems. C is especially popular due to its simplicity, efficiency, and fine-grained control over hardware. However, other languages may also be used depending on the system requirements. For example, Python and Rust are gaining popularity in some embedded systems, especially for high-level applications or prototyping. Assembly language is also used in certain situations that require precise control over the hardware, though this is less common due to the increased use of high-level languages and sophisticated compilers.