1 lenguajes logico funcionales realizado por taha boureddan

28
1 LENGUAJES LOGICO LENGUAJES LOGICO FUNCIONALES FUNCIONALES REALIZADO POR REALIZADO POR Taha Boureddan Taha Boureddan

Upload: ana-belen-lucero-rio

Post on 02-Feb-2016

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

11

LENGUAJES LOGICO LENGUAJES LOGICO FUNCIONALESFUNCIONALES

REALIZADO PORREALIZADO POR

Taha BoureddanTaha Boureddan

Page 2: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

22

INDICEINDICEIntroducción a la programación lógico-funcionalIntroducción a la programación lógico-funcionalAlgunos lenguajes lógico-funcionalesAlgunos lenguajes lógico-funcionalesOzOz

- Historia- Historia - Multiparadigma- Multiparadigma - Programación con restricciones- Programación con restricciones - Jerarquía de tipos - Jerarquía de tipos - Ejemplos- Ejemplos - ventajas- ventajas

Mozart Mozart MercuryMercury

- Historia - Historia - Tipos - Tipos - Determinismo- Determinismo - Ejemplos- Ejemplos - Ventajas- Ventajas

BibliografíaBibliografía

Page 3: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

33

INTRODUCCION A LOS LENGUAJES INTRODUCCION A LOS LENGUAJES LOGICO-FUNCIONALESLOGICO-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.

Page 4: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

44

INTRODUCCION A LOS LENGUAJES INTRODUCCION A LOS LENGUAJES LOGICO-FUNCIONALESLOGICO-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.

Page 5: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

55

ALGUNOS LENGUAJES LOGICO ALGUNOS LENGUAJES LOGICO FUNCIONALESFUNCIONALES

OZOZ MOZART MOZART MERCURYMERCURY LIFELIFE TOYTOY

Page 6: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

66

OZ HistoriaOZ HistoriaOZ fue originalmente desarrollado en el laboratorio OZ fue originalmente desarrollado en el laboratorio

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

Page 7: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

77

OZ HistoriaOZ Historia

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

Page 8: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

88

OZ HistoriaOZ Historia

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

Page 9: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

99

OZ MultiparadigmaOZ MultiparadigmaOz contiene una forma simple y bien hecha de la Oz contiene una forma simple y bien hecha de la

mayoría de los conceptos de los principales mayoría de los conceptos de los principales paradigmas de programación que son: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

Page 10: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

1010

OZ :Programación con OZ :Programación con restriccionesrestricciones

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

Page 11: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

1111

OZ: JERARQUIA DE TIPOSOZ: JERARQUIA DE TIPOSEN 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

Page 12: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

1212

OZ :ConcurrenciaOZ :Concurrencia

La concurrencia en OZ es muy eficiente y La concurrencia en OZ es muy eficiente y económico económico

La programación con hebras no es tan La programación con hebras no es tan pesada .pesada .

Page 13: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

1313

EJEMPLO SIMPLE EN OZEJEMPLO SIMPLE EN OZ

El típico programa de El típico programa de “Hello World” en OZ “Hello World” en OZ seria así de simple seria así de simple

Se usa el editor de Se usa el editor de texto emacstexto emacs

Page 14: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

1414

OZ ejemplo de concurrenciaOZ ejemplo de concurrenciaTARDA 7.5 SEGUNDOS EN CREAR 100000 HEBRAS

death --threads 100000 --times 10

Page 15: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

1515

OZ: ejemplo de concurrenciaOZ: ejemplo de concurrencia El mismo programa en java tarda 2:30 min. pero con solo java Death 1000 10

Page 16: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

1616

OZ VentajasOZ Ventajas

Implementa un modelo de programación Implementa un modelo de programación distribuido que hace a la red transparente. distribuido que hace a la red transparente.

Hace fácil programar aplicaciones abiertas y Hace fácil programar aplicaciones abiertas y tolerantes a fallos en el lenguaje. tolerantes a fallos en el lenguaje.

Introduce la idea de espacios de computación, Introduce la idea de espacios de computación, los cuales permiten búsquedas definidas por el los cuales permiten búsquedas definidas por el usuario y estrategias de distribución que son usuario y estrategias de distribución que son ortogonales al dominio de restricciones. ortogonales al dominio de restricciones.

Page 17: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

1717

MOZARTMOZART

Es el resultado de 3 años de investigación Es el resultado de 3 años de investigación en la programación distribuida, y 10 años en la en la programación distribuida, y 10 años en la investigación en la programación concurrente .investigación en la programación concurrente .

fue desarrollado por:fue desarrollado por:DFKI (centro de investigación alemán para la DFKI (centro de investigación alemán para la

inteligencia artificial)inteligencia artificial)SICS (instituto sueco para las ciencias de SICS (instituto sueco para las ciencias de

computación)computación)UCL (universidad católica de Louvain)UCL (universidad católica de Louvain)

Page 18: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

1818

MOZARTMOZART

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

Page 19: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

1919

MERCURY :HistoriaMERCURY :Historia

