Curso de Doctorado: Lenguajes Integrados Multiparadigma

Documentos relacionados
Estructuras Dinámicas

Planificaciones Algoritmos y Programación I. Docente responsable: CARDOZO MARTIN MIGUEL. 1 de 8

ANEXO XVII DE LA RESOLUCION N

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Verificación de programas. Algoritmos y Estructuras de Datos I. Semánticas formales: Primer cuatrimestre de 2016

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 2. Acciones Primitivas.

Introducción a la Computación (Matemática)

Computadora y Sistema Operativo

Unidad I: Introducción a las estructuras de datos

TÍTULO: MATEMÁTICA DISCRETA Y LÓGICA Disponibilidad

Apuntes de Tipos Abstractos de Datos. Juan M. Molina Bravo

1. Computadores y programación

Procesadores de lenguaje Tema 5 Comprobación de tipos

Inteligencia en Redes de Comunicaciones. Razonamiento lógico. Julio Villena Román.

2.2 Nombres, Ligado y Ámbito

Tema 3.- Predicados y sentencias condicionales

Métodos de Inteligencia Artificial

Introducción a PL/SQL

Introducción al Análisis Sintáctico

Tema 3: Características de la programación funcional. Sesión 5: El paradigma funcional (1)

Programación imperativa. Algoritmos y Estructuras de Datos I. Lenguaje C. Segundo cuatrimestre de 2014

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute.

Lenguajes de programación Última modificación 2008/10

Metodología y Tecnología de la Programación

2. Codificar de forma sistemática la secuencia de instrucciones en un lenguaje.

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008

Introducción a la programación: Contenido. Introducción

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

Programación I Teoría II.

LENGUAJES DE PROGRAMACIÓN

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Modelo de Orientación a Aspectos

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Lenguaje de Programación: C++ ARCHIVOS I/O

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

IFCD0111 Programación en Lenguajes Estructurados de Aplicaciones de Gestión

Inteligencia Artificial

7.3. Estructura de un programa

Evolución del software y su situación actual

Elementos de un programa en C

Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani

Programación Declarativa

REPRESENTACIÓN DE DATOS

1.1. Modelos de arquitecturas de cómputo: clásicas, segmentadas, de multiprocesamiento.

INSTITUCIÓN EDUCATIVA SAN CRISTÓBAL

Programación Estructurada

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México

1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos

Programación I Recursividad.

Fundamentos de Programación 2017-I

Teoría de Modelos Finitos: Motivación

Inteligencia en Redes de Comunicaciones - 04 Razonamiento lógico

ESTRUCTURA DE COMPUTADORES GUÍA DOCENTE

2007/ PROGRAMACIÓN. Tipo: TRO Curso: 1 Semestre: AB CREDITOS Totales TA TS AT AP PA OBJETIVOS. 1.-Introducción.

Diferentes Perspectivas de un Ordenador

Algoritmos y Programación I. Curso Prof. Arturo Servetto

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

UNIDAD 1. Algoritmo se define como un conjunto de instrucciones que la computadora debe seguir para resolver un problema.

Tema 1: Introducción. Teoría de autómatas y lenguajes formales I

Programación Modular. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Funciones y paso de parámetros

UNIVERSIDAD DE GUADALAJARA

Primera aproximación al aprendizaje automático.

Programación Estructurada

Apuntadores en C y C++

Lenguajes Formales y Monoides

Laboratorio de Arquitectura de Redes. Introducción al lenguaje C

Instituto Politécnico Nacional

Programación I.

SYLLABUS de la Asignatura. Programación INF1201

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

Matemática y programación

JavaScript: Lenguaje de programación

Semántica: principales usos. Semántica: principales enfoques. Semántica Operacional. Sintaxis abstracta de un lenguaje (sujeto) Semántica Operacional

Tema 2. Diseño Modular.

Programación en Lenguaje C

AC2 - Arquitectura de Computadores II

