2. LENGUAJES DE PROGRAMACIÓN
Presentación de los diferentes paradigmas de los
lenguajes de programación. Así como de sus
carácterísticas fundamentales. Introducción a un
lenguaje típico de cada paradigma. Análisis de los
conceptos clave sobre los que se construyen los
diferentes lenguajes. Introducción a las formas de
descripción formal de los lenguajes de programación.
Objetivos
3. LENGUAJES DE PROGRAMACIÓN
I - Introducción (5h). Conceptos y constructores. Descripciones
formales: sintaxis y semántica. Paradigmas del los lenguajes de
programación. Breve repaso histórico.
II - Paradigmas de los lenguatges de programación (35h).
Paradigma funcional: Haskell. Paradigma lógico: Prolog.
Paradigma imperativo: Ada. Programación orientada a objetos:
Smalltalk, Java.
III - Conceptos y constructores (10h). Valores.
Almacenamiento y variables. Enlaces (bindings). Abstracción.
Encapsulación. Sistema de tipos. Secuenciadores.
Programa
4. LENGUAJES DE PROGRAMACIÓN
IV - Descripción formal de los lenguajes de programación
(8h). Sintaxis. Semántica. Modelos de los lenguajes de
programación.
V - Conclusiones (2h).
Programa
5. LENGUAJES DE PROGRAMACIÓN
•“Lenguaje de programación, principios y práctica”,
Segunda edición. Kenneth C Louden. Thomson 2004.
•"Programming Language Concepts and Paradigms
D. A.Watt Ed.Prentice-Hall, 1990
•"Programming Language Syntax and Semantics
D. A.Watt Ed.Prentice-Hall, 1990.
•"Programming in
PROLOG” W. F.Clocksin,
C.S.Mellish Ed.Springer.
•“Introducción a la programación funcional con
Haskell. “ Richard Bird, Ed.Prentice-Hall, 1999.
Bibliografía
6. Bibliografía
• Construcción de Software Orientado a
Objetos. Bertrand Meyer.
• Java, How to program. 6/E. Deitel & Deitel
7. Evaluación
• Examen (Febrero) 50 %
– 75% POO, 25% Funcional y Lógico
• Prácticas 50%
– Grupos unipersonales
– Lenguajes: Java, Python, Haskell, Prolog
• Se hace media en Febrero a partir de 4
• Tutorías:
– tutorias_etse@hotmail.com (MSN)
– pgarcia@etse.urv.es
– Despacho 238
9. Indice
1. ¿ Qué es un lenguaje de programación ?
2. Abstracciones
3. Paradigmas de computación
4. Definición del lenguaje
5. Traducción del lenguaje
6. Historia
7. Preguntas
10. 1.1 ¿ Qué es un LP ?
• Computación
– Máquina Turing, tesis de Church
• Legibilidad por parte de la máquina
• Legibilidad por parte del ser humano
Definición: Un lenguaje de programación es un sistema
notacional para describir computaciones de una forma
legible tanto para la máquina como para el ser humano.
12. 1.3 Abstracciones
• Clases: Datos y control
• Niveles: básicas, estructuradas y unitarias
Abstracciones de datos:
● Básicas: tipos básicos (enteros, reales, ...)
● Estructuradas: tipos estructurados (arreglos, registros)
● Unitarias: Tipos abstractos de datos (TDAs), paquetes,
módulos, clases, componentes
13. 1.3 Abstracciones
• Abstracciones de control
– Básicas: asignación, goto
– Estructuradas: condicionales e iteradores
– Unitarias: paquetes, módulos, hilos y tareas.
Un lenguaje de programación es completo en Turing
siempre que tenga variables enteras y aritméticas, y que
ejecute enunciados en forma secuencial, incluyendo
enunciados de asignación, selección e iteración.
14. 1.4 Paradigmas de programación
• Imperativo
– modelo de Von Neuman, cuello de botella de
Von Neuman
• Orientado a Objetos
– TDAs, encapsulación, modularidad, reutilización
• Funcional
– noción abstracta de función, cálculo lambda,
recursividad, listas
• Lógico
– Lógica simbólica, programación declarativa
16. 1.6 Traducción del lenguaje
• Traductor es un programa que acepta otros
programas escritos en un lenguaje y:
– los ejecuta directamente (interprete)
– los transforma en una forma adecuada para su
ejecución (compilador).
entrada
código
fuente
salida
intérprete
17. 1.6 Traducción
• Pseudointérpretes: intermedio entre
interprete y compilador: lenguajes
intermedios
• Operaciones de un traductor: analizador
léxico (tokens), analizador sintáctico,
analizador semántico, preprocesador
código
fuente
traducción
adicional
compilación
código
objeto
código
ejecutable
18. 1.6 Traducción
• Tiempo de compilación y tiempo de
ejecución
• Propiedades estáticas: tiempo de compilación
• Propiedades dinámicas: tiempo de ejecución
• Recuperación de errores (compilación y
ejecución)
• Eficiencia y optimización (compilación o
ejecución)