En resumen dice que los mejores desarrolladores de software empotrado/embebido deben saber como funciona una conputadora o microcontrolador en detalle. Por lo tanto debe saber asm.
Es verdad, deben saberlo, pero usan C.
Asembler para mí no significa un lenguaje de programación, es el modo en que funciona un microprocesador
al programarlo le vas a decir qué tiene que hacer... y cómo hacerlo según sus recursos. Con un compilador se complica el decirle el cómo...
ahora bien, se puede obrar de varias formas en la tarea de decirle al micro lo que debe hacer:
■Sabiendo cómo funciona el micro, qué puede hacer y qué no, y sabiendo cómo lo hace, como maneja sus registros y sus banderas pero ignorando las rutinas de nuestro compilador (C, basic o el que fuere)
■Se pueden conocer a fondo el compilador, saber las mil y una formas de configurar una función, pero no saber que hace el micro con esos códigos, cómo interpretará esas rutinas.
■Se puede saber de pe a pa las artimañas del compilador y tener un conocimiento completo sobre el harware, bit x bit.
Seguramente todos coincidimos en que este último caso es el más óptimo para desarrollar un firmware, pero la verdad es que pienso que en los 3 casos se puede llegar a un resultado funcional para la mayoría de las aplicaciones.
*El primero debe solventar quizas las falencias de su compilador en interpretar lo que realmente se quiere hacer o mejordicho como se quiere que se haga, pero puede meter mano en bajo nivel y solucionar cualquier problema.
*El segundo, está sujeto al buen funcionamiento y eficiencia del compilador, será tan eficiente como lo sea este último.
En fin todos coincidimos en qué depende de la aplicación, en lenguajes de más alto nivel se simplifican tareas tediosas y se acortan tiempos de desarrollo. Siempre va a haber cosas para hacer que no van a estar en las funciones del compilador y hay que meter mano e ingenio bit a bit pensando en asm. pero si haces todo en asm no podés competir con ninguno de los 3 casos anteriores en la mayoría de las aplicaciones.