SlideShare una empresa de Scribd logo
1 de 24
TEMA 01:
INTRODUCCIÓN A
COMPILADORES
ING. MARTÍN TUESTA
PEREYRA
ingmartintuesta@gmail.com
#981960174
TRADUCTOR- DEFINICIÓN
 Es un programa que lee un programa escrito en
un lenguaje (lenguaje fuente) y lo traduce a un
programa equivalente en otro lenguaje (lenguaje
objeto).
COMPILADOR - DEFINICIÓN
 Proceso de traducción que convierte un
programa fuente escrito en un lenguaje de alto
nivel a un programa objeto en código máquina y
listo por tanto para ejecutarse en el ordenador,
con poca o ninguna preparación adicional.
¿PORQUÉ NECESITAMOS
COMPILADORES?
 Es difícil escribir, depurar, dar mantenimiento y
entender programas escritos en lenguaje
ensamblador.
 Con el lenguaje máquina debemos
comunicarnos directamente con la computadora
en términos de bits, registros y operaciones muy
primitivas.
 El lenguaje máquina no es más que una
secuencia de 1’s y 0’s.
¿PORQUÉ NECESITAMOS
COMPILADORES?
 Es difícil escribir, depurar, dar mantenimiento y
entender programas escritos en lenguaje
ensamblador.
 Con el lenguaje máquina debemos
comunicarnos directamente con la computadora
en términos de bits, registros y operaciones muy
primitivas.
 El lenguaje máquina no es más que una
secuencia de 1’s y 0’s.
HISTORIA
 No puede darse una fecha exacta del primer desarrollo.
 A finales de la década de 1940, comenzaron a construirse las
primeras computadoras digitales y fue necesario implementar un
lenguaje capas de realizar los cálculos, es aquí donde aparece el
lenguaje de maquina que representaba secuencias de códigos
numéricos:
C7 06 0000 0002 (instrucción que mueve el número dos a la
ubicación 0000)
 Desafortunadamente este lenguaje era tedioso de seguir y
complicado de mantener, por lo que esta forma de codificación
fue reemplazada por el lenguaje ensamblador, en el cual las
instrucciones y las localidades de memoria son formas simbólicas.
Un ensamblador traduce de los códigos simbólicos a lenguaje de
maquina. Aún con esta mejora, el lenguaje ensamblador sigue
siendo demasiado difícil de mantener:
MOV X, 2 (instrucción en ensamblador equivalente a la anterior)
HISTORIA…
 En este punto se presenta la necesidad de lenguajes que permitan
escribir los programas de forma concisa, similar a una notación
matemática, y que se pudieran traducir a código ejecutable para una
máquina dada:
X = 2
 En 1950, G. M. Hooper acuña el termino compilador y aparecen los
primeros trabajos sobre compiladores relacionados con la traducción
de formulas aritméticas a código de máquina.
 John Backus lideró un grupo de trabajo en IBM para realizar de un
traductor de código máquina a fórmulas matemáticas. Resultando
con gran éxito: la especificación de un lenguaje de alto nivel
(FORTRAN, FORmule TRANslation) Trabajaron 18 personas durante
mas de un año en el proyecto.
 Fue un compilador hecho ad-hoc (a puro corazón), pues no existía
una teoría formal, sino que se iban resolviendo las construcciones
una a una, para cada situación particular.
HISTORIA…
 Noam Chomsky comienza sus estudios sobre la estructura del lenguaje
natural. Sus estudios lo condujeron a la clasificación de los lenguajes de
acuerdo a una jerarquía de sus gramáticas, además sus estudios sobre
los algoritmos de reconocimiento derivaron en una automatización del
proceso de traducción mas eficiente.
 1960, se diseña el lenguaje LISP. En un principio, el código LISP se
traducía manualmente a código máquina. Se escribió en LISP un
programa capaz de interpretar programas LISP, que se tradujo
manualmente a código de máquina, construyendo de este modo un
intérprete ejecutable de LISP.
 Knuth desarrolla la mayoría de las técnicas de análisis sintáctico.
 1970, se presentan los mayores avances en el área de lenguajes de
