ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Comiladores


Enviado por   •  8 de Mayo de 2012  •  4.972 Palabras (20 Páginas)  •  394 Visitas

Página 1 de 20

COMPILADORES

Visión histórica del desarrollo de los compiladores

•1946, se desarrolla el primer ordenador digital

Las instrucciones que se ejecutaban eran códigos numéricos, lenguaje de máquina., esto es engorroso, entonces surgen los ensamblador. Al inicio el programa se escribía mediante claves y luego se traducía manualmente al lenguaje de máquina. Cuando esto lo hizo la misma máquina, a este trabajo se le llamó ensamblar el programa.

•1950, John Backus dirige una investigación en IBM en un lenguaje algebraico

•1954, se comienza a desarrollar FORTRAN

•1957, FORTRAN se utiliza en la IBM modelo 704

•Surge el concepto traductor

•El primer compilador de FORTRAN tardó 18 años-persona en realizarse

•FORTRAN era dependiente de la máquina

•Paralelamente al desarrollo de FORTRAN en América, en Europa surge una corriente que pretende que los lenguajes fuesen independientes de la máquina, esta corriente estaba influida por los trabajos sobre GLC de Chomsky

•Surge un grupo Europeo encabezado por F.L. Bauer, en la que participó ACM y John Backus. De este grupo surge un informe que define un Lenguaje Algebraico Internacional, publicado en Zurich en 1958

•1969, aparece Algol 60

•Junto con los lenguajes también la técnica de los compiladores avanza

•1958, Strong y otros proponen una solución al problema de que un compilador fuera portable, y esta era dividir al compilador en dos fases “front end” (analiza el programa fuente) y “back end” (genera código objeto para la máquina objeto).

•El puente de unión era un lenguaje intermedio denominado UNCOL –Universal Computer Oriented Language(no funcionó)

•1959, Rabin y Scott proponen el empleo de AFD y AFN para el reconocimiento lexicográfico de los lenguajes

•Aparece BNF (Backus-1960, Naur-1963, Knuth-1964) como una guía para el desarrollo del análisis sintáctico

•1959, Sheridan describe un método de parsing de FORTRAN para introducir paréntesis en una expresión

•En los 60’s se desarrollan diversos métodos de parsers ascendentes y descendentes

•Floyd más adelante introduce la técnica de precedencia de operadores y uso de funciones de precedencia

•1961, se usa por primera vez un parsing descendente recursivo

•En los 60’s se estudia el paso de parámetros por nombre, valor y referencia y se incluyen los procedimientos recursivos para Algol 60

•Se desarrolla la localización dinámica de datos

•1968, se estudia y definen las GLC, los parsers predictivos y la eliminación de recursividad izquierda

•1975, aparece LEX generador automático de analizadores léxicos a partir de expresiones regulares bajo UNIX

•A mitad de los 70’s Johnson crea YACC para UNIX (generador de analizadores sintácticos)

•Ahora un compilador de divide en varias fases

•El último lenguaje de programación de amplia aceptación es JAVA (es interpretado)

Conceptos Básicos

Traductor. Cualquier programa que toma como entrada un texto escrito en un lenguaje llamado fuente y da como salida un programa equivalente en otro lenguaje, el lenguaje objeto.

Si el lenguaje fuente de un lenguaje de programación de alto nivel y el objeto un lenguaje de bajo nivel (ensamblador o código de máquina), al traductor se le denomina compilador.

Ensamblador. Es un programa traductor cuyo lenguaje fuente es el lenguaje ensamblador.

Intérprete. Es un programa que no genera un programa equivalente, sino que toma una sentencia del programa fuente en un lenguaje de alto nivel y la traduce al código equivalente y al mismo tiempo lo ejecuta.

En un principio debido a la escasez de memoria se utilizaban más los intérpretes, ahora se usan más los compiladores (a excepción de JAVA)

Ventajas de compilar vs a interpretar:

•Se compila una vez, se ejecuta n veces

•En ciclos, la compilación genera código equivalente, interpretándolo se traduce tantas veces una línea como veces se repite el ciclo

•El compilador tiene un visión global del programa

Ventajas del intérprete vs el compilador:

•Un intérprete necesita menos memoria que un compilador

•Permiten una mayor interactividad con el código en tiempo de desarrollo

Programas que el compilador necesita para obtener un programa ejecutable:

•Preprocesador. Se ocupa de incluir ficheros,expandir macros, eliminar comentarios.

•Ligador. Se encarga de construir el fichero ejecutable añadiendo al fichero objeto generado por el compilador las cabeceras necesarias y las funciones de librería utilizadas por el programa fuente.

•Cargador

•Depurador. Permite seguir paso a paso la depuración de un programa.

•Ensamblador

Tipos de compiladores:

•De una pasada

•De múltiples pasadas

•De carga y ejecución

•De depuración

•De optimización

•Ensamblador. El lenguaje fuente es ensamblador y posee una estructura sencilla.

•Compilador cruzado. Se genera código en lenguaje objeto para una máquina diferente de la que se está utilizando para compilar.

•Compilador con montador. Compilador que compila distintos módulos de forma independiente y después es capaz de enlazarlos.

•Autocompilador.

...

Descargar como (para miembros actualizados)  txt (33.6 Kb)  
Leer 19 páginas más »
Disponible sólo en Clubensayos.com