Hemos migrado de ensamblador a C en la programación de microprocesadores. Tengo dudas de que sea una buena idea.
No temas, ya nadie desarrolla nuevos programas en ensamblador 100%. Hoy en día, C se puede utilizar incluso para las arquitecturas más pequeñas y más asquerosas de 8 bits. Sin embargo , conocer a algún ensamblador lo convierte en un programador en C significativamente mejor. Además, siempre hay algún pequeño detalle o dos en un programa que deben escribirse en ensamblador.
Puedo decir que la sintaxis de C es mucho más fácil de aprender que la sintaxis de Assembler.
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 amplio. Pero, de nuevo, es posible que no necesite aprender todos los detalles.
C es más fácil de usar para hacer 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, además de 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 muchas funciones, bibliotecas y recursos prefabricados, por lo que habrá menos reinvención de la rueda. Pero aparte de eso, su declaración es subjetiva. Creo que es una cuestión de preferencia personal.
Por ejemplo, soy un programador de C experimentado, ocasionalmente programando C ++. Me encuentro mucho menos productivo en C ++, porque no conozco ese lenguaje tan bien como sé C. Pero solo porque me siento así, no necesariamente significa que programar en C sea más productivo que programar en C ++. Un programador experimentado de 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 lleva corregir los errores inducidos por el mantenimiento. C es mucho más fácil de mantener que el ensamblador.
Assembler es un lenguaje de programación de nivel inferior que C, por lo que es bueno para programar directamente en hardware.
La programación de hardware se puede hacer directamente en cualquier idioma. Lo único que no puede hacer en C es acceder a punteros de pila y registros de condición, etc., del núcleo de la CPU. Entonces, si por programación de hardware te refieres a hablar con tu propia CPU, entonces sí, el ensamblador permite un poco más que C. Si te refieres a acceder a hardware externo, entonces el ensamblador no tiene ningún beneficio sobre C. Pero quizás desventajas, ya que a menudo es más difícil de escribir código genérico de ensamblador para un dispositivo externo en particular, que el código genérico C.
Es mucho más flexible aludiendo a trabajar con memoria, interrupciones, micro registros, etc.
Esto no es correcto. C también le permite hacer todo eso, aunque es posible que deba confiar en el código C específico del compilador, como la palabra clave interrupt.
Al final, necesita saber ambos idiomas para programar MCU, con énfasis en C.