Duración (en horas) Evaluación de los aprendizajes

Resultado de Aprendizaje:

Introducción a la programación

Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS

UNIVERSIDAD AUTÓNOMA DE CHIAPAS FACULTAD DE INGENIERÍA CAMPUS I PROGRAMACIÓN DE COMPUTADORAS

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

Apuntadores (Punteros)

Nociones Básicas de Sémantica: Semántica Denotacional

Estructuras de Datos Declaraciones Tipos de Datos

Guía práctica de estudio 05: Diagramas de flujo

Tema 2 Introducción a la Programación en C.

Módulo. = Asignación = = Comp. de igualdad!= Com. de desigualdad <= Comp. menor o igual >= Comp. mayor o igual AND lógico OR lógica.

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

DES: Programa(s) Educativo(s): Tipo de materia: Clave de la materia:

Tema 13: Apuntadores en C

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO

Transcripción:

Curso de Doctorado: Lenguajes Integrados Multiparadigma Pascual Julián Iranzo Pascual.Julian@uclm.es Universidad de Castilla La Mancha Departamento de Informática Ciudad Real (España) Lenguajes Integrados Multiparadigma p.1/43

Presentación: Objetivos y características del curso Objetivos Que el alumno conozca los fundamentos, características y aplicaciones de los lenguajes declarativos integrados. Estudiar los mecanismos operacionales y la semántica asociados a las diferentes propuestas de integración de los lenguajes lógicos y funcionales. Revisar las técnicas de implementación. Lenguajes Integrados Multiparadigma p.2/43

Presentación: Objetivos y características del curso Indice 1.- Introducción. Lenguajes Integrados Multiparadigma p.3/43

Presentación: Objetivos y características del curso Indice 1.- Introducción. 2.- Sistemas ecuacionales. Lenguajes Integrados Multiparadigma p.3/43

Presentación: Objetivos y características del curso Indice 1.- Introducción. 2.- Sistemas ecuacionales. 3.- Sistemas de reescritura. Lenguajes Integrados Multiparadigma p.3/43

Presentación: Objetivos y características del curso Indice 1.- Introducción. 2.- Sistemas ecuacionales. 3.- Sistemas de reescritura. 4.- Narrowing y estrategias de narrowing. Lenguajes Integrados Multiparadigma p.3/43

Presentación: Objetivos y características del curso Indice 1.- Introducción. 2.- Sistemas ecuacionales. 3.- Sistemas de reescritura. 4.- Narrowing y estrategias de narrowing. 5.- Residuación. Lenguajes Integrados Multiparadigma p.3/43

Presentación: Objetivos y características del curso Indice 1.- Introducción. 2.- Sistemas ecuacionales. 3.- Sistemas de reescritura. 4.- Narrowing y estrategias de narrowing. 5.- Residuación. 6.- Taxonomía de las técnicas de implementación. Lenguajes Integrados Multiparadigma p.3/43

Presentación: Objetivos y características del curso Indice 1.- Introducción. 2.- Sistemas ecuacionales. 3.- Sistemas de reescritura. 4.- Narrowing y estrategias de narrowing. 5.- Residuación. 6.- Taxonomía de las técnicas de implementación. 7.- Curry: un ejemplo de lenguaje integrado. Lenguajes Integrados Multiparadigma p.3/43

Presentación: Objetivos y características del curso Método de Evaluación Realizar y exponer un trabajo relacionado con los contenidos teóricos del curso. Los trabajos serán individuales. Tiempo de exposición entre 20 minutos (mínimo) y 30 minutos. Lenguajes Integrados Multiparadigma p.4/43

Lenguajes Integrados Multiparadigma Indice Introducción. 2.- Sistemas ecuacionales. 3.- Sistemas de reescritura. 4.- Narrowing y estrategias de narrowing. 5.- Residuación. 6.- Taxonomía de las técnicas de implementación. 7.- Curry: un ejemplo de lenguaje integrado. Lenguajes Integrados Multiparadigma p.5/43

