Download COMPILADORES OBJETIVOS

Document related concepts
Transcript
UNIVERSIDAD PRIVADA DE CIENCIAS ADMINISTRATIVAS Y TECNOLÓGICAS
_____________________________________________________________________________
COMPILADORES
INTRODUCCIÓN
Un compilador es un programa informático que traduce un programa escrito en un
lenguaje de programación a otro lenguaje de programación, generando un programa
equivalente que la máquina será capaz de interpretar.
Al inicio de la era computacional, todo se programaba en “lenguaje de maquina” y la tarea
era exageradamente tediosa, puesto que existían muchos códigos numéricos que eran
difíciles de aprender y fáciles de confundir. Los creadores de los microprocesadores y
circuitos programables, se dieron cuenta de las limitaciones que daba este tipo de
programación, dando un gran pasó al lenguaje ensamblador. Encontrar una forma de
expresar u ordenar a la computadora de una manera más sencilla o mejor dicho “natural”.
El primer compilador de la historia es el A-0 (Math Matic) 1, desarrollado por Grace Hopper.
En 1954 surge el FORTRAM2 basados en la investigación sobre intérpretes de John
Backups y en 1958 John Backups con la colaboración de Chomsky. F. Bauer de la
Universidad de Múnich desarrollan el ALGOL.
OBJETIVOS
OBJETIVO GENERAL
Dar a conocer el tema de compiladores aplicando herramientas informáticas como Word.
Excel. PowerPoint.
OBJETIVOS ESPECÍFICOS
Word. Realizar el informe del tema de investigación.3
Excel. Realizar gráficos comparativos sobre el tema.
PowerPoint. Realizar la presentación del tema.
1 Matemática automática.
2 Fortram se desarrolló en grupo durante 18 años.
3 Informe de lectura.
1|Página
UNIVERSIDAD PRIVADA DE CIENCIAS ADMINISTRATIVAS Y TECNOLÓGICAS
_____________________________________________________________________________
ALCANCES Y LIMITES
Debido a la cantidad de lenguajes, compiladores e intérpretes, para estos lenguajes de
programación a lo largo de la historia, además, las particulares similitudes y diferencias
que presentan estos, se convino presentar el modelo de compilación de c, sin tomar en
cuenta la previa descripción del proceso de análisis léxico y sintáctico del lenguaje a
compilar.
JUSTIFICACIÓN
El presente tema de investigación, se realiza por la necesidad de aprender de manera
introductoria a la comprensión de los compiladores. De esta manera demostrar mi punto
de vista respecto a las necesidades de la información sobre características del tema.
RELEVAMIENTO DE LA INFORMACIÓN
LENGUAJE DE PROGRAMACIÓN INTERPRETADO Y COMPILADO
Un lenguaje interpretado es un lenguaje de programación que está diseñado para ser
ejecutado por medio de un intérprete, en contraste con los lenguajes compilados.
Teóricamente, cualquier lenguaje puede ser compilado o ser interpretado, así que esta
designación es aplicada puramente debido a la práctica de implementación común y no a
alguna característica subyacente de un lenguaje en particular. Sin embargo, hay lenguajes
que son diseñados para ser intrínsecamente interpretativos, por lo tanto un compilador
causará una carencia de la eficacia. Muchos autores rechazan la clasificación de
lenguajes de programación entre interpretados y compilados, considerando que el modo
de ejecución (por medio de intérprete o de compilador) del programa escrito en el
lenguaje es independiente del propio lenguaje. A ciertos lenguajes interpretados también
se les conoce como lenguajes de script.
Muchos lenguajes han sido implementados usando tanto compiladores como intérpretes,
incluyendo Lisp, Pascal, C, BASIC, y Python. Mientras que Java es traducido a una forma
que se destina a ser interpretada, la compilación justo a tiempo es frecuentemente usada
para generar el código de máquina. Los lenguajes de Microsoft .NET compilan a una
forma intermedia (CIL) la cual es entonces a menudo compilada en código de máquina
nativo; sin embargo hay una máquina virtual capaz de interpretar el CIL. Muchas
implementaciones Lisp pueden mezclar libremente código interpretado y compilado. Estas
implementaciones también usan un compilador que puede traducir arbitrariamente código
fuente en tiempo de ejecución (runtime) a código de máquina.
2|Página
UNIVERSIDAD PRIVADA DE CIENCIAS ADMINISTRATIVAS Y TECNOLÓGICAS
_____________________________________________________________________________
COMPILADOR vs. INTERPRETE
Compilador. Se compila una vez, se ejecuta n veces.
El proceso de compilación tiene una visión global de todo el programa, por lo cual la
gestión de errores es más eficiente. La ejecución es más rápida. 4


