LENGUAJES LOGICO FUNCIONALES - PowerPoint PPT Presentation

About This Presentation
Title:

LENGUAJES LOGICO FUNCIONALES

Description:

... declaraciones adicionales de tipos, modos, determinismo ... Todos los programas Mercury necesitan del predicado main para tomarlo como punto de partida. ... – PowerPoint PPT presentation

Number of Views:225
Avg rating:3.0/5.0
Slides: 29
Provided by: Taha4
Category:

less

Transcript and Presenter's Notes

Title: LENGUAJES LOGICO FUNCIONALES


1
LENGUAJES LOGICO FUNCIONALES
  • REALIZADO POR
  • Taha Boureddan

2
INDICE
  • Introducción a la programación lógico-funcional
  • Algunos lenguajes lógico-funcionales
  • Oz
  • - Historia
  • - Multiparadigma
  • - Programación con restricciones
  • - Jerarquía de tipos
  • - Ejemplos
  • - ventajas
  • Mozart
  • Mercury
  • - Historia
  • - Tipos
  • - Determinismo
  • - Ejemplos
  • - Ventajas
  • Bibliografía

3
INTRODUCCION A LOS LENGUAJES LOGICO-FUNCIONALES
  • Los lenguajes de programación lógico
    funcionales integran algunas de las mejores
    carácteristicas de los paradigmas declarativos
    clasicos ,en concreto
  • la programacion logica
  • la programacion funcional.
  • Cada uno de estos estilos tiene diferentes
    ventajas con respecto a sus aplicaciones
    practicas.
  • Los lenguajes funcionales proporcionan
  • _- Facilidades de abstracción sofisticadas.
  • - Sistemas de módulos.
  • - Soluciones puras para la integración de
    facilidades de I/O en la programación
    declarativa.
  • - Además de técnicas y estrategias
    eficientes para la ejecución de los programas.

4
INTRODUCCION A LOS LENGUAJES LOGICO-FUNCIONALES
  • Los lenguajes lógicos permiten
  • - La computación con información parcial .
  • - Están provistos de facilidades de
    búsqueda de soluciones.
  • Sin embargo, se ha demostrado que las
    ventajas de estos estilos pueden combinarse de
    manera efectiva y útil sobre un lenguaje único.
    Los lenguajes lógico funcionales modernos ofrecen
    carácteristicas de ambos estilos. La semántica
    operacional de los lenguajes integrados esta
    usualmentebasada en narrowing, una combinación de
    la unificación y reducción como mecanismo de
    evaluación que subsume a la reescritura y a a
    SLD-resolución.

5
ALGUNOS LENGUAJES LOGICO FUNCIONALES
  • OZ
  • MOZART
  • MERCURY
  • LIFE
  • TOY

6
OZ Historia
  • OZ fue originalmente desarrollado en el
    laboratorio de Programación de Sistemas en la
    Universidad de Saarland por Gert Smolka y sus
    estudiantes a comienzos de 1990. En 1996 el
    desarrollo de Oz continuó en cooperación con el
    grupo de investigación de Seif Haridi en
    Instituto Sueco de Ciencias de la Computación.
    Desde 1999, Oz ha sido continuamente desarrollado
    por un grupo internacional, el Consorcio Mozart,
    que estuvo compuesto originalmente por la
    Universidad de Saarland, el Instituto Sueco de
    Ciencias de la Computación, y la Universidad
    Católica de Louvain. En 2005, la responsabilidad
    de gestionar el desarrollo de Mozart fue
    transferida aun grupo base, el Tablero Mozart,
    con el propósito expreso de abrir el desarrollo
    de Mozart a una comunidad mayor.

7
OZ Historia
  • Oz tiene una implementación de gran calidad, el
    Sistema de Programación Mozart, el cual fue
    liberado con una licencia de Código Abierto por
    el Consorcio Mozart. Mozart ha sido portado a
    diferentes plataformas como Unix, FreeBSD, Linux,
    Microsoft Windows, y Mac OS X.

8
OZ Historia
  • Fue diseñado para hacer un avance moderno para
    las aplicaciones concurrentes , inteligentes , de
    redes , tiempo real , paralelismo , interactivas
    y reactivas .y para resolver aplicaciones
    complejas robusta y rápidamente.

9
OZ Multiparadigma
  • Oz contiene una forma simple y bien hecha de la
    mayoría de los conceptos de los principales
    paradigmas de programación que son

Programación lógica
Programación funcional
Programación imperativa
Programación orientada a objetos
Programación concurrente
Programación distribuida
Programación con restricciones
10
OZ Programación con restricciones
  • Con respecto a la Programación con
    restricciones la búsqueda es implementada de
    forma diferente a como es había hecho en los
    lenguajes lógicos con restricciones , puesto que
    la búsqueda es programable . Además en vez de
    seguir el típico enfoque de primero en
    profundidad y de izquierda a derecha , las
    estrategias de búsqueda están codificadas en los
    llamados procedimientos de búsqueda con lo que se
    explora en espacio de soluciones . Además el
    computo puede ser suspendido o retrasado con
    respecto a las elecciones a realizar en el
    procedimiento de exploración , hasta que el
    programador especifique explícitamente un
    procedimiento de búsqueda.

