Sei sulla pagina 1di 16

1

Introduccin
Traductores - Compilador
Sintaxis y Semntica de los Lenguajes
2
Evolucin de los Lenguajes de
programacin
1940
que funcione
prelingual: previo a los lenguajes conocidos
1950
ensambladores
clculo numrico (FORTRAN)
explotacin de la potencia de la mquina
1960
COBOL, LISP, ALGOL, BASIC
estructuras de datos
recursividad
aumento de la expresividad
1970
reduccin de la dependencia de la mquina: portabilidad
aumento de la correctitud de los programas
PASCAL, ALGOL 68, C
1980:
reduccin/manejo de la complejidad
MODULA 2, ADA (introduce paralelismo(ejecutar con varios procesadores)-> programacin concurrente
(aplicaciones militares)), SMALLTALK(primer lenguaje de O.O. puro), MIRANDA.
1990
paralelo, distribuido(un programa es dividido en varias computadoras, divisin de tareas a travs de la red. Ej.:
cliente - servidor)
lenguajes visuales
2000
programacin WEB/interaccin entre varios lenguajes
3
Clasificacin por Paradigmas
Programacin Imperativa
Programacin Estructurada

Programacin Funcional

Programacin Orientada a Objetos

Programacin Lgica
4
Clasificacin por Nivel
Nivel de Abstraccin

Bajo: instrucciones simples. El manejo de la memoria es
explcito. Ej.: ensambladores

Alto: manejan estructuras de control que hacen menor
referencia a la forma de tratamiento en la computadora.
Acceso a memoria explcita.

Muy alto: nivel de abstraccin mayor. Mquinas totalmente
abstractas. Mquina virtual. El acceso a memoria es
implcito.
5
Clasificacin por Generacin
Generaciones
1 generacin: lenguaje mquina
2 generacin: lenguaje ensamblador
3 generacin: lenguajes procedurales (imperativos)
4 generacin: lenguajes de aplicacin: Ej. SQL.
Lenguajes declarativos: especifican qu se quiere hacer y no
cmo.
5 generacin: tcnicas de inteligencia artificial y lenguajes de
inferencia
6 generacin: redes neuronales: simulan el comportamiento de las
neuronas del cerebro humano.
6
Traductores
Traductor: (Translator)
Es un programa que toma como entrada un programa escrito
en un lenguaje (programa fuente) y lo convierte a un
programa equivalente (en cuanto a su significado) escrito en
otro lenguaje (programa objeto)

7
Traductores
Compilador: programa que transforma un programa
escrito en un lenguaje de alto nivel (por ejemplo Pascal, C,
Java, Smalltalk, etc), en otro programa equivalente escrito
en un lenguaje de bajo nivel (normalmente Ensamblador).

Ensamblador: convierte de bajo nivel a bajo nivel
(ASSEMBLER a lenguaje mquina).

Preprocesador: convierte de alto nivel a alto nivel.

Intrprete: convierte y ejecuta instruccin por instruccin.
Ej.: BASIC, PERL, SMALLTALK, PHP

8
Traductores
Comparacin entre compilador e intrprete
Compilador
o Mayor velocidad de ejecucin del
programa
o Menor requerimientos de memoria
o Control de errores de tipo, en tiempo
de compilacin
o Una compilacin, varias ejecuciones
o Asociado a lenguajes de tipado
esttico

Intrprete
o Facilidad en la depuracin
o Mayor flexibilidad: asociado a
lenguajes de tipado dinmico, con
alto nivel de expresividad

9
Traductores
Objetivos de la traduccin
Conversin del programa
Deteccin de errores

Tipos de errores
Lxicos: en los componentes atmicos del lenguaje
Sintcticos: en la estructura del programa
Semnticos: en cuanto al significado del programa
- de tipo / declaracin
- lgicos
- conceptuales (aplicacin de conceptos)
- de comprensin del problema / requerimientos
- Otros (dependientes de la arquitectura / S.O. /
configuracin
10
Traductores
Herramientas del entorno de la traduccin (IDE)
Editores de estructura (inteligentes)
Impresores estticos
Verificadores estticos
Depuradores (debugger)
Ayuda sensible al contexto
Perfiladores (profiler)
11
Sistema de procesamiento de un
lenguaje
12
Compilacin
13
Fases de la Compilacin
Fase: divisin conceptual del proceso de compilacin

Anlisis Lxico
Anlisis Sintctico
Anlisis Semntico
Generacin de cdigo intermedio
Optimizacin
Generador de cdigo
Programa fuente
Programa objeto
Anlisis
Sntesis
Administrador de la
Tabla de Smbolos
Manejador de Errores
14
Fases: ejemplo de Compilacin
15
Fases
Ventajas de la divisin en fases:
Reduce la complejidad del proceso
Independencia de la arquitectura, S.O. y lxico (portabilidad,
compiladores cruzados)
Conocimientos, tcnicas y herramientas especializadas
Compiladores de compiladores
Generadores de analizadores lxicos: LEX
Generadores de analizadores sintcticos: YACC
Dispositivos de traduccin

Pasada:
Divisin fsica de la compilacin. Compila por partes, dejando archivos con
representaciones intermedias. La mayora de los compiladores actuales son de una
sola pasada.

16
Traductores, Compiladores
Fin de la primera parte