Nosotros los programadores tenemos una idea errónea del programa del ensamblador. No nos gusta, pensamos que es aburrido o muy difícil y preferimos lenguajes de alto nivel y esto se debe a que este lenguaje ensamblador desarrolló una mala reputación en los años noventa.
Las mejoras en el desempeño del CPU, los avances en tecnología del compilador y muchos más, todos o la mayoría se unió y conspiraron para decir que el ensamblador era un lenguaje "muerto" y que no se necesitaba más ya que además era un más difícil de aprender que los lenguajes tradicionales de alto nivel, lastimosamente los estudiantes y los profesores felizmente aceptaron y rápidamente abandonaron el ensamblador. Pero esto trae una desventaja ya que “malacostumbrar” a los programadores a no pensar a no ser creativos. Por ejemplo, los profesores nos instan a qué en programas de alto nivel como Python a no usar funciones determinadas para una función, sino que creemos el código para poder realizar ese programa.
Desarrollo
La programación de alto nivel tiene como desventaja malacostumbrar a los programadores a desarrollar sin pensar. Naturalmente compilamos un código, lo ejecutamos y falla, luego le hace hacemos un cambio y repetimos estos pasos hasta que funcione. Esto puede general una perdida de tiempo y recursos.
Hay una frase que todo programador debe tener presente “Si usted quiere aprender a escribir un gran código, aprenda a programar desde lo básico”. El conocimiento sobre el lenguaje ensamblador, nos ayuda a hacer grandes programadores, la pregunta obvia es "¿Por qué no hay más programadores que aprendan ensamblador?"
Parte del problema es el prejuicio: Muchos instructores de escuelas técnicas y universidades que enseñan lenguaje ensamblador, comienzan su curso con un comentario como “Realmente nadie necesita conocer esto, y ustedes nunca lo van a usar, pero este programa lo requiere, así que vamos a batallar las próximas semanas estudiando este material". Después de cuatro años de este tipo de actitud de sus profesores, no es sorprendente que los estudiantes realmente no quieran tener nada que ver con utilizar el lenguaje ensamblador para programar.
Importancia de lenguaje ensamblador
-
Es ineludible: En algún punto, todo lenguaje convencional debe ser convertido a código máquina o interpretado por un programa que haya sido compilado a tal. El lenguaje ensamblador es básicamente un mnemotécnico de dicho código (aunque puede tener agregados). Entonces, los compiladores o intérpretes o bien tienen partes escritas en ensamblador, o incluyen referencia (por ejemplo, una biblioteca) a algo que lo incluye. Caso contrario, no podrían decirle cómo actuar.
-
Los sistemas operativos y los drivers, que necesitan hacer uso de instrucciones específicas de ensamblador, o que por rendimiento algunas partes están escritas en él.
-
Los dispositivos donde los recursos son limitados y un lenguaje de más nivel implica excederse, o no hay SO y drivers, sino que es un único programa monolítico (ejemplo, el uso de un PIC cuyo firmware puede tener sólo hasta 512 instrucciones de ensamblador).
-
Eficiencia: Se requiere hacer uso de instrucciones específicas del microprocesador no cubiertas por los lenguajes o con optimizaciones ad hoc. Puede ser una instrucción de cómputo en paralelo, o un proceso crítico en el que el compilador no genera la mejor optimización.
-
Al trabajar sobre un programa ya compilado. Ya sea para encontrar un problema (que hasta puede no ser del programa sino de hardware, pero es necesario saber en qué condiciones se dispara, aunque no es común), para entender cómo funciona algo (ingeniería inversa, muy importante para investigar virus y otros malwares), o para hacer una modificación sin contar con el código fuente (por ejemplo, un crack, o solucionar un bug en un abandonware).
Conclusión
Los programadores deben de aprender cómo funcionan las cosas para crear mejores cosas y hacer que sean eficientes, pero para poder lograrlo se necesitarán de personas que entienda la implementación práctica de las instrucciones que intenta dar por esta razón se insta a los programadores a no ser escupidores de código sino a resolver un problema entendiendo lo que hacen.
Referencias
Randall Hyde. (2004). Por qué es aún una buena idea aprender Ensamblador, Recuperado de : http://www.bixoft.nl/espanol/hyde.htm