Laboratorio de Lenguajes de programación
Podemos decir que existen dos principales traductores de lenguajes de alto nivel, estos son el compilador y el interpete.
Un compilador primero debe de convertir un código fuente en un archivo intermedio, al que se le llama código objeto, contiene una traducción del código en lenguaje maquina, después existe una serie de pasos en los que los compiladores realizan fases los cuales son.
- Análisis léxico. Es leído y dividido en tokens, según a un simbolo en el lenguaje de programación, por ejemplo, un numero, palabras reservadas, variables.
- Análisis sintáctico. Acomoda la estructura de árbol sintáctico según la lista de tokens de la fase anterior, llamado tambien parsing.
- Verificación de tipos. Se analiza el árbol sintáctico para saber si están bien los requisitos de consistencia, por ejemplo cuando utilizamos una variable que no se utiliza.
- Generación de código intermedio. Traduce a un lenguaje simple independiente de la maquina.
- Ubicación de registros. Los símbolos de las variables son cambiados a los números, cada uno de ellos es un registro de código maquina objetivo.
- Generación de código maquina. El intermedio se traduce a ensamblador para una arquitectura de maquina especifica.
- Ensamblado y Enlazado. Se traduce a representación binaria, determinando la dirección de las funciones, variables, etc.
- Después un programa enlazador, combina los modulos del código objeto para hacer un ejecutable.
|
Compilación |
Un interprete es otra manera de traducir un lenguaje, compartiendo aspectos del compilador como el análisis léxico y sintético. En lugar de hacer un árbol sintáctico, se procesa directamente las expresiones y sentencias, para así, utilizar funciones y operaciones mas potentes, realizando la operación paso a paso, para cada sentencia de entrada, se ejecuta y vuelve a iniciar con la siguiente sentencia, normalmente no guardan el resultado de la traducción.
Para nosotros como futuros programadores debemos de saber que es un interprete y un compilador, para así tener la idea de como se trabaja el programa y crear códigos mas eficientes.
Podemos decir que:
- El programa compilado puede correr solo.
- El interprete traduce en forma que lo va leyendo.
- La ejecución de un programa compilado es mas rapido que uno interpretado
El interprete puede ser interpretado en cualquier SO, en cambio un programa compilado solo funciona en la plataforma (.exe .out), por otra parte, el programa compilado puede ser distribuido en base a el mismo SO, mientras que el interpretado necesita del interprete.
Espero que mi explicación les sirva, si tienen algún comentario acerca de esta entrada, espero me digan ya que estoy abierto a cualquier error.