Lenguajes Imperativos vs. Computadores y Lenguajes Imperativos Los computadores modernos presentan una organización y funcionamiento basado en el modelo de von Neumann. Conduce a un modelo de cómputo en el que: Los procesadores ejecutan las intrucciones secuencialmente = Lenguajes dificiles de paralelizar. Lenguajes Integrados Multiparadigma p.6/43

Lenguajes Imperativos vs. Computadores y Lenguajes Imperativos Los computadores modernos presentan una organización y funcionamiento basado en el modelo de von Neumann. Conduce a un modelo de cómputo en el que: Hay una separación entre el tipo de informaciones que almacena la MC (instrucciones / datos) = repercusión sobre el diseño de estos lenguajes. Lenguajes Integrados Multiparadigma p.6/43

Lenguajes Imperativos vs. Computadores y Lenguajes Imperativos Los computadores modernos presentan una organización y funcionamiento basado en el modelo de von Neumann. Conduce a un modelo de cómputo en el que: Se introduce el concepto de estado de la computación (registros de la UCP + MC como un conjunto de palabras). Lenguajes Integrados Multiparadigma p.6/43

Lenguajes Imperativos vs. Computadores y Lenguajes Imperativos Los recursos expresivos de los lenguajes imperativos pueden verse como abstracciones de los componentes de la máquina de von Neumann o de sus operaciones elementales: variables celdas de la MC / registros Lenguajes Integrados Multiparadigma p.7/43

Lenguajes Imperativos vs. Computadores y Lenguajes Imperativos Los recursos expresivos de los lenguajes imperativos pueden verse como abstracciones de los componentes de la máquina de von Neumann o de sus operaciones elementales: registro (o estructura) / arrray conjunto contiguo de celdas de la MC Lenguajes Integrados Multiparadigma p.7/43

Lenguajes Imperativos vs. Computadores y Lenguajes Imperativos Los recursos expresivos de los lenguajes imperativos pueden verse como abstracciones de los componentes de la máquina de von Neumann o de sus operaciones elementales: nombres de variables direcciones de celdas de la MC / registros Lenguajes Integrados Multiparadigma p.7/43

Lenguajes Imperativos vs. Computadores y Lenguajes Imperativos Los recursos expresivos de los lenguajes imperativos pueden verse como abstracciones de los componentes de la máquina de von Neumann o de sus operaciones elementales: instrucciones de control intrucciones de salto condicional o incondicional del lenguaje máquina Lenguajes Integrados Multiparadigma p.7/43

Lenguajes Imperativos vs. Computadores y Lenguajes Imperativos Los recursos expresivos de los lenguajes imperativos pueden verse como abstracciones de los componentes de la máquina de von Neumann o de sus operaciones elementales: instrucción de asignación intrucciones LOAD+STORE o MOVE del lenguaje máquina Lenguajes Integrados Multiparadigma p.7/43

Lenguajes Imperativos vs. Computadores y Lenguajes Imperativos La instrucción de asignación resulta ser representativa del cuello de botella de von Neumann y nos obliga a pensar en términos de trasiego de información entre celdas de memoria. la instrucción de asignación separa la programación en dos mundos: Expresiones / Instrucciones. direcciones = expresión. Lenguajes Integrados Multiparadigma p.8/43

Lenguajes Imperativos vs. Características de los Lenguajes Imperativos (Resumen) PROGRAMA INSTRUCCIONES Transcripción de un algoritmo Instrucciones máquina MODELO CÓMPUTO VARIABLES DE Máquina de estados Referencias a memoria Lenguajes Integrados Multiparadigma p.9/43

Lenguajes Imperativos vs. Programación Imperativa algoritmos + estructuras de datos = programas [Wirth] Ejemplo: Concatenación de dos listas. Lenguajes Integrados Multiparadigma p.10/43

