Sei sulla pagina 1di 28

LENGUAJES LOGICO

FUNCIONALES

REALIZADO POR
Taha Boureddan
1

INDICE
Introduccin a la programacin lgico-funcional
Algunos lenguajes lgico-funcionales
Oz
- Historia
- Multiparadigma
- Programacin con restricciones
- Jerarqua de tipos
- Ejemplos
- ventajas
Mozart
Mercury
- Historia
- Tipos
- Determinismo
- Ejemplos
- Ventajas
Bibliografa

INTRODUCCION A LOS LENGUAJES


LOGICO-FUNCIONALES
Los lenguajes de programacin lgico funcionales integran algunas
de las mejores carctersticas 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 abstraccin sofisticadas.
- Sistemas de mdulos.
- Soluciones puras para la integracin de facilidades de I/O en la
programacin declarativa.
- Adems de tcnicas y estrategias eficientes para la ejecucin de los
programas.

INTRODUCCION A LOS LENGUAJES


LOGICO-FUNCIONALES
Los lenguajes lgicos permiten :
- La computacin con informacin parcial .
- Estn provistos de facilidades de bsqueda 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 lgico funcionales modernos
ofrecen carctersticas de ambos estilos. La semntica
operacional de los lenguajes integrados esta usualmentebasada
en narrowing, una combinacin de la unificacin y reduccin
como mecanismo de evaluacin que subsume a la reescritura y
a a SLD-resolucin.

ALGUNOS LENGUAJES LOGICO


FUNCIONALES

OZ
MOZART
MERCURY
LIFE
TOY

OZ Historia
OZ fue originalmente desarrollado en el
laboratorio de Programacin 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 cooperacin con el
grupo de investigacin de Seif Haridi en Instituto
Sueco de Ciencias de la Computacin. 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
Computacin, y la Universidad Catlica de Louvain.
En 2005, la responsabilidad de gestionar el desarrollo
de Mozart fue transferida aun grupo base, el Tablero
Mozart, con el propsito expreso de abrir el
desarrollo de Mozart a una comunidad mayor.
6

OZ Historia
Oz tiene una implementacin de gran
calidad, el Sistema de Programacin
Mozart, el cual fue liberado con una
licencia de Cdigo Abierto por el
Consorcio Mozart. Mozart ha sido
portado a diferentes plataformas
como Unix, FreeBSD, Linux,
Microsoft Windows, y Mac OS X.
7

OZ Historia
Fue diseado 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 rpidamente.

OZ Multiparadigma
Oz contiene una forma simple y bien hecha de la
mayora de los conceptos de los principales
paradigmas de programacin que son:
Programacin lgica
Programacin funcional
Programacin imperativa
Programacin orientada a objetos
Programacin concurrente
Programacin distribuida
Programacin con restricciones

OZ :Programacin con
restricciones
Con respecto a la Programacin con restricciones la
bsqueda es implementada de forma diferente a como
es haba hecho en los lenguajes lgicos con
restricciones , puesto que la bsqueda es programable .
Adems en vez de seguir el tpico enfoque de primero
en profundidad y de izquierda a derecha , las estrategias
de bsqueda estn codificadas en los llamados
procedimientos de bsqueda con lo que se explora en
espacio de soluciones . Adems el computo puede ser
suspendido o retrasado con respecto a las elecciones a
realizar en el procedimiento de exploracin , hasta que
el programador especifique explcitamente un
procedimiento de bsqueda.
10

OZ: JERARQUIA DE TIPOS


EN OZ

Es un sistema de tipificacin
dinmico
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 programacin
con restricciones
11

OZ :Concurrencia
La concurrencia en OZ es muy eficiente y
econmico
La programacin con hebras no es tan
pesada .

12

EJEMPLO SIMPLE EN OZ
El tpico programa de
Hello World en OZ
seria as de simple
Se usa el editor de
texto emacs

13

OZ ejemplo de concurrencia
TARDA 7.5 SEGUNDOS EN CREAR 100000 HEBRAS

death --threads 100000 --times 10


14

OZ: ejemplo de concurrencia


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

15

OZ Ventajas

Implementa un modelo de programacin


distribuido que hace a la red transparente.
Hace fcil programar aplicaciones abiertas y
tolerantes a fallos en el lenguaje.
Introduce la idea de espacios de computacin,
los cuales permiten bsquedas definidas por el
usuario y estrategias de distribucin que son
ortogonales al dominio de restricciones.

16

MOZART
Es el resultado de 3 aos de investigacin
en la programacin distribuida, y 10 aos en la
investigacin en la programacin concurrente .
fue desarrollado por:
DFKI (centro de investigacin alemn para la
inteligencia artificial)
SICS (instituto sueco para las ciencias de
computacin)
UCL (universidad catlica de Louvain)
17

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

18

MERCURY :Historia
Es un lenguaje lgico funcional que esta basado el la
programacin declarativa pura.
Es un lenguaje de propsito general que fue diseado
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 .
19

MERCURY: Tipos
Usa un sistema esttico de chaqueo de tipos similar al
de Haskell , pero tambin soporta tipificacin dinmica
ya que dispone del tipo universal (UNIV) esta definido en
la librera estndar 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 heterogneas.

20

MERCURY: Determinismo
El determinismo en Mercury es
mediante categoras usando
estos predicados:

21

MERCURY: Ejemplos
Hello World:

Todos los programas


Mercury necesitan del
Cada
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).

22

MERCURY :Ejemplos
Los nmeros
de fibonacci:

23

MERCURY: Ejemplos
DOG+ANT=CAT :

Aqu se ha usado
el predicado
cc_multi porque
con una solucin
es suficiente

24

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!

25

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

MERCURY: Proyectos
Algunos de los proyectos que usan Mercury:

HAL Project: es un lenguaje lgico funcional


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

Aditi Project : Es un lenguaje lgico para las


bases de datos realizado por la universidad de
Melbourne.

27

BIBLIOGRAFIA
http://www.mozart-oz.org/documentation/dstutorial (la
pagina oficial de mozart-oz).
http://www.cs.mu.oz.au/research/mercury/applications.ht
ml (Universidad de Melbourne departamento de ciencias
de la computacin e ingeniera de software).
http://ltcs.uned.es:8080/aepia/Uploads/27/275.pdf
(Programacin declarativa con restricciones por Antonio
j. Fernndez Universidad de Mlaga).
http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C
3%B3n_Oz
http://en.wikipedia.org/wiki/Mercury_programming_langu
age .
28

Potrebbero piacerti anche