Sunteți pe pagina 1din 35

Inga. M.A.

Sheyla Esquivel
sheylaesquivelumg@gmail.com
Presentación del Curso

 El estudiante debe conocer la estructura de un
compilador, además, debe de emplear los
conocimientos adquiridos en cursos anteriores para
el desarrollo del mismo.

 Que el estudiante adquiera los conocimientos


necesarios para que sea capaz de comprender y
desarrollar en forma parcial o total un compilador.
Proyecto Final

 Debe realizar un proyecto, el cual consta de elaborar,
explicar, documentar y presentar en clase
funcionando un COMPILADOR.

 Durante el curso se le irán dando directrices de cómo


lo debe realizar y con qué aspectos debe cumplir su
compilador. Por lo tanto, es necesario que entienda
todos los conceptos vistos en clase para ponerlos en
práctica en el desarrollo de su proyecto.
Especificaciones:

El Proyecto 1 será realizado en una
fecha específica que se le estará
proporcionando a lo largo del curso.
Valor del proyecto 15 puntos
Proyecto 2 se realizará en lenguaje
Assembler.
Valor del proyecto 5 puntos.
Distribución del Punteo

Primer Parcial 10 puntos
Segundo Parcial 20 puntos
Laboratorios, tareas y trabajos de 20 puntos
investigación

Proyecto 1 y 2 20 puntos
Examen Final 30 puntos

Nota Final 100 puntos


Lectura Opcional

Realizar un resumen del Libro “Él Escogió
los Clavos”, de Max Lucado.

Fecha de Entrega: 25/05/2019 (No hay prórroga,


única fecha, si no lo entrega ésta fecha no se
recibirá)
El resumen debe tener un mínimo de 10 páginas
tamaño carta y 1 página de cómo lo aplicaría a
su vida, a mano, escaneado y enviado a mi
correo, con carátula.
Historia

En 1946 se desarrolló la primera
computadora digital. En un principio,
estas máquinas ejecutaban
instrucciones consistentes en códigos
numéricos que señalaban a los circuitos
de la máquina los estados
correspondientes a cada operación, lo
que se denominó lenguaje máquina.

Historia

Al inicio de la era computacional, todo
se programaba en “lenguaje de
máquina” 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.

Primer Compilador

 El primer compilador de la historia es
el A-0 (Math Matic), desarrollado por
Grace Hopper, viendo ella lo tedioso
que era programar en la famosa
computadora Mark I, apostó por
poder ingresar código que pudiera
ser interpretado en cualquier
máquina y llego a la conclusión que
en vez de programar a tan bajo nivel,
era necesario un intermediario, por
ende su propio compilador.
Grace Murray Hopper
Desarrolló el primer compilador para

un lenguaje de programación.
Creadora del primer lenguaje de alto
nivel orientado al ámbito de gestión,
Flow-Matic, en 1955.
FORTRAN

 Después de los logros de Hopper, se ve la necesidad
de utilizar lenguajes de alto nivel, hombres que
investigaron como Jhon Backus acerca de interpretes
en el año 1954, pudo surgir el lenguaje de
programación: FORTRAN (FORMULAE
TRANSLATOR), el cual consistía en recibir códigos
sobre ecuaciones matemáticas en tarjetas perforadas
y lograr ejecutarlas a velocidad de lenguaje de
máquina.
FORTRAN

John Backus

Fue un científico de la
computación
Ganador del Premio Turing
en 1977 por sus trabajos en
sistemas de programación
de alto nivel, en especial por
su trabajo con FORTRAN.
Propuso la gramática libre
de contexto.
Gramática Libre de
Contexto


Lenguajes

Interpretado Compilado
 Ruby C
 Python  C++
 PHP  C#
 Javascript  Fortran
 Java  Pascal
 Smalltalk  Visual Basic
 MATLAB



FORTRAN

Ya que FORTRAN tardo 18 años en
desarrollarse, sin mencionarse que este
mismo lenguaje solo funcionaba en hardware
de IBM aparece Noam Chomsky de la
Universidad de Munich, que trabaja con
algoritmos sencillos. Logra trabajar junto con
Backus y con ello produce ALGOL (1958), el
cual podrá trabajar en forma estructurada o
en bloques.
Noam Chomsky

También creó el lenguaje
COBOL
Es una de las figuras más
destacadas en la
lingüística.
Utilizó la lingüística y las
matemáticas para crear
COBOL.
COBOL

