Upload
universidad-centroamericana
View
49
Download
4
Tags:
Embed Size (px)
Citation preview
Lenguajes de ProgramaciónTema 1. Introducción y
conceptos generales
Pedro García Ló[email protected]/
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
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
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
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
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
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:– [email protected] (MSN)– [email protected]– Despacho 238
Asignaturas relacionadas
• Programación 1
• Programación 2
• Estructuras de datos
• Lenguajes, Gramáticas y autómatas
Indice
1. ¿ Qué es un lenguaje de programación ?
2. Abstracciones3. Paradigmas de computación4. Definición del lenguaje5. Traducción del lenguaje6. Historia7. Preguntas
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.
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).
entrada
código fuente
salidaintérprete
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ónadicional
compilación
código objeto
código ejecutable
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
FORTRAN
AlGOL 60 COBOL
50
60
70
80
90
SimulaSmalltalk
Pascal
AdaC
PL/I
LISP
ML
Miranda
Prolog
1.7 Historia1950 1960 1970 1980 1990
Fortran(54)
PL/I(66)
Ada(95)
Java(96)
Basic(66)
C(72)
Pascal(70)
Cobol(58)
Algol(60)
Simula(67) Smalltalk(80)
C++(89)
ENSAMBLADOR
Eiffel (86)
Ada(83)
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