1 / 28

LENGUAJES LOGICO FUNCIONALES

LENGUAJES LOGICO FUNCIONALES. REALIZADO POR Taha Boureddan. 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

muireann
Download Presentation

LENGUAJES LOGICO FUNCIONALES

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. 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ácterısticas 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ácterısticas 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 2:30 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. Aquí se ha usado el predicado cc_multi porque con una solución es suficiente MERCURY: Ejemplos • DOG+ANT=CAT :

  25. MERCURY: Ejemplos (DOG+ANT=CAT) 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/applications.html (Universidad de Melbourne departamento de ciencias de la computación e ingeniería de software). • http://ltcs.uned.es:8080/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_programaci%C3%B3n_Oz • http://en.wikipedia.org/wiki/Mercury_programming_language .

More Related