1 / 23

Lenguajes de Programación Tema 1. Introducción y conceptos generales

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

vilhelm
Download Presentation

Lenguajes de Programación Tema 1. Introducción y conceptos generales

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Pedro García López pgarcia@etse.urv.es/ Lenguajes de ProgramaciónTema 1. Introducción y conceptos generales

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

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

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

  5. 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).

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

  7. Bibliografía • Construcción de Software Orientado a Objetos. Bertrand Meyer. • Java, How to program. 6/E. Deitel & Deitel

  8. 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. Asignaturas relacionadas • Programación 1 • Programación 2 • Estructuras de datos • Lenguajes, Gramáticas y autómatas

  10. Indice • ¿ Qué es un lenguaje de programación ? • Abstracciones • Paradigmas de computación • Definición del lenguaje • Traducción del lenguaje • Historia • Preguntas

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

  12. 1.2 Características • Eficiencia • Expresividad • Capacidad de mantenimiento • Legibilidad • Confiabilidad • Seguridad • Simplicidad • Productividad

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

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

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

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

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

  19. 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)

  20. 1.7 Historia 50 FORTRAN LISP 60 AlGOL 60 COBOL PL/I Prolog Simula Pascal 70 Smalltalk C ML 80 Ada Miranda 90

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

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

  23. 1.8 Preguntas • Evalua los lenguajes del punto anterior respecto a las características del punto 1.2 • Extrae conclusiones de las dos clasificaciones

More Related