programación.
 Aparecen los primeros programas que automatizan los procesos de
análisis léxico y sintáctico. Surgiendo la llamada Torre de Babel debido a
HISTORIA…
 Niklaus Wirth, diseña Pascal, pensado para la enseñanza.
 Wirth propone el concepto de representación intermedia de código,
separando el proceso de traducción en dos fases: el front-end
encargada de analizar el programa fuente (operaciones dependientes
sólo del lenguaje fuente) y el back-end encargada de generar el
código para la máquina objeto.
 1980, comienzan a proliferar las técnicas de mejoramiento de código
(optimización), se consolida y prolifera el concepto de asignación y
liberación de memoria dinámica. La programación orientada a
objetos es extensamente utilizada y madura.
 1990, los lenguajes de programación y compiladores son muy
similares a lo que tenemos actualmente, surgen los ambientes de
desarrollo, los lenguajes interpretados comienza a ganar terreno en
aplicaciones de Internet y el código intermedio se vuelve a poner de
moda.
LENGUAJES FUENTE Y OBJETO
 Los lenguajes fuente pueden ser desde
lenguajes de programación tradicionales (C#,
Java, Phyton, etc) hasta lenguajes
especializados.
 Los lenguajes objeto son igualmente variados;
un lenguaje objeto puede ser otro lenguaje de
programación o el lenguaje máquina de
cualquier microprocesador.
CÓDIGO FUENTE
 Diseñado para su mejor comprensión humana.
 Concuerda con nuestras nociones de gramática.
 Utiliza construcciones con nombres, como son
variables y procedimientos.
 Ejemplo:
Console.Write(“Hola Mundo”);
CÓDIGO MÁQUINA
 Optimizado para hardware.
 Consiste en instrucciones máquina.
 Utiliza registros y direcciones de memoria sin
nombre.
 Mucho más difícil para la comprensión humana.
 Ejemplo:
ida $30, -32 ($30)
COMPILADOR - INTRODUCCIÓN
LENGUAJE DE PROGRAMACIÓN
 Un lenguaje de programación es un lenguaje formal
diseñado para realizar procesos que pueden ser
llevados a cabo por máquinas como las
computadoras.
 Pueden usarse para crear programas que controlen el
comportamiento físico y lógico de una máquina, para
expresar algoritmos con precisión, o como modo de
comunicación humana.
 Está formado por un conjunto de símbolos y reglas
sintácticas y semánticas que definen su estructura y el
significado de sus elementos y expresiones. Al proceso
por el cual se escribe, se prueba, se depura, se compila
(de ser necesario) y se mantiene el código fuente de un
programa informático se le llama programación.
¿PORQUÉ SE NECESITA UN
LENGUAJE DE PROGRAMACIÓN DE
ALTO NIVEL?
 Los lenguajes de "Alto Nivel" son los más
utilizados como lenguaje de programación.
Estos lenguajes permiten que los algoritmos se
expresen en un nivel y estilo de escritura
fácilmente legible y comprensible por otros
programadores.
 Permite especificar de manera precisa sobre qué
datos debe operar una computadora, cómo
deben ser almacenados o transmitidos y qué
acciones debe tomar bajo una variada gama de
circunstancias. Todo esto, a través de un
lenguaje que intenta estar relativamente
COMPILADORES
 En los años 50 los compiladores eran
considerados programas muy difíciles.
 FORTRAN se desarrolló en grupo durante 18
años.
 Se han desarrollado técnicas sistemáticas,
entornos de programación y herramientas
software que facilitan la tarea de desarrollo.
COMPILADORES
 Gran variedad de lenguajes de alto nivel
 Gran variedad de lenguajes objeto, tanto otro
lenguaje de alto nivel como código máquina.
 No puede darse una fecha exacta del primer
desarrollo.
 Varios grupos independientemente desarrollaron
técnicas de análisis.
 Los primeros traducían fórmulas aritméticas a