Lenguajes Imperativos vs. Programación Imperativa #include <stdio.h> #include <stdlib.h> typedef struct nodo { char dato; struct nodo *enlace; } LISTA; void mostrar(lista *ptr); void insertar(lista **ptr, char elemento); LISTA *crear_lista(); LISTA *concatenar(lista *ptr1, LISTA *ptr2); Lenguajes Integrados Multiparadigma p.11/43

Lenguajes Imperativos vs. Programación Imperativa void main() { LISTA *l1, *l2, *lis = NULL; l1 = crear_lista(); l2 = crear_lista(); lis = concatenar(l1, l2); printf("\n La nueva lista enlazada es: "); mostrar(lis); } Lenguajes Integrados Multiparadigma p.12/43

Lenguajes Imperativos vs. Programación Imperativa void mostrar(lista *ptr) { while(ptr!= NULL) { printf(" %c",ptr->dato); ptr = ptr->enlace; } printf("\n"); } Lenguajes Integrados Multiparadigma p.12/43

Lenguajes Imperativos vs. Programación Imperativa void insertar(lista **ptr, char elemento) { LISTA *p1, *p2; p1 = *ptr; if (p1 == NULL) { p1 = malloc(sizeof(lista)); if (p1!= NULL) { p1->dato = elemento; p1->enlace = NULL; *ptr = p1; } } else {... } } Lenguajes Integrados Multiparadigma p.12/43

Lenguajes Imperativos vs. Programación Imperativa LISTA *crear_lista() { LISTA *lis = NULL; char elemento; printf("\n Introduzca elementos: "); do { elemento = getchar(); if(elemento!= \n ) insertar(&lis, elemento); } while(elemento!= \n ); return lis; } Lenguajes Integrados Multiparadigma p.12/43

Lenguajes Imperativos vs. Programación Imperativa LISTA *concatenar(lista *ptr1, LISTA *ptr2) { LISTA *p1; p1 = ptr1; while(p1->enlace!= NULL) p1 = p1->enlace; p1->enlace = ptr2; return ptr1; } Lenguajes Integrados Multiparadigma p.12/43

Lenguajes Imperativos vs. Programación Imperativa Este programa ilustra las características de los lenguajes imperativos: Es una secuencia de instrucciones que son ordenes a la máquina que operan sobre un estado no explícitamente declarado. Lenguajes Integrados Multiparadigma p.13/43

Lenguajes Imperativos vs. Programación Imperativa Este programa ilustra las características de los lenguajes imperativos: Para entender el programa debemos ejecutarlo mentalmente (cómo cambian los contenidos de las variables y otras estructuras en la MC). Lenguajes Integrados Multiparadigma p.13/43

Lenguajes Imperativos vs. Programación Imperativa Este programa ilustra las características de los lenguajes imperativos: Es necesario gestionar explícitamen la MC (llamada al sistema malloc() + variables de tipo puntero). Lenguajes Integrados Multiparadigma p.13/43

Lenguajes Imperativos vs. Programación Imperativa Este programa ilustra las características de los lenguajes imperativos: Rigidez (sólo concatena listas de caracteres). Lenguajes Integrados Multiparadigma p.13/43

Lenguajes Imperativos vs. Programación Imperativa Este programa ilustra las características de los lenguajes imperativos: La lógica y el control están mezclados, lo que dificulta la verificación formal del programa. Lenguajes Integrados Multiparadigma p.13/43

Lenguajes Imperativos vs. Lenguajes Uso de una cierta lógica como lenguaje de programación: Un programa es un conjunto de fórmulas lógicas que resultan ser la especificación del problema que se pretende resolver, y la computación se entiende como una forma de inferencia o deducción en dicha lógica. Lenguajes Integrados Multiparadigma p.14/43

