DISEÑO COMPILADORES
Introducción y organización del curso
Bienvenidos al curso…
• Algunos temas a ver hoy…
•
•
•
•
Información general del curso
Por que estudiar compiladores?
Breve historia de los compiladores
Estructura de un compilador
INTRODUCCIÓN
Información administrativa
• Docente
– Pablo Garbusi
• Correo electrónico
– pgarbusi@fing.edu.uy
• Pagina web del curso
–http://www.fing.edu.uy/inco/curso/compil
– Todo el material del curso será colocado en esta
pagina
Información administrativa
• Salones y horarios:
– Lunes, salón 103, 08:00 – 10:00
– Miércoles, salón 301, 08:00 – 10:00
– Tolerancia de 15 minutos… aprox.
• Material de clase
– Generalmente publicado la semana antes en el
sitio
• Cupo, pasaje de lista, etc.
– El curso no tiene cupo, no se pasa lista, etc.Organización del curso
• Primer parte: (aprox. 2 meses)
– Teórico/practica
– Individual
– Evaluación: Parcial, eliminatorio
• Segunda parte: (aprox. 1 mes y medio)
– Construcción de un interprete/compilador
– Grupal (máx. 3 personas)
– Evaluación: Tiene que funcionar
Libro de referencia
Algunos otros libros interesantes
Para el que este olvidado del tema
Con respecto al obligatorio:Copia
• Aplica el reglamente general de la Facultad
• Se permite el libre intercambio de ideas…
• Pero NO SE PERMITE EL INTERCAMBIO DE
CODIGO NI LAS COPIAS
• En caso de detectar una copia, TODOS LOS
INVOLUCRADOS tendrán las sanciones
administrativas correspondientes
AHORA SI…COMPILADORES
Por que estudiar compiladores?
• Ver la teoría en funcionamiento
• Comprender como funcionan los lenguajes deprogramación
• Comprender cuales son los tradeoffs en el
diseño de un lenguaje
• Aprender como construir lenguajes de
programación
– Domain Specific Languages (DSLs)
Historia de los compiladores
•
•
•
•
•
Al comienzo, no había nada
Luego, apareció el código maquina
Era un forma tediosa de escribir programas
La tarea mas simple llevaba mucho tiempo
Por ejemplo, para cargar el valor 1 en unavariable, había que hacer:
A9 01
8D 00 0C
Historia de los compiladores
• Posteriormente, alguien tuvo la idea de
mejorar la anterior, dándole nombres a los
comando de código maquina
• Surge el assembler
• Ahora, en vez de lo anterior, hacemos:
LDA 01
STA INDEX
Historia de los compiladores
• Los ensambladores fueron mejorando,
agregando mas expresividad y mas
capacidades
if optimized
index = AX
elseindex = @address
mov index,1
Historia de los compiladores
• Con el paso del tiempo, se comienza a elevar
el nivel de abstracción
• Los lenguajes se alejan cada vez mas de la
maquina en la que ejecutan
If (Persona.Edad > 18) Then
Print(“Es mayor de edad”);
Else
Print(“No es mayor de edad”);
Clasificación de lenguajes
• Hoy día existen cientos de lenguajes de
programación
• Existen diferentesclasificaciones y
organizaciones
• Una de ellas es la generación
• Tenemos cinco generaciones de lenguajes hoy
día
Clasificación de lenguajes
• 1era Generación
– Lenguajes de maquina
• 2da Generación
– Lenguajes ensamblador
• 3ra Generación
– Lenguajes de alto nivel
– Fortran, Cobol, Lisp, C, C++, C#, Java
Clasificación de lenguajes
• 4ta Generación
– Lenguajes diseñados para aplicacionesespecificas
– SQL para acceso a bases de datos relaciones
– Postscript para formateo de textos
• 5ta Generación
– Lenguajes lógicos o basados en restricciones
– Prolog y OPS5 son ejemplos de ellos
Clasificación de lenguajes
• Otra clasificación utiliza el termino imperativo
para lenguajes en los que se dice COMO
realizar una computación
– C, C++, Java, C# son ejemplos de estos
– Existe la noción deestado de programa y
sentencias que cambian ese estado
• El termino declarativo se utiliza para lenguajes
en los que se dice lo QUE se debe hacer
– Prolog, Haskell, ML son ejemplos de estos
Compilador
• El encargado de llenar el hueco entre el
lenguaje origen y el destino, es el compilador
• Un compilador es un programa que toma
como entrada un programa escrito en un
lenguaje (fuente), y lo...
Regístrate para leer el documento completo.