Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes....

16
Introducción

Transcript of Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes....

Page 1: Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.

Introducción

Page 2: Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.

Agenda 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.

Page 3: Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.

Preámbulo

40’s:● 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.

Page 4: Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.

Preámbulo

50’s:● 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.

Page 5: Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.

Razones de la diversidad de

lenguajes

Evolución

Propósitos Especiales

Preferencia Personal

Page 6: Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.

Razones de Éxito de un

Lenguaje

Poder Expresivo

Facilidad de Uso para Novatos

Facilidad de Implementación

Excelentes Compiladores

Economía, Patronato e Inercia

Page 7: Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.

Clasificació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

Page 8: Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.

Por 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.

Page 9: Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.

Compilación e Interpretación:

Compilador

Código Fuente

Entrada Salida

Programa ObjetoCompilador

Programa Objeto

Controla la

Compilación

Controla la

Ejecución

Page 10: Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.

Compilación e Interpretación:

Interpretador

Código Fuente

EntradaSalidaInterpretador

Controla la

Ejecución

Page 11: Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.

Compilación e Interpretación:

Traductor

Código Fuente

EntradaSalida

Programa IntermedioTraductor

Máquina VirtualPrograma Intermedio

Page 12: Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.

Compilación e Interpretación:

Enlazador (Linker)

Programa Fuente

Librería de rutinas

Programa en Lenguaje

de Máquina

Lenguaje de Máquina

Incompleto

Compilador

Linker

Lenguaje de Máquina

Incompleto

Page 13: Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.

Compilación e Interpretación:

Compilador + “Assembler”

Programa Fuente

Lenguaje

de Máquina

Lenguaje

EnsambladorCompilador

AssemblerLenguaje

Ensamblador

Page 14: Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.

Compilación e Interpretación:

Compilación en C

Código Fuente

Lenguaje

Ensamblador

Código Fuente

Modificado.Preprocesador

CompiladorCódigo Fuente

Modificado

Page 15: Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.

Compilación e Interpretación:

Compilación en C++

Código Fuente

Código C

Programa Fuente

Modificado.Preprocesador

Compilador C++Programa Fuente

Modificado

Lenguaje

EnsambladorCompilador CCódigo C

Page 16: Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.

Fases de la CompilaciónFlujo de Caracteres

Flujo de Tokens

Árbol Sintáctico Concreto

Árbol Sintáctico Abstracto

u otra forma intermedia.

Forma Intermedia Modificada

Lenguaje de máquina, ensamblado

u otro código objeto.

“Scanner” (Análisis Léxico)

“Parser” (Análisis Sintáctico)

Análisis Semántico y generación

de código intermedio

Mejoras Independientes del

código de la máquina (opcional)

Generación de código objeto

Mejoras de código específicas a

la máquina (opcional)

Tabla de Símbolos

FR

ON

T E

ND

BA

CK

EN

D