El lenguaje COBOL (acrónimo de COmmon
Business-Oriented Language, Lenguaje Común
Orientado a Negocios) fue creado en el año
1959 con el objetivo de crear un lenguaje de
programación universal que pudiera ser
usado en cualquier ordenador (ya que en los
años 1960 existían numerosos modelos de
ordenadores incompatibles entre sí)
ALGOL

Algorithmic Lenguage
Primer lenguaje creado por un comité.
En 1960 se reunieron representantes de varios
países europeos y de Estados Unidos.
Es un lenguaje destinado a describir procesos
mediante instrucciones de control (iteraciones y
alternaciones) de nivel alto que las existentes en
FORTRAN.
No llegó a ser un lenguaje comercial.
 En el año 1959 Strong dio una propuesta para dar
solución al problema de no poder ejecutar código en
cualquier maquina. Entonces propuso una solución
de dividir en dos partes todo el proceso de
compilación.

 Front End: Esta parte es la que analiza el programa
fuente, se ejecuta primero
 Back End: Esta parte se encarga de escribir el código
objeto para la máquina, se ejecuta de último.
 Con el logro de Strong, se sentaban las bases de cómo
deben ser la base del compilador, y así en el año 1959,
Michael Oser Rabin y Dana Scott introdujeron lo que era
Autómatas Finitos, lo cual permitió el gran desarrollo del


análisis léxico e identifico las expresiones regulares.

 Luego de esto, se logro implementar el lenguaje LEX, en


el año de 1975; aparte de este avance quedaba algo que no
se lograba identificar a fondo y era el análisis sintáctico, el
cual era el gran paso a la generación de código

Michael Oser Rabin


Dana Scott

ACTUALIDAD

 A partir de los años 70' empiezan a aparecer los
lenguajes LEX y YACC.

 LEX viene a ser un generador automático de


analizadores léxicos a partir de expresiones regulares
bajo UNIX.

 YACC (Yet Another Compiler-Compiler) es un


generador de analizadores sintácticos que al igual
que LEX funciona en el sistema UNIX.
En conclusión

 Análisis Léxico: Son las palabras que forman parte
del lenguaje.
 Análisis Sintáctico: El orden de las palabras y
relación de las palabras.
 Análisis Semántico: Significado de las expresiones
del lenguaje.
Ejercicio
 Evalúe las siguientes líneas de código y concluya cuáles son los
errores o aciertos en las mismas.
 #include<stdio.h
#include<conio.h>
maint()
{

inttt num1,num2,num3,num4,num5;
("\t*****SUMA*****\n"); printf
cout("introduce numero 1: ");
scanf("%d",&num1));
printf("introduce numero 2: ");
scanf("%d",&num2);
printf("introduce numero 3: ");
scanf("%d",&num3);
printf("introduce numero 4: ");
scaaanf("%d",&num4);
printf("introduce numero 5: ");
scanf("%d",&num5);
imprimirf("\nel resultado de la usma
es:%d",num1+num2+num3+num4+num5);
getch;
return 000;
}
Preguntas de Repaso

 ¿Qué es un compilador?
 ¿Qué es intérprete?
 Describa las ventajas de un compilador, y de un
intérprete
 ¿Qué es Backend?
 ¿Que es Frontend?
 A su criterio, ¿cuáles cree que son los pasos para
formar un compilador?. Descríbalos.
Tarea 1
 Busque los

siguientes términos utilice arial 12 y
justificado.
 Funcionamiento de:
 ENIAC
 Mark I
 Tarjetas Perforadas

 Premio Turing
Tarea 1

 Busque los siguientes términos utilice arial 12 y justificado.
 Preprocesador, Ligador, Cargador, Depurador, Ensamblador, Tipos
de compiladores,: De una pasada, De múltiples pasadas, De carga y
ejecución. De depuración, De optimización, Ensamblador,
Compilador cruzado, Compilador con montador, Autocompilador,
Metacompilador, Descompilador, Editores de estructuras,
Impresoras estéticas, Verificadores estáticos, Intérpretes,
Formadores de Texto, Compiladores de circuitos de silicio,
Intérpretes de consultas, Front end, Back end, Programa fuente,
Programa destino, Lenguaje máquina, Programa intermedio
 Envíelo a mi correo, a más tardar el miércoles 06 de febrero a las
23:59 horas, colóquele en la primera hoja en la esquina superior
izquierda nombre, carné, curso, y demás datos que considere
importantes.
 Habrá prueba corta el siguiente día de clases.
Gracias por su
Atención

 Todo lo puedo en Cristo que me fortalece.


 Filipenses 4:13

S-ar putea să vă placă și