Lenguajes Imperativos vs. Lenguajes Los principales requisitos que debe cumplir la lógica empleada son: disponer de un lenguaje que sea suficientemente expresivo; disponer de una semántica operacional (un mecanismo de cómputo que permita ejecutar los programas); Lenguajes Integrados Multiparadigma p.15/43

Lenguajes Imperativos vs. Lenguajes Los principales requisitos que debe cumplir la lógica empleada son: disponer de una semántica declarativa que permita dar un significado a los programas de forma independiente a su posible ejecución; resultados de corrección y completitud. Lenguajes Integrados Multiparadigma p.15/43

Lenguajes Imperativos vs. Características de los Lenguajes (Resumen) PROGRAMA INSTRUCCIONES Especificación de un problema fórmulas lógicas MODELO CÓMPUTO VARIABLES DE Inferencias lógicas Variables lógicas Lenguajes Integrados Multiparadigma p.16/43

Lenguajes Imperativos vs. Programación Declarativa El programador especifica qué debe computarse más bien que cómo deben realizarse los cómputos. programa = lógica + control [Kowalski] Lenguajes Integrados Multiparadigma p.17/43

Lenguajes Imperativos vs. Programación Declarativa El componente lógico determina el significado del programa mientras que el componente de control solamente afecta a su eficiencia. la tarea de programar consiste en centrar la atención en la lógica dejando de lado el control al sistema. Lenguajes Integrados Multiparadigma p.18/43

Lenguajes Imperativos vs. Ventajas de la Programación Declarativa Estilo de programación de muy alto nivel y control automático. Mayor poder expresivo. Mayor productividad, programas más pequeños y fáciles de mantener. Lenguajes Integrados Multiparadigma p.19/43

Programación Declarativa Programación Lógica Se basa en (fragmentos de) la lógica de predicados: lógica de cláusulas de Horn (HCL). Define relaciones mediante cláusulas A B 1... B 2 (implicaciones) Lenguajes Integrados Multiparadigma p.20/43

Programación Declarativa Programación Lógica: Ejemplo Concatenación de dos listas. app([ ], X, X) app([x X s ], Y, [X Z s ]) app(x s, Y, Z s ) Lenguajes Integrados Multiparadigma p.21/43

Programación Declarativa Programación Lógica: Ejemplo Concatenación de dos listas. app([ ], X, X) app([x X s ], Y, [X Z s ]) app(x s, Y, Z s ) Lectura declarativa: La concatenación de la lista vacía [ ] y otra lista X es la propia lista X. Lenguajes Integrados Multiparadigma p.21/43

Programación Declarativa Programación Lógica: Ejemplo Concatenación de dos listas. app([ ], X, X) app([x X s ], Y, [X Z s ]) app(x s, Y, Z s ) Lectura declarativa: La concatenación de [X X s ] e Y es la lista que resulta de añadir el primer elemento X de [X X s ] a Z s, si Z s es la concatenación de X s e Y. Lenguajes Integrados Multiparadigma p.21/43

Programación Declarativa Programación Lógica: Ejemplo Concatenación de dos listas. app([ ], X, X) app([x X s ], Y, [X Z s ]) app(x s, Y, Z s ) Lectura operacional: Para concatenar dos listas [X X s ] e Y primero es preciso resolver el problema de concatenar el resto X s de la primera lista, a la segunda Y. Lenguajes Integrados Multiparadigma p.21/43

Programación Declarativa Programación Lógica: Ejemplo Concatenación de dos listas. app([ ], X, X) app([x X s ], Y, [X Z s ]) app(x s, Y, Z s ) Lectura operacional: La concatenación de la lista vacía [ ] y otra lista X es un problema ya resuelto. Lenguajes Integrados Multiparadigma p.21/43

Programación Declarativa Programación Lógica: Ejemplo Principales características de este programa: Gestión automática de la memoria Mecanismo de cómputo que permite una búsqueda indeterminista (built-in search) de soluciones: Lenguajes Integrados Multiparadigma p.22/43