11
OZ JERARQUIA DE TIPOS
EN OZ
Es un sistema de tipificación dinámico
El tipo de datos Chunk permite que los usuarios
introduzcan nuevos tipos de datos abstractos.
FDInt es un tipo de dominio finito que se utiliza
en la programación con restricciones
12
OZ Concurrencia
  • La concurrencia en OZ es muy eficiente y
    económico
  • La programación con hebras no es tan pesada .

13
EJEMPLO SIMPLE EN OZ
  • El típico programa de Hello World en OZ seria
    así de simple
  • Se usa el editor de texto emacs

14
OZ ejemplo de concurrencia
TARDA 7.5 SEGUNDOS EN CREAR 100000 HEBRAS
death --threads 100000 --times 10
15
OZ ejemplo de concurrencia
El mismo programa en java tarda 230 min. pero
con solo java Death 1000 10
16
OZ Ventajas
  • Implementa un modelo de programación
    distribuido que hace a la red transparente.
  • Hace fácil programar aplicaciones abiertas y
    tolerantes a fallos en el lenguaje.
  • Introduce la idea de espacios de computación,
    los cuales permiten búsquedas definidas por el
    usuario y estrategias de distribución que son
    ortogonales al dominio de restricciones.

17
MOZART
  • Es el resultado de 3 años de investigación en
    la programación distribuida, y 10 años en la
    investigación en la programación concurrente .
  • fue desarrollado por
  • DFKI (centro de investigación alemán para la
    inteligencia artificial)
  • SICS (instituto sueco para las ciencias de
    computación)
  • UCL (universidad católica de Louvain)

18
MOZART
  • MOZART en una implementación del lenguaje OZ,
    por tanto soporta los paradigmas de OZ
    mencionados con anterioridad y Es un potente
    lenguaje para trabajo en red, computación
    distribuida y posee una licencia libre.

19
MERCURY Historia
  • Es un lenguaje lógico funcional que esta basado
    el la programación declarativa pura.
  • Es un lenguaje de propósito general que fue
    diseñado para resolver aplicaciones del mundo
    real de forma robusta.
  • Fue desarrollado por Fergus Henderson, Thomas
    Conway y Zoltan Somogyi en la universidad de
    Melbourne el 8 de abril de 1995 .
  • Su sintaxis es parecida a la de Prolog con
    algunas declaraciones adicionales de tipos,
    modos, determinismo ...
  • Soporta el polimorfismo .

20
MERCURY Tipos
  • Usa un sistema estático de chaqueo de tipos
    similar al de Haskell , pero también soporta
    tipificación dinámica ya que dispone del tipo
    universal (UNIV) esta definido en la librería
    estándar en el modulo std_util, con la ayuda de
    estos predicados type_to_univ/2 y univ_to_type/2
    se puede convertir un tipo en universal y
    viceversa , este tipo universal es usado en
    situaciones en las que se necesita colecciones
    heterogéneas.

21
MERCURY Determinismo
  • El determinismo en Mercury es mediante categorías
    usando estos predicados

22
MERCURY Ejemplos
  • Hello World
  • Todos los programas Mercury necesitan del
    predicado main para tomarlo como punto de partida
    .
  • El main tiene 2 argumentos di de entrada y ou de
    salida.
  • Is det es un predicado determinista (siempre da
    la misma salida).

Cada
23
MERCURY Ejemplos
  • Los números de fibonacci

24
MERCURY Ejemplos
Aquí se ha usado el predicado cc_multi porque con
una solución es suficiente
  • DOGANTCAT

25
MERCURY Ejemplos (DOGANTCAT)
Una vez compilado y ejecutado
mmc --make crypt Making Mercury/int3s/crypt.int3
Making Mercury/cs/crypt.c Making
Mercury/os/crypt.o Making crypt ./crypt DOG
ANT CAT 420 531 951 Success!
26
MERCURY Ventajas
  • Es un lenguaje puro , comparado con Prolog ,es
    mas declarativo puesto que carece de
    declaraciones extra-logicas" como poda y E/S
    imperativa .Permite una optimizacion mejor del
    programa . Gracias a estas optimizaciones debidas
    a la pureza del programa , un programa escrito en
    mercury es mas rapido que uno equivalente
    realizado en prolog.

27
MERCURY Proyectos
  • Algunos de los proyectos que usan Mercury
  • HAL Project es un lenguaje lógico funcional
    con restricciones realizado por la universidad
    de Melbourne y de la universidad de Monash.
  • Aditi Project Es un lenguaje lógico para
    las bases de datos realizado por la universidad
    de
  • Melbourne.

28
BIBLIOGRAFIA
  • http//www.mozart-oz.org/documentation/dstutorial
    (la pagina oficial de mozart-oz).
  • http//www.cs.mu.oz.au/research/mercury/applicatio
    ns.html (Universidad de Melbourne departamento de
    ciencias de la computación e ingeniería de
    software).
  • http//ltcs.uned.es8080/aepia/Uploads/27/275.pdf
    (Programación declarativa con restricciones por
    Antonio j. Fernández Universidad de Málaga).
  • http//es.wikipedia.org/wiki/Lenguaje_de_programac
    iC3B3n_Oz
  • http//en.wikipedia.org/wiki/Mercury_programming_l
    anguage .
Write a Comment
User Comments (0)
About PowerShow.com