Tiempo de compilación.
Tiempo de ejecución.
Intérprete. Se traduce cada vez que se ejecuta.
No realiza la traducción, desarrolla las operaciones que se especifican en el programa
fuente. Procesa el programa y la entrada simultáneamente. Permite interaccionar más con
el código en tiempo de ejecución. Necesita menos memoria. 5
COMPILADOR JAVA
El compilador de Java convierte el código fuente directamente en código objeto nativo,
esto da lugar a un gran rendimiento en la ejecución, pero tapa el camino a la portabilidad.
Existe otra técnica, conocida como compilación JIT (Just In Time, o ‘’’compilación al
vuelo’’’), convierte el byte code a código nativo cuando se ejecuta la aplicación. Lenguaje
de programación creado en Sun Microsystems por James Gosling, Arthur Van Hoff, y Andy
Bechtolsheim (Green Team).
COMPILADOR C#
Utiliza el compilador just-in-time (JIT o JITter), compila el IL. (Lenguaje Intermedio) a
código nativo y cambia el stub para que apunte al código nativo que está en cache, así las
subsecuentes invocaciones podrían ejecutar el código nativo C# o C.
EL MODELO DE COMPILACIÓN DE C
En la figura 3 se muestran las distintas etapas que cubre el compilador para obtener el
código ejecutable.6
4 Ver figura 1 en la sección anexos.
5 Ver figura 2 en la sección anexos.
6 Ver figura 3 en la sección anexos.
3|Página
UNIVERSIDAD PRIVADA DE CIENCIAS ADMINISTRATIVAS Y TECNOLÓGICAS
_____________________________________________________________________________
 EL PREPROCESADOR
Esta parte del proceso de compilación será cubierta con más detalle en el capítulo 12
referente al preprocesador. Sin embargo, se da alguna información básica para
algunos programas de C.
El preprocesador acepta el código fuente como entrada y es responsable de:


Quitar los comentarios.
Interpretar las directivas del preprocesador las cuales inician con #.
 COMPILADOR DE C
El compilador de C traduce el código fuente en código de ensamblador. El código fuente
es recibido del preprocesador.
 ENSAMBLADOR
El ensamblador crea el código fuente o los archivos objeto. En los sistemas con UNIX se
podrán ver los archivos con el sufijo .o.
 LIGADOR
Si algún archivo fuente hace referencia a funciones de una biblioteca o de funciones que
están definidas en otros archivos fuentes, el ligador combina estas funciones (con main ())
para crear un archivo ejecutable. Las referencias a variables externas en esta etapa son
resueltas.
CONCLUSIÓN
4|Página
UNIVERSIDAD PRIVADA DE CIENCIAS ADMINISTRATIVAS Y TECNOLÓGICAS
_____________________________________________________________________________
ANEXOS
5|Página
UNIVERSIDAD PRIVADA DE CIENCIAS ADMINISTRATIVAS Y TECNOLÓGICAS
_____________________________________________________________________________
COMPILADOR.
Figura 1.7
Compilado Código
Código
Ejecució
Compilado
Ejecució
r
objet
objet
Programa
Programa
r
n
Fuent
oo
Fuent
n
ee
Resultad
Resultad
os
os
Tiempo de
Tiempo de
compilación
compilación
Tiempo de
Tiempo de
ejecución
ejecución
7 Modelo del funcionamiento de un compilador. Ver página 3.
6|Página
UNIVERSIDAD PRIVADA DE CIENCIAS ADMINISTRATIVAS Y TECNOLÓGICAS
_____________________________________________________________________________
INTERPRETE.
Programa
Fuente
Ejecución
Ejecución
Figura 2.8
8 Modelo del funcionamiento de in interprete. Ver página 2.
7|Página
UNIVERSIDAD PRIVADA DE CIENCIAS ADMINISTRATIVAS Y TECNOLÓGICAS
_____________________________________________________________________________
MODELO DE COMPILACIÓN DE C.
Figura 3.9
9 Modelo de compilación de C. Ver página 3.
8|Página
UNIVERSIDAD PRIVADA DE CIENCIAS ADMINISTRATIVAS Y TECNOLÓGICAS
_____________________________________________________________________________
ÍNDICE
COMPILADORES............................................................................................................... 1
INTRODUCCIÓN............................................................................................................. 1
OBJETIVOS........................................................................................................................ 1
OBJETIVO GENERAL.....................................................................................................1
OBJETIVOS ESPECÍFICOS...........................................................................................1
ALCANCES Y LIMITES...................................................................................................2
JUSTIFICACIÓN................................................................................................................. 2
RELEVAMIENTO DE LA INFORMACIÓN...........................................................................2
LENGUAJE DE PROGRAMACIÓN INTERPRETADO.....................................................2
COMPILADOR vs. INTERPRETE....................................................................................3
COMPILADOR JAVA.......................................................................................................3
COMPILADOR C#........................................................................................................... 3
EL MODELO DE COMPILACIÓN DE C...........................................................................3

EL PREPROCESADOR...........................................................................................4

COMPILADOR DE C................................................................................................4

ENSAMBLADOR......................................................................................................4

LIGADOR................................................................................................................. 4
CONCLUSIÓN.................................................................................................................... 4
ANEXOS............................................................................................................................. 5
COMPILADOR.................................................................................................................... 6
Figura 1............................................................................................................................... 6
INTERPRETE..................................................................................................................... 7
Figura 2............................................................................................................................... 7
MODELO DE COMPILACIÓN DE C...................................................................................8
Figura 3............................................................................................................................... 8
9|Página