Yo estoy empezando a programar hace poco en assembler, y por lo poco que se (siempre le tuve y todavia le tengo un poco de asquito
), uno puede tener un mayor control sobre el procesador, es decir manejar vos lo registros y cosas mas especificas que en C te resultan transparentes.
Asi y todo, me parece que C es una herramienta mucho mas util porque te permite alejarte de ciertas cosas que no vienen al problema que estas tratando de resolver en el momento, tenes una mayor flexibilidad en el codigo, y sobre todo un codigo mas estructurado (lo que mas me resulta util a la hora de programar).
Te permite realizar un programa mas rapido (bueno, tal vez eso es mi caso, ya que en assembler doy demasiadas vueltas), mucho mas compatible con otros modelos de uC.
Pero como todo, siempre hay una contra, nada es gratis y menos en la electronica, algo tenes que pagar por todos esos beneficios y ese precio es la velocidad, pero tambien hay algo que es verdad, hoy en dia los uC son mucho mas veloces de lo que eran antes, por lo tanto ¿que tanto puede llegar a ser la diferencia entre un buen codigo en assembler y uno en C?.
Yo lo trato de ver por el lado de como fue evolucionando el codigo en las computadoras, partimos de assembler -> C (lenguaje estructurado) -> C++ (lenguaje orientado a objetos) -> Java (una evolucion del lenguaje orientado a objetos) -> y no se que vendra ahora
(por dar una posible rama de lenguaje, es cierto que tambien hubo en medio pascal, basic, .net, etc).
Yo creo que ese cambio tuvo que ser necesario para poder evolucionar en programas muchos mas complejos, que en un lenguaje mas viejo seria bastante complejo poder lograrlo, y esa evolucion estuvo de la mano con la evolucion tecnologica del hard, es decir ¿uno podria diferenciar en forma significativa hoy la diferencia de velocidad entre un codigo en C y otro en assembler en un dual core?
Asi y todo, me parece que C es una herramienta mucho mas util porque te permite alejarte de ciertas cosas que no vienen al problema que estas tratando de resolver en el momento, tenes una mayor flexibilidad en el codigo, y sobre todo un codigo mas estructurado (lo que mas me resulta util a la hora de programar).
Te permite realizar un programa mas rapido (bueno, tal vez eso es mi caso, ya que en assembler doy demasiadas vueltas), mucho mas compatible con otros modelos de uC.
Pero como todo, siempre hay una contra, nada es gratis y menos en la electronica, algo tenes que pagar por todos esos beneficios y ese precio es la velocidad, pero tambien hay algo que es verdad, hoy en dia los uC son mucho mas veloces de lo que eran antes, por lo tanto ¿que tanto puede llegar a ser la diferencia entre un buen codigo en assembler y uno en C?.
Yo lo trato de ver por el lado de como fue evolucionando el codigo en las computadoras, partimos de assembler -> C (lenguaje estructurado) -> C++ (lenguaje orientado a objetos) -> Java (una evolucion del lenguaje orientado a objetos) -> y no se que vendra ahora
Yo creo que ese cambio tuvo que ser necesario para poder evolucionar en programas muchos mas complejos, que en un lenguaje mas viejo seria bastante complejo poder lograrlo, y esa evolucion estuvo de la mano con la evolucion tecnologica del hard, es decir ¿uno podria diferenciar en forma significativa hoy la diferencia de velocidad entre un codigo en C y otro en assembler en un dual core?