código máquina
TIPOS DE TRADUCTORES
RELACIONADOS CON LOS
COMPILADORES
 Ensamblador: Programa que convierte de lenguaje
mnemonico a lenguaje máquina, generando un
archivo con el código objeto equivalente al código
fuente completo, junto con información necesaria
para el montaje.
 Interpretes: Ejecutan las instrucciones del programa
según se vallan presentando. Necesitan menos
memoria, pero son más lentos que los compiladores
(LISP, Prolog). Históricamente, se pusieron de moda
en los primeros años porque los recursos de
memoria eran escasos. Permiten añadir código
dinámicamente durante la ejecución.
LENGUAJES DE PROGRAMACIÓN
INTERPRETADOS
 Están diseñados para ser ejecutados por medio de
interprete a partir de un código pre-compilado.
 Por ejemplo Java es compilado para posteriormente ser
ejecutado por un traductor del lenguaje objeto
denominado Java Virtual Machine.
 Mientas que los lenguajes de la plataforma .NET
compilan en una forma intermedia (CIL), que
posteriormente puede ser recompilado a código de
maquina nativo o interpretado por una maquina virtual.
 Lenguajes como Python y Java emplean representaciones
intermedias de código para ser ejecutadas, mientras que
lenguajes como Ruby emplean un árbol de sintaxis
abstracta como representación intermedia.
COMPILADORES VS INTERPRETES
Ventajas del compilador:
 Se compila una vez, se ejecuta n-veces.
 En bucles, la compilación genera código equivalente al bucle
pero un interprete se traduce tantas veces una línea como
veces se repite el bucle.
 El compilador tiene una visión global del programa, por lo
que la información de mensajes de errores es más detallada.
Ventajas del intérprete:
 Un interprete necesita menos memoria que un compilador.
 Permite una mayor interactividad con el código en tiempo de
desarrollo.
COMPILADOR - INTÉRPRETE
 Proporcionan algo de flexibilidad extra.
 Son independientes de la plataforma en la que se ejecuten.
 Permiten un mecanismo de reflexión.
 Tipos de datos altamente dinámicos.
 Gestión de memoria dinámico.
 Fácilmente depurables y reducidos en tamaño.
ESQUEMA DE COMPILACIÓN
GRAMÁTICA
 Estudio de las reglas y principios que regulan el
uso de las lenguas y la organización de las
palabras dentro de una oración.
 También se denomina así al conjunto de reglas y
principios que gobiernan el uso de un lenguaje
determinado.
 Así, cada lenguaje tiene su propia Gramática.
Docente:
Ing. Roberto Martín Tuesta
Pereyra

Más contenido relacionado

La actualidad más candente

Evolucion de los lenguajes de programación
Evolucion de los lenguajes de programaciónEvolucion de los lenguajes de programación
Evolucion de los lenguajes de programaciónfercho-nava
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacionEdagaJunior
 
1. que es programacion
1. que es programacion1. que es programacion
1. que es programacionFausto Orozco
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacionKarol
 
Lenguaje de programacion presentacion.
Lenguaje de programacion presentacion.Lenguaje de programacion presentacion.
Lenguaje de programacion presentacion.Fj Lezama
 
Historia Y EvolucióN De Los Lenguajes De ProgramacióN
Historia Y EvolucióN De Los Lenguajes De ProgramacióNHistoria Y EvolucióN De Los Lenguajes De ProgramacióN
Historia Y EvolucióN De Los Lenguajes De ProgramacióNda4
 
Lemguaje de programacion angel matin exp 2011147162 ci 20101171
Lemguaje de programacion angel matin exp 2011147162 ci 20101171Lemguaje de programacion angel matin exp 2011147162 ci 20101171
Lemguaje de programacion angel matin exp 2011147162 ci 20101171Angel Martin
 
1.1. historia del lenguaje de programacion
1.1. historia del lenguaje de programacion1.1. historia del lenguaje de programacion
1.1. historia del lenguaje de programacionAlejandro Sanchez Jose
 
Cronologia de los Lenguajes de Programación
Cronologia de los Lenguajes de ProgramaciónCronologia de los Lenguajes de Programación
Cronologia de los Lenguajes de ProgramaciónIris Coronado
 