Es un lenguaje lógico funcional que esta basado el la Es un lenguaje lógico funcional que esta basado el la programación declarativa pura.programación declarativa pura.

Es un lenguaje de propósito general que fue diseñado Es un lenguaje de propósito general que fue diseñado para resolver aplicaciones del “mundo real” de forma para resolver aplicaciones del “mundo real” de forma robusta.robusta.

Fue desarrollado por Fue desarrollado por Fergus HendersonFergus Henderson, , Thomas Thomas Conway y Zoltan SomogyiConway y Zoltan Somogyi en la universidad de en la universidad de Melbourne el 8 de abril de 1995 .Melbourne el 8 de abril de 1995 .

Su sintaxis es parecida a la de Prolog con algunas Su sintaxis es parecida a la de Prolog con algunas declaraciones adicionales de tipos, modos, declaraciones adicionales de tipos, modos,

determinismodeterminismo ... ... Soporta el polimorfismo .Soporta el polimorfismo .

Page 20: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

2020

MERCURY: TiposMERCURY: Tipos

Usa un sistema estático de chaqueo de tipos similar al Usa un sistema estático de chaqueo de tipos similar al de Haskell , pero también soporta tipificación dinámica de Haskell , pero también soporta tipificación dinámica ya que dispone del tipo universal (UNIV) esta definido en ya que dispone del tipo universal (UNIV) esta definido en la librería estándar en el modulo std_util, con la ayuda la librería estándar en el modulo std_util, con la ayuda de estos predicados 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.

Page 21: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

2121

MERCURY: DeterminismoMERCURY: Determinismo

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

Page 22: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

2222

MERCURY: EjemplosMERCURY: Ejemplos

Hello World:Hello World:

Cada

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

Page 23: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

2323

MERCURY :EjemplosMERCURY :Ejemplos

Los números Los números de fibonacci:de fibonacci:

Page 24: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

2424

MERCURY: EjemplosMERCURY: Ejemplos

DOG+ANT=CAT :DOG+ANT=CAT :

Aquí se ha usado el predicado

cc_multi porque con una solución

es suficiente

Page 25: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

2525

MERCURY: Ejemplos MERCURY: Ejemplos (DOG+ANT=CAT)(DOG+ANT=CAT)

$ mmc −−make cryptMaking Mercury/int3s/crypt.int3Making Mercury/cs/crypt.cMaking Mercury/os/crypt.oMaking crypt$ ./cryptDOG + ANT = CAT420 + 531 = 951Success!

Una vez compilado y ejecutado :

Page 26: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

2626

MERCURY: VentajasMERCURY: Ventajas

Es un lenguaje puro , comparado con Es un lenguaje puro , comparado con Prolog ,es mas declarativo puesto que Prolog ,es mas declarativo puesto que carece de declaraciones “extra-logicas" carece de declaraciones “extra-logicas" como “poda” y E/S imperativa .Permite como “poda” y E/S imperativa .Permite una optimizacion mejor del programa . una optimizacion mejor del programa . Gracias a estas optimizaciones debidas a Gracias a estas optimizaciones debidas a la pureza del programa , un programa la pureza del programa , un programa escrito en mercury es mas rapido que uno escrito en mercury es mas rapido que uno equivalente realizado en prolog.equivalente realizado en prolog.

Page 27: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

2727

MERCURY: ProyectosMERCURY: Proyectos

Algunos de los proyectos que usan Mercury:Algunos de los proyectos que usan Mercury:• HAL Project: es un lenguaje lógico HAL Project: es un lenguaje lógico

funcional con restricciones realizado por la funcional con restricciones realizado por la universidad de Melbourne y de la universidad de universidad de Melbourne y de la universidad de Monash.Monash.

• Aditi Project Aditi Project : Es un lenguaje lógico para las : Es un lenguaje lógico para las bases de datos realizado por la universidad de bases de datos realizado por la universidad de

Melbourne.Melbourne.

Page 28: 1 LENGUAJES LOGICO FUNCIONALES REALIZADO POR Taha Boureddan

2828

BIBLIOGRAFIABIBLIOGRAFIA

http://www.mozart-oz.org/documentation/dstutorial (la http://www.mozart-oz.org/documentation/dstutorial (la pagina oficial de mozart-oz).pagina oficial de mozart-oz).http://www.cs.mu.oz.au/research/mercury/http://www.cs.mu.oz.au/research/mercury/applications.html (Universidad de Melbourne applications.html (Universidad de Melbourne departamento de ciencias de la computación e departamento de ciencias de la computación e ingeniería de software).ingeniería de software).http://ltcs.uned.es:8080/aepia/Uploads/27/275.pdf http://ltcs.uned.es:8080/aepia/Uploads/27/275.pdf (Programación declarativa con restricciones por Antonio (Programación declarativa con restricciones por Antonio j. Fernández Universidad de Málaga).j. Fernández Universidad de Málaga).http://es.wikipedia.org/wiki/Lenguaje_de_programacihttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Oz %C3%B3n_Oz http://en.wikipedia.org/wiki/http://en.wikipedia.org/wiki/Mercury_programming_language .Mercury_programming_language .