Usted está pidiendo una opinión, así que considere esto como un comentario largo en lugar de una respuesta. Primero: no creo que haya otros idiomas a considerar. El único contendiente fue Ada, pero IMO se ha quedado muy atrás.
Embebido, e incluso cercano al metal, abarca una amplia gama de hardware de destino, desde pequeños microcontroladores FLASH de 8 bits o incluso de 4 bits sub-1k, hasta microprocesadores de GHz (y don No te olvides de las GPU's!). En el extremo pequeño, el ensamblador lateral podría ser una buena opción en algunos casos, en el otro extremo C ++ es la única opción buena de la OMI.
Esto reduce la pregunta a dónde están los dos puntos de cambio: dónde deshacerse del ensamblador y usar C, y dónde colocar C y usar C ++. Eso depende de demasiados factores para dar una respuesta directa, pero mi opinión sería: usar el lenguaje más alto que sea posible. Si tiene un compilador de C ++ completo disponible, use C ++. Si no (chips de 8 bits) utilice C. En el caso poco frecuente de que C no le dé suficiente control, use el ensamblador.
(Desafortunadamente, los compiladores AVR C / C ++ están seriamente controlados por el uso del modelo de memoria dividida en el AVR. Y los PIC, bueno ...)
Mis viñetas son
- si está usando algo más, cambie a ARM / Cortex AHORA
- en casi todos los casos, será mejor que uses C ++
- pero ese NO es el 'estilo' de C ++ que se usa en el escritorio
- a pesar de que C y C ++ difieren mucho, hay un subconjunto común que es útil para aprender en la programación cercana al hardware, independientemente de cuál usaremos más adelante. Aprende esto primero. Evite los modismos en C (malloc, la mayoría de las MACRO, etc.) que se realizan de manera diferente (y mejor) en C ++, y evite los modismos en C ++ que son específicos para la programación de grandes sistemas (CUALQUIER COSA que use el montón, RTTI y probablemente también las excepciones).
Puedes buscar "objetos no gracias" en Google por cómo creo que C ++ debería usarse en sistemas pequeños / cercanos al hardware.
Tenga en cuenta que describo lo que creo que uno debe hacer, que no es cómo se hace ahora : la práctica actual es más hacia la izquierda (especialmente más C donde yo preferiría C ++). Usted podría tener eso en cuenta en la planificación de su carrera. Por supuesto, las cosas pueden ser diferentes en unos pocos años, especialmente si puedo hacer cualquier cosa al respecto. Pero las cosas no se han movido mucho en las últimas décadas, no pongas todos tus huevos en una sola canasta.
PS aplaude para preguntar específicamente sobre el hardware cercano en lugar de usar el microcontrolador de términos generales o integrado.
PS, aunque en principio estoy de acuerdo con la regla SE de 'las respuestas deben ser objetivamente correctas' Me gustaría ver un lugar donde pueda pedir (¿buenas?) opiniones.