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