HISTORIA Y EVOLUCION DE LOS LENGUAJES DE PROGRAMACION
HISTORIA Y EVOLUCION DE LOS LENGUAJES DE PROGRAMACIONHISTORIA Y EVOLUCION DE LOS LENGUAJES DE PROGRAMACION
HISTORIA Y EVOLUCION DE LOS LENGUAJES DE PROGRAMACIONRYAJPS
 
Lenguajes de programación.ppt
Lenguajes de programación.pptLenguajes de programación.ppt
Lenguajes de programación.pptEliezer Cordova
 
lenguaje de Programacion
lenguaje de Programacionlenguaje de Programacion
lenguaje de ProgramacionLauracks
 
Evolución de los Lenguajes de Programación.
Evolución de los Lenguajes de Programación.Evolución de los Lenguajes de Programación.
Evolución de los Lenguajes de Programación.Anastacio Mendoza
 

La actualidad más candente (19)

Evolucion de los lenguajes de programación
Evolucion de los lenguajes de programaciónEvolucion de los lenguajes de programación
Evolucion de los lenguajes de programación
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
1. que es programacion
1. que es programacion1. que es programacion
1. que es programacion
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Clases/Tipos de lenguajes de programación
Clases/Tipos de lenguajes de programaciónClases/Tipos de lenguajes de programación
Clases/Tipos de lenguajes de programación
 
Lenguaje de programacion presentacion.
Lenguaje de programacion presentacion.Lenguaje de programacion presentacion.
Lenguaje de programacion presentacion.
 
Historia Y EvolucióN De Los Lenguajes De ProgramacióN
Historia Y EvolucióN De Los Lenguajes De ProgramacióNHistoria Y EvolucióN De Los Lenguajes De ProgramacióN
Historia Y EvolucióN De Los Lenguajes De ProgramacióN
 
Lemguaje de programacion angel matin exp 2011147162 ci 20101171
Lemguaje de programacion angel matin exp 2011147162 ci 20101171Lemguaje de programacion angel matin exp 2011147162 ci 20101171
Lemguaje de programacion angel matin exp 2011147162 ci 20101171
 
1.1. historia del lenguaje de programacion
1.1. historia del lenguaje de programacion1.1. historia del lenguaje de programacion
1.1. historia del lenguaje de programacion
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programación
 
Cronologia de los Lenguajes de Programación
Cronologia de los Lenguajes de ProgramaciónCronologia de los Lenguajes de Programación
Cronologia de los Lenguajes de Programación
 
HISTORIA Y EVOLUCION DE LOS LENGUAJES DE PROGRAMACION
HISTORIA Y EVOLUCION DE LOS LENGUAJES DE PROGRAMACIONHISTORIA Y EVOLUCION DE LOS LENGUAJES DE PROGRAMACION
HISTORIA Y EVOLUCION DE LOS LENGUAJES DE PROGRAMACION
 
Lenguajes de programación.ppt
Lenguajes de programación.pptLenguajes de programación.ppt
Lenguajes de programación.ppt
 
El estudio de los lenguajes de programacion
El estudio de los lenguajes de programacionEl estudio de los lenguajes de programacion
El estudio de los lenguajes de programacion
 
Lenguaje de programación
Lenguaje de programaciónLenguaje de programación
Lenguaje de programación
 
Linea del Tiempo
Linea del TiempoLinea del Tiempo
Linea del Tiempo
 
Lenguajes De Programación
Lenguajes De ProgramaciónLenguajes De Programación
Lenguajes De Programación
 
lenguaje de Programacion
lenguaje de Programacionlenguaje de Programacion
lenguaje de Programacion
 
Evolución de los Lenguajes de Programación.
Evolución de los Lenguajes de Programación.Evolución de los Lenguajes de Programación.
Evolución de los Lenguajes de Programación.
 

Similar a Tema 01 introducción a compiladores

Lenguaje de programacion UFT
Lenguaje de programacion UFT Lenguaje de programacion UFT
Lenguaje de programacion UFT jose chavez
 
