Pues como no tengo mucho que hacer hasta que se calienten algunas máquinas, me metí al foro a lugares donde nunca estoy.
Lo que comenta carcass es muy cierto, y todos los que han programado en ensamblador pueden ratificarlo. El ensamblador
siempre será mejor que cualquier compilador de cualquier lenguaje.
Cuando uno utiliza un compilador, solo el que realizó el compilador sabe cómo se va a generar el código. Si uno hace el programa en ensamblador hace todo
, desde mover a W, hasta mover a los puertos.
El lenguaje de programación que no sea el
"nativo" para cada µicro, pudiera considerarse una pérdida de recursos como lo plantea carcass.
Y para todos los que dicen que C es de alto nivel:
"
C is a relatively "low level" language."
¿Quién se atreve a decir esto?
Pues nada menos que Brian W. Kernighan y Dennis M. Ritchie, en THE C PROGRAMMING LANGUAGE, segunda edición, 1988.
¿Y quiénes son ellos para decir esto?
Pues solamente son los creadores del lenguaje C.
Este es un foro de exposición de ideas sobre µicrocontroladores, el hacer comentarios sarcásticos sobre otra persona es, en mi opinión, deplorable y denota inmadurez.
Eso con lo que respecta a la postura de carcass.
Ahora el otro punto:
Donde trabajaba se fabrica el sistema de entretenimiento de los aviones, las televisiones, teléfonos, las unidades de distribución de RF para el video y audio, y demás aparatos para el mismo fin.
Utilizan un DSP de TI además de un ARM7 de no recuerdo el fabricante; I²C, SPI, RS232 y 485; RF y muchos otros medios y protocolos de comunicación.
Un día, durante una prueba, no podía determinar la causa de una falla. Me metí al código fuente (es lab view, no se nada pero lo hice) y resultó ser C.
Aunque no se C, me resultó relativamente sencillo saber el por qué estaba fallando la unidad.
Ahora viene la cuestión, ¿C? ¿Por qué no ensamblador?.
Les hice la pregunta a los diseñadores en Pomona, California, USA. Resularon ser índios (de la India, y no podemos negar que los índios son los que abarcan el mercado de programadores) y me dijeron que, aunque con ensamblador es una utilización óptima de recursos, tal magnitud del proyecto y los tiempos de diseño (tiempo no en espacio, sino en tiempo) no permitían un "óptimo" diseño del mismo porque, tendrían un producto 50% (en el mejor de los casos) terminado para la fecha en que debería estar al 100% terminado con 100% de confiabilidad.
Desde ese entonces me interecé, en algún compilador y, debo admitirlo, compré lo más básico de lo básico, el PBP.
Pero el PBP me sirvió enormemente y con él se pudo hacer un proyecto para Nestle (de aquí en Mexicali) y con ese proyecto se concursó en el Nacional de Tecnológicos de México (6to lugar).
El PBP ha servido a las generaciones de ingenieros que salen del ITM (Instituto Tecnológico de Mexicali) para desarrollar mejores aplicaciones en sus proyectos, tanto para ellos como para las empresas donde laboran.
Expondré dos ejemplos:
Realizar un desplegado en un LCD requiere de controlar los tiempos de escritura hacia el LCD, las líneas de control, y muchas situaciones solo para representar un mensaje en el LCD.
Con un compilador sólo utilizas la instrucción propia para desplegar el mensaje.
Una rutina de división o multiplicación de 32 bits; cada compilador provee una forma de realizar esto, a diferencia del ensamblador que debes llamar a rutinas y llamar a rutinas y cuidar que no tengas sobreflujo.
Mire carcass, aunque no es apropiado, me citaré:
"Existe un artículo que escribio Bonnie Baker, Microchip Technology Inc. "Hardware versus software: You decide", en la revista EDN, 10 de Junio 2004, página 30.
En este artículo hace mención a las opciones que tiene el diseñador en cuanto a si es mejor el software que el hardware. En resumidas cuentas expone que si es de vital importancia terminar a una fecha y es posible hacer unas funciones en software (con el PBP serin,serout,PWM,freqout,etc), es recomendable hacerlo, después se realizarán los cambios necesarios a hardware; si es un proyecto en el cual se cuenta con el hardware necesario, sería recomendable realizarlo por hardwre (HPWM,Hserin, u otro dispositivo que realice funciones adicionales y libere el trabajo del procesador principal).
Hace alución a que en hardware es menos complicado saber cómo trabaja el dispositivo, en software estaríamos haciendo pruebas hasta que obtengamos lo que queremos pero, se requiere tiempo (y dinero).
En software eliminamos la necesidad de algún componente con funciones específicas (costos)."Ella es una de las personas que trabaja directamente en Microchip y ha realizado numerosos programas y publicaciones en ensamblador.
Si bien es cierto que no discute sobre lenguaje de programación, expone un punto crítico en el cual el programador debe decidir si implementar operaciones en software o realizar todo por hardware; teniendo en cuenta el tiempo de diseño.
Como usted lo ha sugerido, es tentador moverse a lenguajes y es completamente válido; y no por elejir un lenguaje u otro, usted será lo que asevera que son las personas que usamos otro lenguaje además del ensamblador.
Y la ventaja es que si usted tiene rutinas en ensamblador, las puede incluir dentro de sus programas de lenguaje diferente a él y le funcionarán.
Espero que el presente esté fundamentado de manera que usted no se sienta ofendido o criticado, y los demás también; bueno, Navaismo está chico (23) y no sabe cómo comportarse
.
"Quizá no esté de acuerdo con lo que dices, pero defenderé a muerte tu derecho a decirlo"
No recuerdo quién lo dijo pero me parece apropiado incluirlo.
Y:
Uso ASM, Basic (PBP) y estoy viendo C (Primer C, de Pratta; C, de K&R)