230 likes | 641 Views
Pedro García López pgarcia@etse.urv.es /. Lenguajes de Programación Tema 1. Introducción y conceptos generales. Copyright. © University Rovira i Virgili
E N D
Pedro García López pgarcia@etse.urv.es/ Lenguajes de ProgramaciónTema 1. Introducción y conceptos generales
Copyright • © University Rovira i Virgili • Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; provided its original author is mentioned and the link to http://libre.act-europe.fr/ is kept at the bottom of every non-title slide. A copy of the license is available at: • http://www.fsf.org/licenses/fdl.html
Objetivos 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. LENGUAJES DE PROGRAMACIÓN
LENGUAJES DE PROGRAMACIÓN Programa 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.
LENGUAJES DE PROGRAMACIÓN Programa IV - Descripción formal de los lenguajes de programación (8h). Sintaxis. Semántica. Modelos de los lenguajes de programación. V - Conclusiones (2h).
LENGUAJES DE PROGRAMACIÓN Bibliografía • “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 • Construcción de Software Orientado a Objetos. Bertrand Meyer. • Java, How to program. 6/E. Deitel & Deitel
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
Asignaturas relacionadas • Programación 1 • Programación 2 • Estructuras de datos • Lenguajes, Gramáticas y autómatas
Indice • ¿ Qué es un lenguaje de programación ? • Abstracciones • Paradigmas de computación • Definición del lenguaje • Traducción del lenguaje • Historia • Preguntas
1.1 ¿ Qué es un LP ? 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. • Computación • Máquina Turing, tesis de Church • Legibilidad por parte de la máquina • Legibilidad por parte del ser humano
1.2 Características • Eficiencia • Expresividad • Capacidad de mantenimiento • Legibilidad • Confiabilidad • Seguridad • Simplicidad • Productividad
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
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.
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
1.5 Definición del lenguaje • Sintaxis (estructura) • Gramáticas libres de contexto, estructura léxica, tokens • Semántica (significado) • Lenguaje natural • Semántica operacional • Semántica denotacional
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). código fuente entrada intérprete salida
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 código objeto código ejecutable traducción adicional compilación
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)
1.7 Historia 50 FORTRAN LISP 60 AlGOL 60 COBOL PL/I Prolog Simula Pascal 70 Smalltalk C ML 80 Ada Miranda 90
1950 1960 1970 1980 1990 PL/I(66) Eiffel (86) Ada(95) Ada(83) Cobol(58) Pascal(70) Java(96) Algol(60) C(72) C++(89) Fortran(54) Simula(67) Smalltalk(80) Basic(66) 1.7 Historia ENSAMBLADOR
1.8 Preguntas • Clasifica los siguientes lenguajes (C, Ada, C++, Java, LISP, Prolog, Visual Basic, JavaScript, C#, PHP) en base a : • Paradigma • tipos de traductor (compilador, interprete, pseudointérprete) • Propiedades estáticas y dinámicas • Eficiencia • Extraed conclusiones de esta clasificación
1.8 Preguntas • Evalua los lenguajes del punto anterior respecto a las características del punto 1.2 • Extrae conclusiones de las dos clasificaciones