COMPILADORES EH INTERPRETES
Enviado por APOSTOL • 26 de Julio de 2012 • 1.821 Palabras (8 Páginas) • 585 Visitas
COMPILADORES EH INTÉRPRETES.
Compilador: Un compilador acepta programas escritos en un lenguaje de alto nivel y los traduce a otro lenguaje, generando un programa equivalente independiente, que puede ejecutarse tantas veces como se quiera.
En un compilador hay que distinguir tres lenguajes diferentes:
El de los programas de partida (LA).
El de los programas equivalentes traducidos (LB), normalmente el lenguaje de máquina.
El lenguaje en que está escrito el propio compilador (LC), que puede ser igual o diferente a uno de los otros dos.
Un compilador debe, en primer lugar, convertir el archivo fuente en un archivo intermedio que se llama archivo objeto o archivo código objeto. El archivo objeto contiene una traducción del código del programa en lenguaje máquina, pero aún no se considera un programa ejecutable.
Los compiladores siguen estas tareas:
Análisis léxico. Es la parte inicial de leer y analizar el código fuente. El texto es leído y dividido en tokens, cada uno de los cuales corresponde a un símbolo en el lenguaje de programación, por ejemplo, el nombre de una variable, una palabra reservada o un número.
Análisis sintáctico. En esta fase se toma una lista de tokens producida por el análisis léxico y los acomoda en una estructura de árbol llamada árbol sintáctico que refleja la estructura del programa. Esta fase también se llama parsing.
Verificación de tipos. En esta parte se analiza el árbol sintáctico para determinar si el programa viola ciertos requerimientos de consistencia, es decir, si una variable se utiliza pero no se declara, o si se usa en un contexto que no tiene sentido por el tipo de variable, tal como un string para utilizar un valor booleano como una función apuntador.
Generación de código intermedio. El programa se traduce a un lenguaje simple independiente de la máquina.
Ubicación de registros. Los nombres simbólicos de las variables utilizadas en el código intermedio se traducen a números, cada uno de ellos corresponde a un registro en el código máquina objetivo (de la máquina que va a ejecutar finalmente el programa).
Generación de código máquina. El lenguaje intermedio se traduce al lenguaje ensamblador (una representación textual de código máquina) para una arquitectura de máquina específica.
Ensamblado y Enlazado. El código en lenguaje ensamblador se traduce a una representación binaria y se determina la dirección real de las variables, funciones, etc.
INTERPRETES.
Un intérprete traduce un código fuente en lenguaje máquina también. El intérprete difiere del compilador en que ejecuta cada orden una vez que se traduce. Este proceso puede hacer más lenta la ejecución del programa, así que los intérpretes se utilizan menos que los compiladores. Un intérprete es otra manera de implementar un lenguaje de programación. La interpretación comparte muchos aspectos con el compilador. Los análisis léxico, sintáctico y verificación de tipos son exactamente los mismos que en un compilador.
Pero en lugar de generar código del árbol sintáctico, el árbol sintáctico se procesa directamente para evaluar expresiones y ejecutar sentencias, y así hasta terminar. Un intérprete puede necesitar evaluar la misma parte del árbol sintáctico varias veces (por ejemplo cuando se hacen ciclos), por eso la interpretación puede ser más lenta que la ejecución de un programa compilado. Pero escribir un intérprete es más fácil de mover a una máquina diferente, así que para aplicaciones donde la velocidad no importa, lo mejor es utilizar un intérprete.
Es muy útil sabe cómo se hace un intérprete o un compilador, porque esto permite a los programadores tener una idea de lo que hacen los programas de alto nivel, lo que a su vez, ayudará a los programadores para crear código más eficiente. Otras razones. Los errores que devuelven los compiladores proporcionan una manera fácil de entender el código fuente; además, se conoce la diferencia entre errores léxicos, sintácticos, errores de tipos, y así.
Ventajas del intérprete frente al compilador:
El programa se puede ejecutar de inmediato, sin esperar a ser compilado.
Puede ser interrumpido con facilidad.
Puede ser rápidamente modificado y ejecutado nuevamente.
Resultan muy apropiados durante la fase de desarrollo de un programa, ya que la compilación no permite la ejecución paso a paso del programa y con ello impide la edición seguimiento y depuración del programa.
EJECUTABLES.
Un ejecutable o archivo ejecutable, es tradicionalmente un archivo binario cuyo contenido se interpreta por el ordenador como un programa.
Generalmente, contiene instrucciones en código máquina de un procesador en concreto, pero también puede contener bytecode que requiera un intérprete para ejecutarlo. Además suele contener llamadas a funciones específicas de un sistema operativo.
Dependiendo del tipo de que se traten las instrucciones, hablaremos de ejecutables portables (se pueden ejecutar en varias plataformas) y no portables (destinado a una plataforma concreta). Por ejemplo, un ejecutable Java es portable ya que utiliza un bytecode no asociado a un procesador en concreto.
Sin embargo en un sentido más general, un programa ejecutable no tiene por qué necesariamente contener código de máquina, sino que puede tener instrucciones a interpretar por otro programa. Este tipo de ejecutables son conocidos con el nombre de scripts.
Determinar si un archivo es ejecutable es sobre todo una cuestión de convención. Unos sistemas operativos se basan en la extensión de archivo (como la terminación .exe) y otros lo hacen leyendo los metadatos (como los bits de permiso de ejecución en Unix).
En la mayoría de los sistemas modernos, un archivo ejecutable contiene mucha información que no es parte del programa en sí: recursos como textos e imágenes, requisitos del entorno de ejecución, información simbólica y de depuración, u otra información que ayude al sistema operativo a ejecutar el programa.
CONSOLA DE LINEA DE COMANDOS.
Interfaz de Línea de Comandos (CLI), por su acrónimo en inglés de Command Line Interface (CLI), es un método que permite a las personas dar instrucciones a algún programa informático por medio de una línea
...