Lenguajes máquina, ensamblador y de alto nivel

A continuación profundizaremos en las principales características de los lenguajes máquina, ensamblador y de alto nivel.

Lenguaje máquina

El lenguaje máquina es el único lenguaje que entiende directamente el ordenador.

Su estructura está completamente adaptada a los circuitos de la máquina y muy alejada de la forma de expresión y análisis de los problemas propios de los humanos. La programación en este lenguaje es complicada, de manera que se requiere un profundo conocimiento de la arquitectura física del ordenador.

Contenido complementario

Sin embargo, el código máquina hace posible que el programador utilice la totalidad de los recursos que ofrece el ordenador, con lo que se obtienen programas muy eficientes en tiempo de ejecución y en ocupación de memoria, dado que aprovechan al máximo los recursos existentes.

El lenguaje ensamblador y casi todos los lenguajes simbólicos de alto nivel resuelven estas limitaciones.

Lenguaje ensamblador

Contenido complementario

El lenguaje ensamblador constituye el primer intento de sustitución del lenguaje por uno más cercano al utilizado por los humanos.

No obstante, el lenguaje ensamblador presenta la mayoría de los inconvenientes que tiene el lenguaje máquina: un repertorio muy reducido de instrucciones, el rígido formato de las instrucciones, la baja portabilidad y la fuerte dependencia del hardware.

Este tipo de lenguajes hacen corresponder a cada instrucción en ensamblador una instrucción en código máquina. Esta traducción la lleva a cabo un programa traductor denominado ensamblador.

Dado que el lenguaje ensamblador está fuertemente condicionado por la arquitectura del ordenador que soporta, los programadores no suelen escribir programas de tamaño considerable en ensamblador, sino que utilizan este lenguaje para afinar partes importantes de programas escritos en lenguajes de más alto nivel.

El lenguaje ensamblador sigue siendo importante, ya que ofrece al programador el control total de la máquina y como resultado genera un código compacto, rápido y eficiente.

Lenguajes de alto nivel

Contenido complementario

Tal como tuvimos ocasión de ver en el apartado de la evolución del software, la siguiente generación de los lenguajes de programación tenían como objetivo facilitar el trabajo del programador permitiéndole desarrollar aplicaciones independientes de la máquina, lo cual dio lugar a la aparición de los lenguajes de programación de alto nivel.

Contenido complementario

Estos lenguajes más evolucionados utilizan unas instrucciones más fáciles de entender y proporcionan facilidades para expresar alteraciones del flujo de control de una forma más intuitiva.

En la actualidad hay una gran cantidad de lenguajes de alto nivel en uso y se han desarrollado diferentes versiones de algunos de ellos. Esta heterogeneidad constituye el principal problema que presentan estos lenguajes.

Los lenguajes de alto nivel, a diferencia de los lenguajes máquina y ensamblador, no permiten aprovechar completamente los recursos internos de la máquina.

Todas estas características ponen de manifiesto un acercamiento a las personas y un alejamiento de la máquina. Por esta razón, los programas escritos en lenguaje de alto nivel no pueden ser interpretados directamente por la computadora, por lo que es necesario realizar previamente su traducción a lenguaje máquina.


Bibliografía sugerida

Para ello, se deben utilizar unos programas traductores (desarrollados con antelación para cada computadora) que se encarguen de realizar dicho proceso de traducción.

Hay dos tipos de traductores de lenguajes de alto nivel que vamos a considerar: los compiladores y los intérpretes.

Traductores. Compiladores e intérpretes

Como un ordenador puede interpretar y ejecutar sólo el código máquina, existen programas especiales, denominados traductores, que traducen programas escritos en un lenguaje de programación al lenguaje máquina de la computadora.

Un traductor es un metaprograma que toma como entrada un programa (o parte de un programa) escrito en lenguaje simbólico -alejado de la máquina- denominado programa fuente y proporciona como salida otro programa semánticamente equivalente y escrito en un lenguaje comprensible por el hardware de la computadora que recibe el nombre de programa objeto.

A continuación se detallan dos tipos de traductores: los compiladores y los intérpretes.

Un compilador traduce completamente en programa fuente, con lo que genera un programa objeto (semánticamente equivalente) escrito en lenguaje máquina. El programa fuente suele estar contenido en un fichero, y el programa objeto puede almacenarse como otro fichero en memoria masiva para ser ejecutado más adelante, sin necesidad de volver a realizar la traducción. Una vez traducido un programa, su ejecución es independiente de su compilación.

Un intérprete permite que un programa fuente escrito en un determinado lenguaje sea traducido y ejecutado directamente sentencia a sentencia por la computadora. El intérprete capta una sentencia fuente, la analiza y la interpreta, lo que da lugar a su ejecución inmediata. En este caso no se crea ningún fichero o programa objeto almacenable en memoria masiva para posibles ejecuciones futuras.

Reflexión

Los lenguajes de programación y los traductores facilitan la comunicación entre el programador y la máquina.
Arriba