lenguajes logico funcionales l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
LENGUAJES LOGICO FUNCIONALES PowerPoint Presentation
Download Presentation
LENGUAJES LOGICO FUNCIONALES

Loading in 2 Seconds...

play fullscreen
1 / 28

LENGUAJES LOGICO FUNCIONALES - PowerPoint PPT Presentation


  • 321 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'LENGUAJES LOGICO FUNCIONALES' - muireann


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
lenguajes logico funcionales

LENGUAJES LOGICO FUNCIONALES

REALIZADO POR

Taha Boureddan

indice
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
introduccion a los lenguajes logico funcionales
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.

introduccion a los lenguajes logico funcionales4
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.

oz historia
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.
oz historia7
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.
oz historia8
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.

oz multiparadigma
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

oz programaci n con restricciones
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.

oz jerarquia de tipos
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

oz concurrencia
OZ :Concurrencia
  • La concurrencia en OZ es muy eficiente y económico
  • La programación con hebras no es tan pesada .
ejemplo simple en oz
EJEMPLO SIMPLE EN OZ
  • El típico programa de “Hello World” en OZ seria así de simple
  • Se usa el editor de texto emacs
oz ejemplo de concurrencia
OZ ejemplo de concurrencia

TARDA 7.5 SEGUNDOS EN CREAR 100000 HEBRAS

death --threads 100000 --times 10

oz ejemplo de concurrencia15
OZ: ejemplo de concurrencia

El mismo programa en java tarda 2:30 min. pero con solo java Death 1000 10

oz ventajas
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.
mozart
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)
mozart18
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.

mercury historia
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 .
mercury tipos
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.
mercury determinismo
MERCURY: Determinismo

El determinismo en Mercury es mediante categorías usando estos predicados:

mercury ejemplos
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

mercury ejemplos23
MERCURY :Ejemplos
  • Los números de fibonacci:
mercury ejemplos dog ant cat
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!

mercury ventajas
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.
mercury proyectos
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.

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