Programación Declarativa Programación Lógica: Ejemplo Principales características de este programa: Gestión automática de la memoria Mecanismo de cómputo que permite una búsqueda indeterminista (built-in search) de soluciones: Responde a diferentes objetivos (sin necesidad de efectuar ningún cambio en el programa), Lenguajes Integrados Multiparadigma p.22/43

Programación Declarativa Programación Lógica: Ejemplo Principales características de este programa: Gestión automática de la memoria Mecanismo de cómputo que permite una búsqueda indeterminista (built-in search) de soluciones: Computa con datos parcialmente definidos, Lenguajes Integrados Multiparadigma p.22/43

Programación Declarativa Programación Lógica: Ejemplo Principales características de este programa: Gestión automática de la memoria Mecanismo de cómputo que permite una búsqueda indeterminista (built-in search) de soluciones: Relación de entrada/salida no está fijada de antemano. Lenguajes Integrados Multiparadigma p.22/43

Programación Declarativa Programación Lógica: Semántica operacional Resolución SLD (regla de computación ϕ) (G Q 1 A Q 2 ), ϕ(g)=a, C (A Q) <Π, σ =mgu(a,a ) σ G = SLD σ(q 1 Q Q 2 ) Procedimiento de prueba por refutación SLD: regla de computación + regla de ordenación + regla búsqueda. Lenguajes Integrados Multiparadigma p.23/43

Programación Declarativa Programación Funcional Se basa en el concepto de función (matemática) y su definición mediante ecuaciones, que constituyen el programa. Computación = reducción determinista de expresiones (funcionales) para obtener un valor. Aproximaciones: ecuacional; algebraica; λ-cálculo. Lenguajes Integrados Multiparadigma p.24/43

Programación Declarativa Programación Funcional: Ejemplo Concatenación de dos listas. data [t] = [ ] [t : [t]] app :: [t] [t] [t] app [ ] x = x app (x : x s ) y = x : (app x s y) Lenguajes Integrados Multiparadigma p.25/43

Programación Declarativa Programación Funcional: Ejemplo Principales características de este programa: Necesidad de fijar el perfil de la función (dominio + rango) = idea de tipo de datos [Lenguajes fuertemente basados en tipos] Se ha declarado la estructura de datos lista: Lenguajes Integrados Multiparadigma p.26/43

Programación Declarativa Programación Funcional: Ejemplo Principales características de este programa: Necesidad de fijar el perfil de la función (dominio + rango) = idea de tipo de datos [Lenguajes fuertemente basados en tipos] Se ha declarado la estructura de datos lista: [ ] y : son los constructores del tipo Lenguajes Integrados Multiparadigma p.26/43

Programación Declarativa Programación Funcional: Ejemplo Principales características de este programa: Necesidad de fijar el perfil de la función (dominio + rango) = idea de tipo de datos [Lenguajes fuertemente basados en tipos] Se ha declarado la estructura de datos lista: t es una variable de tipo = Polimorfismo Lenguajes Integrados Multiparadigma p.26/43

Programación Declarativa Programación Funcional: Otras características de las funciones (matemáticas) Transparencia referencial: la salida viene determinado exclusivamente por la entrada. = No efectos laterales; Permite el razonamiento ecuacional (substitución de iguales por iguales); Cómputos deterministas. Lenguajes Integrados Multiparadigma p.27/43

Programación Declarativa Programación Funcional: Otras características de las funciones (matemáticas) Composición de funciones: Permite la construcción de programas mediante el empleo de funciones primitivas o previamente definidas por el usuario; Refuerza la modularidad de los programas. Lenguajes Integrados Multiparadigma p.28/43

Programación Declarativa Programación Funcional: Orden superior Empleo de las funciones como ciudadados de primera clase. Ejemplo: Funciones de Curry (+) :: Integer Integer Integer > 2 + 3 5 (El resultado es un Integer) Lenguajes Integrados Multiparadigma p.29/43

