Title: Introducci
1Introducción
2Agenda Clase 1
- Preámbulo histórico.
- Razones de la Diversidad de Lenguajes.
- Razones del Éxito de un Lenguaje.
- Clasificación
- Motivación del Estudio de los Lenguajes.
- Diversos Aspectos de la Compilación y la
Interpretación. - Casos de Estudio.
- Fases de la Compilación.
3Preámbulo
- 40s
- Primeros computadores electrónicos de gran costo
y tamaño, con escasa capacidad de cómputo. - Programados en principio en lenguaje de máquina,
posteriormente en lenguaje ensamblador. - Programación centrada en el tipo de máquina.
-
4Preámbulo
- 50s
- Se desarrolla el primer lenguaje de alto nivel
(dialecto original de Fortran) - A Fortran le siguen lenguajes como LISP y Algol
- Traducción de lenguaje de alto nivel a lenguaje
de máquina a través de un compilador.
5Razones de la diversidad de lenguajes
- Evolución
- Propósitos Especiales
- Preferencia Personal
6Razones de Éxito de un Lenguaje
- Poder Expresivo
- Facilidad de Uso para Novatos
- Facilidad de Implementación
- Excelentes Compiladores
- Economía, Patronato e Inercia
7Clasificación de los Lenguajes
- Declarativos ( qué hace la computadora)
- Funcionales LISP/Scheme, ML, Haskell
- Flujo de Datos Id, Val
- Lógicos, basados en restricciones Prolog,
VisiCalc - Imperativos (cómo debería hacerlo)
- Von Neumann Fortran, Pascal,Basic, C
- Orientados a Objetos. Smalltalk, Eiffel, C,
Java -
8Por qué estudiar Lenguajes
- Facilita el aprendizaje de lenguajes en
particular. - Permite entender las características obscuras de
los lenguajes que se utilizan. - Ayuda a la escogencia entre alternativas
disponibles - Contribuye a hacer buen uso de debuggers,
assemblers y herramientas relacionadas. - Permite simular características en lenguajes que
no las poseen.
9Compilación e Interpretación Compilador
10Compilación e Interpretación Interpretador
11Compilación e Interpretación Traductor
Traductor
Código Fuente
Programa Intermedio
Programa Intermedio
Máquina Virtual
Salida
Entrada
12Compilación e Interpretación Enlazador (Linker)
Compilador
Programa Fuente
Lenguaje de Máquina Incompleto
Lenguaje de Máquina Incompleto
Linker
Programa en Lenguaje de Máquina
Librería de rutinas
13Compilación e Interpretación Compilador
Assembler
14Compilación e InterpretaciónCompilación en C
Preprocesador
Código Fuente Modificado.
Código Fuente
Código Fuente Modificado
Compilador
Lenguaje Ensamblador
15Compilación e InterpretaciónCompilación en C
Preprocesador
Programa Fuente Modificado.
Código Fuente
Programa Fuente Modificado
Compilador C
Código C
Compilador C
Lenguaje Ensamblador
Código C
16Fases de la Compilación
Flujo de Caracteres
Scanner (Análisis Léxico)
Flujo de Tokens
FRONT END
Parser (Análisis Sintáctico)
Árbol Sintáctico Concreto
Análisis Semántico y generación de código
intermedio
Árbol Sintáctico Abstracto u otra forma
intermedia.
Mejoras Independientes del código de la máquina
(opcional)
Forma Intermedia Modificada
Generación de código objeto
BACK END
Lenguaje de máquina, ensamblado u otro código
objeto.
Mejoras de código específicas a la máquina
(opcional)
Tabla de Símbolos