Evolución de la Programación
Evolución de la ProgramaciónEvolución de la Programación
Evolución de la ProgramaciónAlessandro Viera
 
Procesadores de Lenguajes
Procesadores de LenguajesProcesadores de Lenguajes
Procesadores de LenguajesGLORIABELEN3
 
Lenguajes de alto_nivel
Lenguajes de alto_nivelLenguajes de alto_nivel
Lenguajes de alto_nivelANALI GOMEZ
 
Lenguaje de programación
Lenguaje de programaciónLenguaje de programación
Lenguaje de programaciónmarco
 
Traductores de lenguajes de programación
Traductores de lenguajes de programaciónTraductores de lenguajes de programación
Traductores de lenguajes de programaciónDaniela Brignolo
 
Reseña historica introd. a la programación
Reseña historica introd. a la programaciónReseña historica introd. a la programación
Reseña historica introd. a la programaciónJohnny Montenegro Molina
 
Capítulo 0 Qbasic generalidades
Capítulo 0 Qbasic generalidadesCapítulo 0 Qbasic generalidades
Capítulo 0 Qbasic generalidadesJulio Ayala Rolón
 
Lenguajes de programacion
 Lenguajes de programacion Lenguajes de programacion
Lenguajes de programacionVakkerAkeldam
 
Lenguajes de programacion.
Lenguajes de programacion.Lenguajes de programacion.
Lenguajes de programacion.dUi velazquez
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacionCarenPC
 
C:\fakepath\compiladores
C:\fakepath\compiladoresC:\fakepath\compiladores
C:\fakepath\compiladorespaulina8
 
Clasificasion de los lenguajes
Clasificasion de los lenguajesClasificasion de los lenguajes
Clasificasion de los lenguajesagustinbilmer
 
Lenguajes de programacion alejandra salvador bartolon
Lenguajes de programacion alejandra salvador bartolonLenguajes de programacion alejandra salvador bartolon
Lenguajes de programacion alejandra salvador bartolonalejandritasalva
 
1. Que es programacion
1. Que es programacion1. Que es programacion
1. Que es programacionFausto Orozco
 
Tipos y caracteristicas de lenguajes de programacion. ( adolfo elias).
Tipos y caracteristicas de lenguajes de programacion. ( adolfo elias).Tipos y caracteristicas de lenguajes de programacion. ( adolfo elias).
Tipos y caracteristicas de lenguajes de programacion. ( adolfo elias).Alejandro Perez
 

Similar a Tema 01 introducción a compiladores (20)

Lenguaje de programacion UFT
Lenguaje de programacion UFT Lenguaje de programacion UFT
Lenguaje de programacion UFT
 
Evolución de la Programación
Evolución de la ProgramaciónEvolución de la Programación
Evolución de la Programación
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programación
 
Procesadores de Lenguajes
Procesadores de LenguajesProcesadores de Lenguajes
Procesadores de Lenguajes
 
Lenguajes de alto_nivel
Lenguajes de alto_nivelLenguajes de alto_nivel
Lenguajes de alto_nivel
 
Libro 1 y libro 2
Libro 1 y libro 2Libro 1 y libro 2
Libro 1 y libro 2
 
Lenguaje de programación
Lenguaje de programaciónLenguaje de programación
Lenguaje de programación
 
Traductores de lenguajes de programación
Traductores de lenguajes de programaciónTraductores de lenguajes de programación
Traductores de lenguajes de programación
 
Lenguajes 1
Lenguajes 1Lenguajes 1
Lenguajes 1
 
Reseña historica introd. a la programación
Reseña historica introd. a la programaciónReseña historica introd. a la programación
Reseña historica introd. a la programación
 
Capítulo 0 Qbasic generalidades
Capítulo 0 Qbasic generalidadesCapítulo 0 Qbasic generalidades
Capítulo 0 Qbasic generalidades
 
Lenguajes de programacion
 Lenguajes de programacion Lenguajes de programacion
Lenguajes de programacion
 
