Temas
Reflexin:
Si eres programador y no
logras hacer algo que
sirva
llmalo versin
2
Introduccin
Programacin
El arte de la programacin,
es el arte de organizar la
complejidad.
Organizar los clculos de
manera que nuestros
sentidos sean suficientes
para garantizar que el
cmputo arroje los
resultados esperados.
3
Introduccin
Introduccin
Programacin vs Mantenimiento
Creacin inicial
y verificacin
de un progama.
Se refiere a las
correcciones
y los cambios
que se realizan en un
programa despus
de su desarrollo.
Introduccin
Estructura y Organizacin
Son claves para
manejar programas
muy grandes.
La legibilidad de un programa puede mejorarse
organizndolo de tal manera que cada parte
pueda entenderse en forma relativamente
independiente del resto.
6
Introduccin
Von Neumann
Introduce el concepto de programa
almacenado. Propuso que los programas
se almacenaran de forma digital en la
memoria de la computadora junto con
los datos.
Por otro lado, se dio cuenta que la aritmtica decimal usada por
la ENIAC poda ser reemplazada usando aritmtica binaria. Este
diseo, conocido como ARQUITECTURA de VON
NEUMANN, ha sido la base para casi todas las computadoras
digitales.
7
Introduccin
Unidad
Aritmtica
Acumulador A
Unidad de
entrada y salida
Registro R
Introduccin
A una localidad de
memoria poda
asignrsele el valor
contenido en el
acumulador
Datos
Elementos
del
lenguaje
Asignaciones a
localidades de
memoria
Operaciones
aritmticas
Poda sumar,
restar, multiplicar,
dividir y tomar el
valor absoluto de
un numero.
9
Introduccin
Cdigo de Mquina
Lenguaje de mquina: 00000010101111001010
00000010101111101010
00000011001100100110
Lenguaje Ensamblador: Load I
Add J
Store K
Lenguaje alto nivel:
K=I+J
10
Introduccin
Primera experiencia
En los aos 50, se crea que los programas eficientes solo
podan escribirse manualmente, usando algunas variantes de
lenguajes de mquina. (Fortran)
Primera experiencia
Tiempo de traduccin
Programa fuente
Introduccin
Compilador
Tiempo de ejecucin
Entrada
Cdigo destino
Salida
12
Primera experiencia
Introduccin
Primera experiencia
Introduccin
Nombre
Particularidad
Primera
De maquina
Segunda
Ensamblador
Tercera
De alto nivel
Cuarta
Propsito especial
Quinta
Naturales
Orientado al
microprocesador
(Sistema binario)
Lenguaje de
bajo nivel
Lenguajes
de alto nivel
Orientado a
que las
personas
entiendan y
escriban los
programas
16
Elementos de un lenguaje
Descendente
Modular
Objetos
17
Compiladores e interpretes
Conceptos relacionados
Arquitectura de
Computadoras
Teora de
Lenguajes
Lenguajes de
Programacin
Compiladores
Ingeniera de
Software
Teora de
Algoritmos
Compiladores e interpretes
Compiladores
Un compilador es un programa que lee un programa
en un lenguaje y
lo traduce a un programa
equivalente en otro lenguaje, y adems informa al
usuario sobre la presencia de errores en el programa
de entrada
programa
compilador
fuente
programa
objeto
mensajes
de error
19
Compiladores e interpretes
HISTORIA
Computadora
Persona
Cdigo
Mquina
Ensamblador
Cdigo
Mquina
Lenguaje
Ensamblador
Ensamblador
Cdigo
Mquina
Compilador
Lenguaje
Lenguaje de
Ensamblador
Alto Nivel
20
Compiladores e interpretes
COMPILADOR
Traducen programas escritos en lenguaje de alto nivel a
cdigo intermedio o a cdigo mquina
INTERPRETE
No genera cdigo objeto, analiza y ejecuta directamente cada
proposicin del Programa Fuente (PF)
PREPROCESADOR
Sustituyen macros, incluyen archivos o extensin del
lenguaje.
21
Compiladores e interpretes
biblioteca
archivos obj.relocal.
Compiladores e interpretes
PARTES DE LA COMPILACIN
Compiladores e interpretes
Anlisis lxico
Anlisis sintctico
Anlisis semntico
Intermedio
Ms:
Sistemas de
edicin y
depuracin
Generador de cdigo
Cdigo relocalizable
Enlazador
Objeto
24
Compiladores e interpretes
FASES DE UN COMPILADOR
PROGRAMA FUENTE
analizador lxico
administrador
de la tabla
de smbolos
analizador sintctico
analizador semntico
generador de cdigo intermedio
optimizador de cdigo
generador de cdigo
manejador
de errores
PROGRAMA OBJETO
Compiladores e interpretes
Compilador
ANALISIS
Scanner
Parser
Tabla
de
smbolos
SINTESIS
Prep. para la Gen.
del cdigo
OBJETO
Compiladores e interpretes
Fuente
Explorador
Reconocedor
Generador
Objeto
de cdigo
Tabla de
smbolos
27
Compiladores e interpretes
Lex y YACC
Herramientas que nos permiten desarrollar
componentes o la mayor parte de un compilador
Son un recurso invaluable para el profesional y el
investigador
Existen paquetes freeware
28