Programación Declarativa Programación Funcional: Orden superior Empleo de las funciones como ciudadados de primera clase. Ejemplo: Funciones de Curry (+) :: Integer Integer Integer > (2 +) E xpression : (2+) Of type : Integer Integer (El resultado es una funció Lenguajes Integrados Multiparadigma p.29/43

Programación Declarativa Programación Funcional: Orden superior Empleo de las funciones como ciudadados de primera clase. Ejemplo: Las funciones se pueden pasar como argumentos map :: (t 1 t 2 ) [t 1 ] [t 2 ] map f [ ] = [ ] map f (x : x s ) = (f x) : (map f x s ) Lenguajes Integrados Multiparadigma p.29/43

Programación Declarativa Programación Funcional: Semántica operacional β reducción (aproximación clásica: λ cálculo) (λx.λy. + x y) 3 2 β (λy. + 3 y) 2 β + 3 2 δ 5 Estrategias de evaluación: función de selección para redexes: leftmost vs. rightmost; innermost vs. outermost. orden aplicativo (voraz, call by value): leftmost innermost. orden normal (perezosa, call by name): leftmost outermost. Lenguajes Integrados Multiparadigma p.30/43

Programación Declarativa Programación Funcional: Semántica operacional Reescritura (aproximación algebraica) (l = r) < Π, ( p)( σ).σ(l) = t p t σ t[σ(r)] p Estrategias de evaluación: función de selección para redexes: leftmost vs. rightmost; innermost vs. outermost. leftmost innermost; leftmost outermost; parallel outermost; parallel outermost;... Lenguajes Integrados Multiparadigma p.31/43

Programación Declarativa Programación Lógica vs. Funcional: Diferencias Programación Lógica PROGRAMA: Conjunto de cláusulas que definen relaciones Programación Funcional PROGRAMA: Conjunto de ecuaciones que definen funciones. SEMÁNTICA OPERACIONAL: Resolución SLD (unificación) SEMÁNTICA OPERACIONAL: Reducción (ajuste de patrones) SEMÁNTICA DECLARATIVA: Teoría de modelos (Modelo mínimo) SEMÁNTICA DECLARATIVA: Algebraica (Algebra inicial) / Denotacional Lenguajes Integrados Multiparadigma p.32/43

Programación Declarativa Programación Lógica vs. Funcional: Diferencias Primer orden Indeterminismo; Variables lógicas; Datos parcialmente especificados; E/S adireccional Sin tipos No estructuras infinitas No evaluación perezosa Orden superior Determinismo; Sin variables lógicas; Datos completamente especificados; E/S direccional Tipos y polimorfismo Estructuras infinitas Evaluación perezosa Lenguajes Integrados Multiparadigma p.32/43

Programación Declarativa Ventajas de los Lenguajes Funcionales respecto a los Lógicos Funciones de orden superior mejor abstracción mejor modularización Evaluación eficiente reducción determinista evaluación perezosa Lenguajes Integrados Multiparadigma p.33/43

Programación Declarativa Ventajas de los Lenguajes Lógicos respecto a los Funcionales Búsqueda de soluciones indeterminista. Mayor potencia expresiva (e.g. variables extra; información parcial; inversibilidad). Aplicaciones en investigación operativa, BD e IA. Programación con restricciones (constraint solving). Lenguajes Integrados Multiparadigma p.34/43

Integración de Paradigmas Motivación: Objetivo Cada estilo tiene algo que ofrecer al otro: los lenguajes lógicos poseen la lógica de la unificación y de las variables lógicas. los lenguajes funcionales poseen la lógica de la igualdad y de las funciones. Objetivo: combinar las mejores características de los lenguajes lógicos y funcionales. Lenguajes Integrados Multiparadigma p.35/43

Integración de Paradigmas Motivación: Ventajas (esperadas) de los Lenguajes Lógico-Funcionales Potencia expresiva de un lenguaje lógico Eficiencia de un lenguaje funcional Aplicaciones de ambos campos Lenguajes Integrados Multiparadigma p.36/43

Integración de Paradigmas Motivación: Problemas con Prolog Evitar ciertas características impuras de Prolog: Indeterminismo incontrolado: ineficiencia y ramas infinitas. Control ad hoc: corte (rojo no declarativo). E/S no declarativa. Lenguajes Integrados Multiparadigma p.37/43

Integración de Paradigmas Motivación: Problemas con Prolog La integración de funciones produce: Indeterminismo incontrolado: ineficiencia y ramas infinitas. Control ad hoc: corte (rojo no declarativo). E/S no declarativa. Lenguajes Integrados Multiparadigma p.37/43

Integración de Paradigmas Motivación: Problemas con Prolog La integración de funciones produce: Mejor eficiencia: determinismo. Control ad hoc: corte (rojo no declarativo). E/S no declarativa. Lenguajes Integrados Multiparadigma p.37/43

Integración de Paradigmas Motivación: Problemas con Prolog La integración de funciones produce: Mejor eficiencia: determinismo. Control automático: corte dinámico (declarativo). E/S no declarativa. Lenguajes Integrados Multiparadigma p.37/43

Integración de Paradigmas Motivación: Problemas con Prolog La integración de funciones produce: Mejor eficiencia: determinismo. Control automático: corte dinámico (declarativo). E/S declarativa. Lenguajes Integrados Multiparadigma p.37/43

Integración de Paradigmas Aproximaciones a la Integración: funcional + lógico Sintaxis funcional: ecuaciones (condicionales?) s = t s 1 = t 1... s n = t n Los predicados son funciones booleanas. Las fórmulas atómicas son ecuaciones A = true. Lenguajes Integrados Multiparadigma p.38/43

Integración de Paradigmas Aproximaciones a la Integración: funcional + lógico Objetivo: Añadir variables lógicas y no determinismo a un lenguaje funcional Semánticas operacionales: Narrowing = reducción + unificación. Residuación = reducción + espera hasta que las funciones esten suficientemente instanciadas. Lenguajes Integrados Multiparadigma p.39/43

Integración de Paradigmas Aproximaciones a la Integración: lógico + funcional Sintaxis lógica con características funcionales: Cláusulas de Horn con igualdad A s 1 = t 1... s n = t n B 1... B n s = t s 1 = t 1... s n = t n B 1... B n Lenguajes Integrados Multiparadigma p.40/43

Integración de Paradigmas Aproximaciones a la Integración: lógico + funcional Objetivo: Añadir igualdad a un lenguaje lógico, Funciones definidas, Tipos de Datos. Semánticas operacionales: Flattening = desanidar funciones + SLD. Resolución SLDE = SLD + E-unificación. Resolución SLD + nuevas reglas para las funciones (Residuación o narrowing). Lenguajes Integrados Multiparadigma p.41/43

Integración de Paradigmas Lenguajes Mecanismo Operacional Narrowing (reescritura con unificación) Flattening (Traducción a Prolog) SLDE-resolución (resolución con unificación semántica) Residuación (Resolución con congelación de ecuaciones y reescritura) Weakly needed narrowing (Weakly) Needed narrowing + Residuación Lenguajes ALF, BABEL, SLOG K-LEAF, EUROPA LPG ESCHER, Le Fun, Oz T OY Curry Lenguajes Integrados Multiparadigma p.42/43

Integración de Paradigmas Bibliografía Hanus M., 1994. The Integration of Functions into Logic Programming: From Theory to Practice. Journal of Logic Programming, 19&20:583 628. Moreno Navarro J.J., 1995. Programación Lógica y Programación funcional. En Estudios sobre la programación Lógica y sus aplicaciones, Universidad de Santiago de Compostela, pp. 35 77. Lenguajes Integrados Multiparadigma p.43/43