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.
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.
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.
Razones de la diversidad de lenguajes Evolución
Propósitos Especiales Preferencia Personal
Razones de Éxito de un Lenguaje Poder Expresivo Facilidad
de Uso para Novatos Facilidad de Implementación Excelentes
Compiladores Economía, Patronato e Inercia
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
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.
Compilación e Interpretación: Traductor
Código Fuente Entrada Salida Programa Intermedio Traductor
Máquina Virtual Programa Intermedio
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
Compilación e Interpretación:Compilación en
C Código Fuente Lenguaje Ensamblador Código Fuente
Modificado. Preprocesador Compilador Código Fuente
Modificado
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 Ensamblador Compilador C Código
C
Fases de la Compilación Flujo 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 FRONT END BACK END