Stephany diapositivas

11

Click here to load reader

Transcript of Stephany diapositivas

Page 1: Stephany diapositivas

Un compilador toma un texto (código fuente) escrito enun lenguaje de alto nivel y lo traduce a un lenguajecomprensible por las computadoras (código objeto).

Características de un compilador

Generalmente un compilador se divide en dos partes:

* Front End: parte que analiza el código fuente, comprueba su validez, genera el árbol de derivación y rellena los valores de la tabla de símbolos. Parte que suele ser independiente de la plataforma o sistema operativo para el que funcionará.

* Back End: parte en donde se genera el código máquina exclusivo para una plataforma a partir de lo analizado en el front end.

Page 2: Stephany diapositivas

Partes en las que trabaja un compilador

Conceptualmente un compilador opera en fases.

Cada una de las cuales transforma el programa

fuente de una representación en otra. En la

figura 3 se muestra una descomposición típica de

un compilador. En la práctica se pueden agrupar

fases y las representaciones intermedias

entres las fases agrupadas no necesitan ser

construidas explícitamente.

Programa fuente

Page 3: Stephany diapositivas
Page 4: Stephany diapositivas

Programa objeto

Figura 3.- Fases de un compilador.

Las tres primeras fases, que forman la mayor parte

de la porción de análisis de un compilador se

analizan en la sección IX. Otras dos actividades, la

administración de la tabla se símbolos y el manejo

de errores, se muestran en interacción con las seis

fases de análisis léxico, análisis sintáctico, análisis

semántico, generación de código intermedio, optimación

de código y generación de código. De modo informal

también se llamarán "fases" al administrador de la tabla

de símbolos y al manejador de errores

Page 5: Stephany diapositivas

Es un programa informático capaz de analizar y

ejecutar otros programas, escritos en

un lenguaje de alto nivel. Los intérpretes se

diferencian de los compiladores en que mientras

estos traducen un programa desde su descripción

en un lenguaje de programación al código de

máquina del sistema, los intérpretes sólo realizan

la traducción a medida que sea necesaria,

típicamente, instrucción por instrucción, y

normalmente no guardan el resultado de dicha

traducción.

Page 6: Stephany diapositivas

Los programas interpretados suelen ser más

lentos que los compilados debido a la necesidad

de traducir el programa mientras se ejecuta,

pero a cambio son más flexibles como entornos

de programación y depuración y permiten ofrecer

al programa interpretado un entorno no

dependiente de la máquina donde se ejecuta el

intérprete, sino del propio intérprete (lo que se

conoce comúnmente como máquina virtual).

Page 7: Stephany diapositivas

Se caracteriza por expresar los algoritmos de una manera

adecuada a la capacidad cognitiva humana, en lugar de a la

capacidad ejecutora de las máquinas.

En los primeros lenguajes de alto nivel la limitación era que se

orientaban a un área específica y sus instrucciones requerían

de una sintaxis predefinida. Se clasifican como lenguajes

procedimentales.

Otra limitación de los lenguajes de alto nivel es que se

requiere de ciertos conocimientos de programación para realizar

las secuencias de instrucciones lógicas. Los lenguajes de alto

nivel se crearon para que el usuario común pudiese solucionar un

problema de procesamiento de datos de una manera más fácil y

rápida.

Page 8: Stephany diapositivas

Un lenguaje de programación de bajo

nivel es el que proporciona un conjunto de

Instrucciones aritmeticológicas sin la

capacidad de encapsular dichas instrucciones

en funciones que no esté ya contempladas

en la arquitectura del hardware

Page 9: Stephany diapositivas

Suelen ser clasificados de alto nivel, pero permiten ciertos manejos de

bajo nivel. Son precisos para ciertas aplicaciones como la creación

de sistemas operativos, ya que permiten un manejo abstracto

(independiente de la máquina, a diferencia del lenguaje ensamblador),

pero sin perder mucho del poder y eficiencia que tienen los lenguajes

de bajo nivel.

Una característica distintiva, por ejemplo, que convierte al lenguaje de

programación C en un lenguaje de medio nivel y al lenguaje de programación

Pascal en un lenguaje de alto nivel, es que en el primero es posible manejar

las letras como si fueran números (en Pascal no), por el contrario, en Pascal es

posible concatenar las cadenas de caracteres con el operador suma y copiarlas

con la asignación (en C es el usuario el responsable de llamar a las funciones

correspondientes).

Page 10: Stephany diapositivas

Es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en

los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado

en BCPL.

Al igual que B, es un lenguaje orientado a la implementación de Sistemas

Operativos, concretamente Unix. Lenguaje C es apreciado por la eficiencia del

código que produce y es el lenguaje de programación más popular para crear

software de sistemas, aunque también se utiliza para crear aplicaciones.

Se trata de un lenguaje débilmente tipificado de medio nivel pero con

muchas características de bajo nivel. Dispone de las estructuras típicas de

los lenguajes de alto nivel pero, a su vez, dispone de construcciones del

lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen

ofrecer extensiones al lenguaje que posibilitan mezclar código

en ensamblador con código C o acceder directamente memoria o dispositivos

periféricos.

Page 11: Stephany diapositivas

Stephany Colmenarez

20389626

Ti-22

Introducción a la computación