Lenguajes de programacion.
Lenguajes de programacion.Lenguajes de programacion.
Lenguajes de programacion.
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
C:\fakepath\compiladores
C:\fakepath\compiladoresC:\fakepath\compiladores
C:\fakepath\compiladores
 
Clasificasion de los lenguajes
Clasificasion de los lenguajesClasificasion de los lenguajes
Clasificasion de los lenguajes
 
Lenguajes de programacion alejandra salvador bartolon
Lenguajes de programacion alejandra salvador bartolonLenguajes de programacion alejandra salvador bartolon
Lenguajes de programacion alejandra salvador bartolon
 
1. Que es programacion
1. Que es programacion1. Que es programacion
1. Que es programacion
 
Clasificacion
ClasificacionClasificacion
Clasificacion
 
Tipos y caracteristicas de lenguajes de programacion. ( adolfo elias).
Tipos y caracteristicas de lenguajes de programacion. ( adolfo elias).Tipos y caracteristicas de lenguajes de programacion. ( adolfo elias).
Tipos y caracteristicas de lenguajes de programacion. ( adolfo elias).
 

Último

2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdfAnthonyTiclia
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxEduardoSnchezHernnde5
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfMirthaFernandez12
 
Uso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendiosUso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendioseduardochavezg1
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.pptVitobailon
 
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdfCE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdfssuserc34f44
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023ANDECE
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaSHERELYNSAMANTHAPALO1
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
Cadenas de Markov investigación de operaciones
Cadenas de Markov investigación de operacionesCadenas de Markov investigación de operaciones
Cadenas de Markov investigación de operacionesal21510263
 
Electromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfElectromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfAnonymous0pBRsQXfnx
 
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfpaola110264
 
CLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilCLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilDissneredwinPaivahua
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUMarcosAlvarezSalinas
 
Fisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfFisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfJessLeonelVargasJimn
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfrolandolazartep
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfIsbelRodrguez
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPJosLuisFrancoCaldern
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdfEdwinAlexanderSnchez2
 

Último (20)

2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptx
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
 
Uso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendiosUso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendios
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.ppt
 
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdfCE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresa
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
Cadenas de Markov investigación de operaciones
Cadenas de Markov investigación de operacionesCadenas de Markov investigación de operaciones
Cadenas de Markov investigación de operaciones
 
Electromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfElectromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdf
 
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
 
CLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilCLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civil
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
 
Fisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfFisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdf
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdf
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdf
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf
 

