hemos migrado del ensamblador a C en la programación de microprocesadores. Tengo dudas de que esta sea una buena idea
No temas, ya nadie desarrolla nuevos programas en ensamblador al 100%. Hoy en día, C se puede usar incluso para las arquitecturas de 8 bits más pequeñas y crappiest. Sin embargo , saber que un ensamblador te hace un programador de C significativamente mejor. Además, siempre hay algunos pequeños detalles o dos en un programa que deben escribirse en un ensamblador.
Puedo decir que la sintaxis de C es mucho más fácil de aprender que la sintaxis de ensamblador.
Sí, la sintaxis es más fácil, sin duda. Sin embargo, aprender todo el lenguaje C con todos los detalles molestos es mucho más complejo que aprender todos los detalles de un ensamblador en particular. C es un lenguaje mucho más grande y más amplio.
Pero, de nuevo, es posible que no necesite aprender todos los detalles.
C es más fácil de usar para crear programas más complejos.
De hecho, C proporciona mecanismos para el diseño de programas modulares, como encapsulación y ámbitos locales / variables locales. Y C tiene una biblioteca estándar, más una enorme cantidad de recursos escritos durante los últimos 30 años. Y lo más importante, C es portátil.
Aprender C es de alguna manera más productivo que aprender ensamblador porque hay más cosas en desarrollo alrededor de C que Ensamblador.
C tiene una gran cantidad de funcionalidades, bibliotecas y recursos prefabricados, por lo que habrá menos reinvención de la rueda. Pero aparte de eso, tu declaración es subjetiva. Creo que es una cuestión de preferencia personal.
Por ejemplo, soy un programador de C experimentado, ocasionalmente programo C ++. Me encuentro mucho menos productivo en C ++, porque no conozco ese lenguaje tan bien como con C. Pero el hecho de que me sienta así no significa necesariamente que la programación en C sea más productiva que la programación en C ++. Un programador experimentado en C ++ seguramente tendría la opinión opuesta.
Y hay muchos aspectos para "productivo". Un aspecto muy importante es el tiempo de mantenimiento, y especialmente el tiempo que se tarda en solucionar los errores provocados por el mantenimiento. C es mucho más fácil de mantener que el ensamblador.
El ensamblador es un lenguaje de programación de nivel inferior al C, por lo que es bueno para la programación directa en hardware.
La programación del hardware se puede hacer directamente en cualquiera de los dos idiomas. Las únicas cosas que no puede hacer en C son acceder a los punteros de pila y los registros de condición, etc., del núcleo de la CPU. Entonces, si por programación de hardware quiere decir que está hablando con su propia CPU, entonces sí, el ensamblador permite un poco más de C. Si quiere decir que accede a un hardware externo, entonces el ensamblador no ofrece ningún beneficio sobre C. Pero quizás las desventajas, ya que a menudo es más difícil escribir Código genérico de ensamblador para un dispositivo externo en particular, que código genérico C.
Es mucho más flexible aludirte a trabajar con memoria, interrupciones, microrregistros, etc.
Esto no es correcto. C le permite hacer todo eso también, aunque es posible que tenga que confiar en el código C específico del compilador, como la palabra clave de interrupción.
Al final, necesita saber ambos idiomas para programar MCU, con énfasis en C.