Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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.
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
Es un sistema de tipificacin
dinmico
El tipo de datos Chunk permite
que los usuarios introduzcan
nuevos tipos de datos
abstractos.
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
15
OZ Ventajas
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:
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 :
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:
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