Tema 01 introducción a compiladores

  • 1. TEMA 01: INTRODUCCIÓN A COMPILADORES ING. MARTÍN TUESTA PEREYRA ingmartintuesta@gmail.com #981960174
  • 2. TRADUCTOR- DEFINICIÓN  Es un programa que lee un programa escrito en un lenguaje (lenguaje fuente) y lo traduce a un programa equivalente en otro lenguaje (lenguaje objeto).
  • 3. COMPILADOR - DEFINICIÓN  Proceso de traducción que convierte un programa fuente escrito en un lenguaje de alto nivel a un programa objeto en código máquina y listo por tanto para ejecutarse en el ordenador, con poca o ninguna preparación adicional.
  • 4. ¿PORQUÉ NECESITAMOS COMPILADORES?  Es difícil escribir, depurar, dar mantenimiento y entender programas escritos en lenguaje ensamblador.  Con el lenguaje máquina debemos comunicarnos directamente con la computadora en términos de bits, registros y operaciones muy primitivas.  El lenguaje máquina no es más que una secuencia de 1’s y 0’s.
  • 5. ¿PORQUÉ NECESITAMOS COMPILADORES?  Es difícil escribir, depurar, dar mantenimiento y entender programas escritos en lenguaje ensamblador.  Con el lenguaje máquina debemos comunicarnos directamente con la computadora en términos de bits, registros y operaciones muy primitivas.  El lenguaje máquina no es más que una secuencia de 1’s y 0’s.
  • 6. HISTORIA  No puede darse una fecha exacta del primer desarrollo.  A finales de la década de 1940, comenzaron a construirse las primeras computadoras digitales y fue necesario implementar un lenguaje capas de realizar los cálculos, es aquí donde aparece el lenguaje de maquina que representaba secuencias de códigos numéricos: C7 06 0000 0002 (instrucción que mueve el número dos a la ubicación 0000)  Desafortunadamente este lenguaje era tedioso de seguir y complicado de mantener, por lo que esta forma de codificación fue reemplazada por el lenguaje ensamblador, en el cual las instrucciones y las localidades de memoria son formas simbólicas. Un ensamblador traduce de los códigos simbólicos a lenguaje de maquina. Aún con esta mejora, el lenguaje ensamblador sigue siendo demasiado difícil de mantener: MOV X, 2 (instrucción en ensamblador equivalente a la anterior)
  • 7. HISTORIA…  En este punto se presenta la necesidad de lenguajes que permitan escribir los programas de forma concisa, similar a una notación matemática, y que se pudieran traducir a código ejecutable para una máquina dada: X = 2  En 1950, G. M. Hooper acuña el termino compilador y aparecen los primeros trabajos sobre compiladores relacionados con la traducción de formulas aritméticas a código de máquina.  John Backus lideró un grupo de trabajo en IBM para realizar de un traductor de código máquina a fórmulas matemáticas. Resultando con gran éxito: la especificación de un lenguaje de alto nivel (FORTRAN, FORmule TRANslation) Trabajaron 18 personas durante mas de un año en el proyecto.  Fue un compilador hecho ad-hoc (a puro corazón), pues no existía una teoría formal, sino que se iban resolviendo las construcciones una a una, para cada situación particular.
  • 8. HISTORIA…  Noam Chomsky comienza sus estudios sobre la estructura del lenguaje natural. Sus estudios lo condujeron a la clasificación de los lenguajes de acuerdo a una jerarquía de sus gramáticas, además sus estudios sobre los algoritmos de reconocimiento derivaron en una automatización del proceso de traducción mas eficiente.  1960, se diseña el lenguaje LISP. En un principio, el código LISP se traducía manualmente a código máquina. Se escribió en LISP un programa capaz de interpretar programas LISP, que se tradujo manualmente a código de máquina, construyendo de este modo un intérprete ejecutable de LISP.  Knuth desarrolla la mayoría de las técnicas de análisis sintáctico.  1970, se presentan los mayores avances en el área de lenguajes de programación.  Aparecen los primeros programas que automatizan los procesos de análisis léxico y sintáctico. Surgiendo la llamada Torre de Babel debido a
  • 9. HISTORIA…  Niklaus Wirth, diseña Pascal, pensado para la enseñanza.  Wirth propone el concepto de representación intermedia de código, separando el proceso de traducción en dos fases: el front-end encargada de analizar el programa fuente (operaciones dependientes sólo del lenguaje fuente) y el back-end encargada de generar el código para la máquina objeto.  1980, comienzan a proliferar las técnicas de mejoramiento de código (optimización), se consolida y prolifera el concepto de asignación y liberación de memoria dinámica. La programación orientada a objetos es extensamente utilizada y madura.  1990, los lenguajes de programación y compiladores son muy similares a lo que tenemos actualmente, surgen los ambientes de desarrollo, los lenguajes interpretados comienza a ganar terreno en aplicaciones de Internet y el código intermedio se vuelve a poner de moda.
  • 10. LENGUAJES FUENTE Y OBJETO  Los lenguajes fuente pueden ser desde lenguajes de programación tradicionales (C#, Java, Phyton, etc) hasta lenguajes especializados.  Los lenguajes objeto son igualmente variados; un lenguaje objeto puede ser otro lenguaje de programación o el lenguaje máquina de cualquier microprocesador.
  • 11. CÓDIGO FUENTE  Diseñado para su mejor comprensión humana.  Concuerda con nuestras nociones de gramática.  Utiliza construcciones con nombres, como son variables y procedimientos.  Ejemplo: Console.Write(“Hola Mundo”);
  • 12. CÓDIGO MÁQUINA  Optimizado para hardware.  Consiste en instrucciones máquina.  Utiliza registros y direcciones de memoria sin nombre.  Mucho más difícil para la comprensión humana.  Ejemplo: ida $30, -32 ($30)
  • 14. LENGUAJE DE PROGRAMACIÓN  Un lenguaje de programación es un lenguaje formal diseñado para realizar procesos que pueden ser llevados a cabo por máquinas como las computadoras.  Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.  Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila (de ser necesario) y se mantiene el código fuente de un programa informático se le llama programación.
  • 15. ¿PORQUÉ SE NECESITA UN LENGUAJE DE PROGRAMACIÓN DE ALTO NIVEL?  Los lenguajes de "Alto Nivel" son los más utilizados como lenguaje de programación. Estos lenguajes permiten que los algoritmos se expresen en un nivel y estilo de escritura fácilmente legible y comprensible por otros programadores.  Permite especificar de manera precisa sobre qué datos debe operar una computadora, cómo deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente
  • 16. COMPILADORES  En los años 50 los compiladores eran considerados programas muy difíciles.  FORTRAN se desarrolló en grupo durante 18 años.  Se han desarrollado técnicas sistemáticas, entornos de programación y herramientas software que facilitan la tarea de desarrollo.
  • 17. COMPILADORES  Gran variedad de lenguajes de alto nivel  Gran variedad de lenguajes objeto, tanto otro lenguaje de alto nivel como código máquina.  No puede darse una fecha exacta del primer desarrollo.  Varios grupos independientemente desarrollaron técnicas de análisis.  Los primeros traducían fórmulas aritméticas a código máquina
  • 18. TIPOS DE TRADUCTORES RELACIONADOS CON LOS COMPILADORES  Ensamblador: Programa que convierte de lenguaje mnemonico a lenguaje máquina, generando un archivo con el código objeto equivalente al código fuente completo, junto con información necesaria para el montaje.  Interpretes: Ejecutan las instrucciones del programa según se vallan presentando. Necesitan menos memoria, pero son más lentos que los compiladores (LISP, Prolog). Históricamente, se pusieron de moda en los primeros años porque los recursos de memoria eran escasos. Permiten añadir código dinámicamente durante la ejecución.
  • 19. LENGUAJES DE PROGRAMACIÓN INTERPRETADOS  Están diseñados para ser ejecutados por medio de interprete a partir de un código pre-compilado.  Por ejemplo Java es compilado para posteriormente ser ejecutado por un traductor del lenguaje objeto denominado Java Virtual Machine.  Mientas que los lenguajes de la plataforma .NET compilan en una forma intermedia (CIL), que posteriormente puede ser recompilado a código de maquina nativo o interpretado por una maquina virtual.  Lenguajes como Python y Java emplean representaciones intermedias de código para ser ejecutadas, mientras que lenguajes como Ruby emplean un árbol de sintaxis abstracta como representación intermedia.
  • 20. COMPILADORES VS INTERPRETES Ventajas del compilador:  Se compila una vez, se ejecuta n-veces.  En bucles, la compilación genera código equivalente al bucle pero un interprete se traduce tantas veces una línea como veces se repite el bucle.  El compilador tiene una visión global del programa, por lo que la información de mensajes de errores es más detallada. Ventajas del intérprete:  Un interprete necesita menos memoria que un compilador.  Permite una mayor interactividad con el código en tiempo de desarrollo.
  • 21. COMPILADOR - INTÉRPRETE  Proporcionan algo de flexibilidad extra.  Son independientes de la plataforma en la que se ejecuten.  Permiten un mecanismo de reflexión.  Tipos de datos altamente dinámicos.  Gestión de memoria dinámico.  Fácilmente depurables y reducidos en tamaño.
  • 23. GRAMÁTICA  Estudio de las reglas y principios que regulan el uso de las lenguas y la organización de las palabras dentro de una oración.  También se denomina así al conjunto de reglas y principios que gobiernan el uso de un lenguaje determinado.  Así, cada lenguaje tiene su propia Gramática.