SlideShare una empresa de Scribd logo
1 de 28
11
LENGUAJES LOGICOLENGUAJES LOGICO
FUNCIONALESFUNCIONALES
REALIZADO PORREALIZADO POR
Taha BoureddanTaha Boureddan
2
INDICEINDICE
Introducción a la programación lógico-funcionalIntroducción a la programación lógico-funcional
Algunos lenguajes lógico-funcionalesAlgunos lenguajes lógico-funcionales
OzOz
- Historia- Historia
- Multiparadigma- Multiparadigma
- Programación con restricciones- Programación con restricciones
- Jerarquía de tipos- Jerarquía de tipos
- Ejemplos- Ejemplos
- ventajas- ventajas
MozartMozart
MercuryMercury
- Historia- Historia
- Tipos- Tipos
- Determinismo- Determinismo
- Ejemplos- Ejemplos
- Ventajas- Ventajas
BibliografíaBibliografía
3
INTRODUCCION A LOS LENGUAJESINTRODUCCION 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.
4
INTRODUCCION A LOS LENGUAJESINTRODUCCION 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.
5
ALGUNOS LENGUAJES LOGICOALGUNOS LENGUAJES LOGICO
FUNCIONALESFUNCIONALES
 OZOZ
 MOZARTMOZART
 MERCURYMERCURY
 LIFELIFE
 TOYTOY
6
OZ HistoriaOZ Historia
OZ fue originalmente desarrollado en elOZ fue originalmente desarrollado en el
laboratorio de Programación de Sistemas en lalaboratorio de Programación de Sistemas en la
Universidad de Saarland porUniversidad de Saarland por Gert SmolkaGert Smolka yy sussus
estudiantes a comienzos de 1990estudiantes a comienzos de 1990. En 1996 el. En 1996 el
desarrollo de Oz continuó en cooperación con eldesarrollo de Oz continuó en cooperación con el
grupo de investigación degrupo de investigación de Seif HaridiSeif Haridi en Institutoen Instituto
Sueco de Ciencias de la Computación. Desde 1999,Sueco de Ciencias de la Computación. Desde 1999,
Oz ha sido continuamente desarrollado por un grupoOz ha sido continuamente desarrollado por un grupo
internacional, el Consorcio Mozart, que estuvointernacional, el Consorcio Mozart, que estuvo
compuesto originalmente por la Universidad decompuesto originalmente por la Universidad de
Saarland, el Instituto Sueco de Ciencias de laSaarland, el Instituto Sueco de Ciencias de la
Computación, y la Universidad Católica de Louvain.Computación, y la Universidad Católica de Louvain.
En 2005, la responsabilidad de gestionar el desarrolloEn 2005, la responsabilidad de gestionar el desarrollo
de Mozart fue transferida aun grupo base, el Tablerode Mozart fue transferida aun grupo base, el Tablero
Mozart, con el propósito expreso de abrir elMozart, con el propósito expreso de abrir el
desarrollo de Mozart a una comunidad mayor.desarrollo de Mozart a una comunidad mayor.
7
OZ HistoriaOZ Historia
Oz tiene una implementación de granOz tiene una implementación de gran
calidad, el Sistema de Programacióncalidad, el Sistema de Programación
Mozart, el cual fue liberado con unaMozart, el cual fue liberado con una
licencia de Código Abierto por ellicencia de Código Abierto por el
Consorcio Mozart. Mozart ha sidoConsorcio Mozart. Mozart ha sido
portado a diferentes plataformasportado a diferentes plataformas
comocomo UnixUnix,, FreeBSDFreeBSD, Linux,, Linux,
Microsoft Windows, y Mac OS X.Microsoft Windows, y Mac OS X.
8
OZ HistoriaOZ Historia
Fue diseñado para hacer un avanceFue diseñado para hacer un avance
moderno para las aplicacionesmoderno para las aplicaciones
concurrentes , inteligentes , de redes ,concurrentes , inteligentes , de redes ,
tiempo real , paralelismo , interactivas ytiempo real , paralelismo , interactivas y
reactivas .y para resolver aplicacionesreactivas .y para resolver aplicaciones
complejas robusta y rápidamente.complejas robusta y rápidamente.
9
OZ MultiparadigmaOZ Multiparadigma
Oz contiene una forma simple y bien hecha de laOz contiene una forma simple y bien hecha de la
mayoría de los conceptos de los principalesmayorí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
10
OZ :Programación conOZ :Programación con
restriccionesrestricciones
Con respecto a la Programación con restricciones laCon respecto a la Programación con restricciones la
búsqueda es implementada de forma diferente a comobúsqueda es implementada de forma diferente a como
es había hecho en los lenguajes lógicos cones 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 primeroAdemás en vez de seguir el típico enfoque de primero
en profundidad y de izquierda a derecha , las estrategiasen profundidad y de izquierda a derecha , las estrategias
de búsqueda están codificadas en los llamadosde búsqueda están codificadas en los llamados
procedimientos de búsqueda con lo que se explora enprocedimientos de búsqueda con lo que se explora en
espacio de soluciones . Además el computo puede serespacio de soluciones . Además el computo puede ser
suspendido o retrasado con respecto a las elecciones asuspendido o retrasado con respecto a las elecciones a
realizar en el procedimiento de exploración , hasta querealizar en el procedimiento de exploración , hasta que
el programador especifique explícitamente unel programador especifique explícitamente un
procedimiento de búsqueda.procedimiento de búsqueda.
11
OZ: JERARQUIA DE TIPOSOZ: 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 :ConcurrenciaOZ :Concurrencia
La concurrencia en OZ es muy eficiente yLa concurrencia en OZ es muy eficiente y
económicoeconómico
La programación con hebras no es tanLa programación con hebras no es tan
pesada .pesada .
13
EJEMPLO SIMPLE EN OZEJEMPLO SIMPLE EN OZ
El típico programa deEl típico programa de
“Hello World” en OZ“Hello World” en OZ
seria así de simpleseria así de simple
Se usa el editor deSe usa el editor de
texto emacstexto emacs
14
OZ ejemplo de concurrenciaOZ ejemplo de concurrencia
TARDA 7.5 SEGUNDOS EN CREAR 100000 HEBRAS
death --threads 100000 --times 10
15
OZ: ejemplo de concurrenciaOZ: ejemplo de concurrencia
El mismo programa en java tarda 2:30 min. pero con solo java Death 1000 10
16
OZ VentajasOZ Ventajas
 Implementa un modelo de programaciónImplementa 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 yHace 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 ellos cuales permiten búsquedas definidas por el
usuario y estrategias de distribución que sonusuario y estrategias de distribución que son
ortogonales al dominio de restricciones.ortogonales al dominio de restricciones.
17
MOZARTMOZART
Es el resultado de 3 años de investigaciónEs el resultado de 3 años de investigación
en la programación distribuida, y 10 años en laen 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 laDFKI (centro de investigación alemán para la
inteligencia artificial)inteligencia artificial)
SICS (instituto sueco para las ciencias deSICS (instituto sueco para las ciencias de
computación)computación)
UCL (universidad católica de Louvain)UCL (universidad católica de Louvain)
18
MOZARTMOZART
MOZART en una implementación delMOZART en una implementación del
lenguaje OZ, por tanto soporta loslenguaje OZ, por tanto soporta los
paradigmas de OZ mencionados conparadigmas de OZ mencionados con
anterioridad y Es un potente lenguaje paraanterioridad y Es un potente lenguaje para
trabajo en red, computación distribuida ytrabajo en red, computación distribuida y
posee una licencia libre.posee una licencia libre.
19
MERCURY :HistoriaMERCURY :Historia
 Es un lenguaje lógico funcional que esta basado el laEs 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ñadoEs un lenguaje de propósito general que fue diseñado
para resolver aplicaciones del “mundo real” de formapara resolver aplicaciones del “mundo real” de forma
robusta.robusta.
 Fue desarrollado porFue desarrollado por Fergus HendersonFergus Henderson,, ThomasThomas
Conway y Zoltan SomogyiConway y Zoltan Somogyi en la universidad deen 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 algunasSu 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 .
20
MERCURY: TiposMERCURY: Tipos
 Usa un sistema estático de chaqueo de tipos similar alUsa un sistema estático de chaqueo de tipos similar al
de Haskell , pero también soporta tipificación dinámicade Haskell , pero también soporta tipificación dinámica
ya que dispone del tipo universal (UNIV) esta definido enya que dispone del tipo universal (UNIV) esta definido en
la librería estándar en el modulo std_util, con la ayudala librería estándar en el modulo std_util, con la ayuda
de estos predicadosde 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: DeterminismoMERCURY: Determinismo
El determinismo en Mercury esEl determinismo en Mercury es
mediante categorías usandomediante categorías usando
estos predicados:estos predicados:
22
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).
23
MERCURY :EjemplosMERCURY :Ejemplos
Los númerosLos números
de fibonacci:de fibonacci:
24
MERCURY: EjemplosMERCURY: Ejemplos
DOG+ANT=CAT :DOG+ANT=CAT :
Aquí se ha usado
el predicado
cc_multi porque
con una solución
es suficiente
25
MERCURY: EjemplosMERCURY: Ejemplos
(DOG+ANT=CAT)(DOG+ANT=CAT)
$ 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!
Una vez compilado y ejecutado :
26
MERCURY: VentajasMERCURY: Ventajas
Es un lenguaje puro , comparado conEs un lenguaje puro , comparado con
Prolog ,es mas declarativo puesto queProlog ,es mas declarativo puesto que
carece de declaraciones “extra-logicas"carece de declaraciones “extra-logicas"
como “poda” y E/S imperativa .Permitecomo “poda” y E/S imperativa .Permite
una optimizacion mejor del programa .una optimizacion mejor del programa .
Gracias a estas optimizaciones debidas aGracias a estas optimizaciones debidas a
la pureza del programa , un programala pureza del programa , un programa
escrito en mercury es mas rapido que unoescrito en mercury es mas rapido que uno
equivalente realizado en prolog.equivalente realizado en prolog.
27
MERCURY: ProyectosMERCURY: Proyectos
Algunos de los proyectos que usan Mercury:Algunos de los proyectos que usan Mercury:
• HAL Project: es un lenguaje lógico funcionalHAL Project: es un lenguaje lógico funcional
con restricciones realizado por la universidadcon restricciones realizado por la universidad
de Melbourne y de la universidad de Monash.de Melbourne y de la universidad de Monash.
• Aditi ProjectAditi Project : Es un lenguaje lógico para las: Es un lenguaje lógico para las
bases de datos realizado por la universidad debases de datos realizado por la universidad de
Melbourne.Melbourne.
28
BIBLIOGRAFIABIBLIOGRAFIA
http://www.mozart-oz.org/documentation/dstutorial (lahttp://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/applications.hthttp://www.cs.mu.oz.au/research/mercury/applications.ht
ml (Universidad de Melbourne departamento de cienciasml (Universidad de Melbourne departamento de ciencias
de la computación e ingeniería de software).de la computación e ingeniería de software).
http://ltcs.uned.es:8080/aepia/Uploads/27/275.pdfhttp://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/Mercury_programming_languhttp://en.wikipedia.org/wiki/Mercury_programming_langu
age .age .

Más contenido relacionado

La actualidad más candente

Lenguajes lógicos definicion y funcion
Lenguajes lógicos definicion y funcionLenguajes lógicos definicion y funcion
Lenguajes lógicos definicion y funcionIsrael Castillo Cruz
 
Tabla comparativa- metodologías de desarrollo
Tabla comparativa-  metodologías de desarrolloTabla comparativa-  metodologías de desarrollo
Tabla comparativa- metodologías de desarrolloitsarellano
 
diferencia entre Cliente servidor y p2 p
diferencia entre Cliente servidor y p2 pdiferencia entre Cliente servidor y p2 p
diferencia entre Cliente servidor y p2 pyeinier
 
Modelo componentes
Modelo componentesModelo componentes
Modelo componentesmartin
 
Paradigmas y dominios en java
Paradigmas y dominios en javaParadigmas y dominios en java
Paradigmas y dominios en javaJose Gallardo
 
Programación Orientada a Objetos (POO) y UML
Programación Orientada a Objetos (POO) y UMLProgramación Orientada a Objetos (POO) y UML
Programación Orientada a Objetos (POO) y UMLGabriel Cortez
 
Cuadro comparativo
Cuadro comparativo Cuadro comparativo
Cuadro comparativo Seba Briones
 
Clasificación de los sistemas operativos
Clasificación de los sistemas operativosClasificación de los sistemas operativos
Clasificación de los sistemas operativosSaul Quezada
 
Practicas prolog
Practicas prologPracticas prolog
Practicas prologmaxsp5566
 
Fundamentos de POO
Fundamentos de POOFundamentos de POO
Fundamentos de POOgueritamala
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativoedwin quiroa
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetosyoiner santiago
 
Android Studio - Ventajas y desventajas
Android Studio - Ventajas y desventajasAndroid Studio - Ventajas y desventajas
Android Studio - Ventajas y desventajasJorge Martín Espinosa
 

La actualidad más candente (20)

Caracteristicas rup
Caracteristicas rupCaracteristicas rup
Caracteristicas rup
 
Fases del rup
Fases del rupFases del rup
Fases del rup
 
problemas del software
problemas del softwareproblemas del software
problemas del software
 
Lenguajes lógicos definicion y funcion
Lenguajes lógicos definicion y funcionLenguajes lógicos definicion y funcion
Lenguajes lógicos definicion y funcion
 
Proceso unificado
Proceso unificadoProceso unificado
Proceso unificado
 
Tabla comparativa- metodologías de desarrollo
Tabla comparativa-  metodologías de desarrolloTabla comparativa-  metodologías de desarrollo
Tabla comparativa- metodologías de desarrollo
 
diferencia entre Cliente servidor y p2 p
diferencia entre Cliente servidor y p2 pdiferencia entre Cliente servidor y p2 p
diferencia entre Cliente servidor y p2 p
 
Modelo componentes
Modelo componentesModelo componentes
Modelo componentes
 
Paradigmas y dominios en java
Paradigmas y dominios en javaParadigmas y dominios en java
Paradigmas y dominios en java
 
Programación Orientada a Objetos (POO) y UML
Programación Orientada a Objetos (POO) y UMLProgramación Orientada a Objetos (POO) y UML
Programación Orientada a Objetos (POO) y UML
 
Cuadro comparativo
Cuadro comparativo Cuadro comparativo
Cuadro comparativo
 
Clasificación de los sistemas operativos
Clasificación de los sistemas operativosClasificación de los sistemas operativos
Clasificación de los sistemas operativos
 
Metodología WEB UWE
Metodología WEB UWEMetodología WEB UWE
Metodología WEB UWE
 
Tabla Comparativa
Tabla ComparativaTabla Comparativa
Tabla Comparativa
 
Practicas prolog
Practicas prologPracticas prolog
Practicas prolog
 
Fundamentos de POO
Fundamentos de POOFundamentos de POO
Fundamentos de POO
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativo
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetos
 
Herramientas CASE
Herramientas CASEHerramientas CASE
Herramientas CASE
 
Android Studio - Ventajas y desventajas
Android Studio - Ventajas y desventajasAndroid Studio - Ventajas y desventajas
Android Studio - Ventajas y desventajas
 

Similar a Lenguajeslogicofuncionales

Lenguajes programacion
Lenguajes programacionLenguajes programacion
Lenguajes programacionXavii Torres
 
Vocab Editor
Vocab EditorVocab Editor
Vocab Editorekrsulov
 
Programacion
ProgramacionProgramacion
Programaciontelmalj
 
METODOS DE ELEMENTOS DE PROGRAMACIÒN
METODOS DE ELEMENTOS DE PROGRAMACIÒNMETODOS DE ELEMENTOS DE PROGRAMACIÒN
METODOS DE ELEMENTOS DE PROGRAMACIÒNFreddy Cedeño
 
Clase 1- Fundamentos de programacion en Phyton.pptx
Clase 1- Fundamentos de programacion en Phyton.pptxClase 1- Fundamentos de programacion en Phyton.pptx
Clase 1- Fundamentos de programacion en Phyton.pptxVeronica Freire
 
Lenguajes de Programacion
Lenguajes de ProgramacionLenguajes de Programacion
Lenguajes de ProgramacionAdrianGalarza
 
Programacion
ProgramacionProgramacion
Programacionleonadan
 
Lenguajes de programacion orientada a objetos
Lenguajes de programacion orientada a objetosLenguajes de programacion orientada a objetos
Lenguajes de programacion orientada a objetosRicardoAlbertoSalmor
 
Proyecto herramientas para analisis del big-data.pdf
Proyecto herramientas para analisis del big-data.pdfProyecto herramientas para analisis del big-data.pdf
Proyecto herramientas para analisis del big-data.pdftechno48
 
Introduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosIntroduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosmilituchinita
 
Introduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a ObjetosIntroduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a Objetosliberaunlibroupeg
 
Introduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosIntroduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosYulyana López
 
Introduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosIntroduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosmilituchinita
 

Similar a Lenguajeslogicofuncionales (20)

Lenguajes programacion
Lenguajes programacionLenguajes programacion
Lenguajes programacion
 
Tarea 5. investigacion
Tarea 5. investigacionTarea 5. investigacion
Tarea 5. investigacion
 
Vocab Editor
Vocab EditorVocab Editor
Vocab Editor
 
Clase02 paradigmas
Clase02 paradigmasClase02 paradigmas
Clase02 paradigmas
 
Profesión: Programación
Profesión: ProgramaciónProfesión: Programación
Profesión: Programación
 
Programacion
ProgramacionProgramacion
Programacion
 
METODOS DE ELEMENTOS DE PROGRAMACIÒN
METODOS DE ELEMENTOS DE PROGRAMACIÒNMETODOS DE ELEMENTOS DE PROGRAMACIÒN
METODOS DE ELEMENTOS DE PROGRAMACIÒN
 
Programacion
ProgramacionProgramacion
Programacion
 
Clase 1- Fundamentos de programacion en Phyton.pptx
Clase 1- Fundamentos de programacion en Phyton.pptxClase 1- Fundamentos de programacion en Phyton.pptx
Clase 1- Fundamentos de programacion en Phyton.pptx
 
Lenguajes de Programacion
Lenguajes de ProgramacionLenguajes de Programacion
Lenguajes de Programacion
 
Programacion
ProgramacionProgramacion
Programacion
 
Algoritmos+sam+deyson
Algoritmos+sam+deysonAlgoritmos+sam+deyson
Algoritmos+sam+deyson
 
C, Java y Phyton.pdf
C, Java y Phyton.pdfC, Java y Phyton.pdf
C, Java y Phyton.pdf
 
Lenguajes de programacion orientada a objetos
Lenguajes de programacion orientada a objetosLenguajes de programacion orientada a objetos
Lenguajes de programacion orientada a objetos
 
Proyecto herramientas para analisis del big-data.pdf
Proyecto herramientas para analisis del big-data.pdfProyecto herramientas para analisis del big-data.pdf
Proyecto herramientas para analisis del big-data.pdf
 
Introduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosIntroduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetos
 
Introduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a ObjetosIntroduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a Objetos
 
Introduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosIntroduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetos
 
Introduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosIntroduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetos
 
Cap1 intro
Cap1 introCap1 intro
Cap1 intro
 

Último

PAI Hemofilia hereditaria en los servicios de salud
PAI Hemofilia hereditaria en los servicios de saludPAI Hemofilia hereditaria en los servicios de salud
PAI Hemofilia hereditaria en los servicios de saludLupisPerez1
 
SISTEMA DE CLORACIÓN - PARA SISTEMA DE AGUA POTABLE VIVIENDA.pptx
SISTEMA DE CLORACIÓN - PARA SISTEMA DE AGUA POTABLE VIVIENDA.pptxSISTEMA DE CLORACIÓN - PARA SISTEMA DE AGUA POTABLE VIVIENDA.pptx
SISTEMA DE CLORACIÓN - PARA SISTEMA DE AGUA POTABLE VIVIENDA.pptxGenaroElmerSifuentes6
 
PROYECTO 3 4 5 AÑOS del nivel inicial
PROYECTO    3 4 5 AÑOS del nivel inicialPROYECTO    3 4 5 AÑOS del nivel inicial
PROYECTO 3 4 5 AÑOS del nivel inicialArtemisaReateguiCaro
 
IMPORTANCIA D ELAS VACUNAS EN LA POBLACION
IMPORTANCIA D ELAS VACUNAS EN LA POBLACIONIMPORTANCIA D ELAS VACUNAS EN LA POBLACION
IMPORTANCIA D ELAS VACUNAS EN LA POBLACIONDanielaSantos100046
 
Indicaciones y contraindicaciones de la sonda vesical y sonda nasogastrica.pptx
Indicaciones y contraindicaciones de la sonda vesical y sonda nasogastrica.pptxIndicaciones y contraindicaciones de la sonda vesical y sonda nasogastrica.pptx
Indicaciones y contraindicaciones de la sonda vesical y sonda nasogastrica.pptx Estefa RM9
 
CAPACITACIÓN VIGIA EN SEGURIDAD Y SALUD EN EL TRABAJO.ppt
CAPACITACIÓN VIGIA EN SEGURIDAD Y SALUD EN EL TRABAJO.pptCAPACITACIÓN VIGIA EN SEGURIDAD Y SALUD EN EL TRABAJO.ppt
CAPACITACIÓN VIGIA EN SEGURIDAD Y SALUD EN EL TRABAJO.pptSandraCardenas92
 
PARASITOSIS INTESTINAL en Pediatría, Enfermería y Familiar II
PARASITOSIS INTESTINAL en Pediatría, Enfermería y Familiar IIPARASITOSIS INTESTINAL en Pediatría, Enfermería y Familiar II
PARASITOSIS INTESTINAL en Pediatría, Enfermería y Familiar IIgeraldinagutierrez81
 
Sesión - Vacunación del Adulto (Revisión tema).pdf
Sesión - Vacunación del Adulto (Revisión tema).pdfSesión - Vacunación del Adulto (Revisión tema).pdf
Sesión - Vacunación del Adulto (Revisión tema).pdfLas Sesiones de San Blas
 
IVU-PIELO-SEPSIS listo.pptxLos problemas de salud más comunes en los bebés in...
IVU-PIELO-SEPSIS listo.pptxLos problemas de salud más comunes en los bebés in...IVU-PIELO-SEPSIS listo.pptxLos problemas de salud más comunes en los bebés in...
IVU-PIELO-SEPSIS listo.pptxLos problemas de salud más comunes en los bebés in...MarcoFlores940553
 

Último (9)

PAI Hemofilia hereditaria en los servicios de salud
PAI Hemofilia hereditaria en los servicios de saludPAI Hemofilia hereditaria en los servicios de salud
PAI Hemofilia hereditaria en los servicios de salud
 
SISTEMA DE CLORACIÓN - PARA SISTEMA DE AGUA POTABLE VIVIENDA.pptx
SISTEMA DE CLORACIÓN - PARA SISTEMA DE AGUA POTABLE VIVIENDA.pptxSISTEMA DE CLORACIÓN - PARA SISTEMA DE AGUA POTABLE VIVIENDA.pptx
SISTEMA DE CLORACIÓN - PARA SISTEMA DE AGUA POTABLE VIVIENDA.pptx
 
PROYECTO 3 4 5 AÑOS del nivel inicial
PROYECTO    3 4 5 AÑOS del nivel inicialPROYECTO    3 4 5 AÑOS del nivel inicial
PROYECTO 3 4 5 AÑOS del nivel inicial
 
IMPORTANCIA D ELAS VACUNAS EN LA POBLACION
IMPORTANCIA D ELAS VACUNAS EN LA POBLACIONIMPORTANCIA D ELAS VACUNAS EN LA POBLACION
IMPORTANCIA D ELAS VACUNAS EN LA POBLACION
 
Indicaciones y contraindicaciones de la sonda vesical y sonda nasogastrica.pptx
Indicaciones y contraindicaciones de la sonda vesical y sonda nasogastrica.pptxIndicaciones y contraindicaciones de la sonda vesical y sonda nasogastrica.pptx
Indicaciones y contraindicaciones de la sonda vesical y sonda nasogastrica.pptx
 
CAPACITACIÓN VIGIA EN SEGURIDAD Y SALUD EN EL TRABAJO.ppt
CAPACITACIÓN VIGIA EN SEGURIDAD Y SALUD EN EL TRABAJO.pptCAPACITACIÓN VIGIA EN SEGURIDAD Y SALUD EN EL TRABAJO.ppt
CAPACITACIÓN VIGIA EN SEGURIDAD Y SALUD EN EL TRABAJO.ppt
 
PARASITOSIS INTESTINAL en Pediatría, Enfermería y Familiar II
PARASITOSIS INTESTINAL en Pediatría, Enfermería y Familiar IIPARASITOSIS INTESTINAL en Pediatría, Enfermería y Familiar II
PARASITOSIS INTESTINAL en Pediatría, Enfermería y Familiar II
 
Sesión - Vacunación del Adulto (Revisión tema).pdf
Sesión - Vacunación del Adulto (Revisión tema).pdfSesión - Vacunación del Adulto (Revisión tema).pdf
Sesión - Vacunación del Adulto (Revisión tema).pdf
 
IVU-PIELO-SEPSIS listo.pptxLos problemas de salud más comunes en los bebés in...
IVU-PIELO-SEPSIS listo.pptxLos problemas de salud más comunes en los bebés in...IVU-PIELO-SEPSIS listo.pptxLos problemas de salud más comunes en los bebés in...
IVU-PIELO-SEPSIS listo.pptxLos problemas de salud más comunes en los bebés in...
 

Lenguajeslogicofuncionales

  • 1. 11 LENGUAJES LOGICOLENGUAJES LOGICO FUNCIONALESFUNCIONALES REALIZADO PORREALIZADO POR Taha BoureddanTaha Boureddan
  • 2. 2 INDICEINDICE Introducción a la programación lógico-funcionalIntroducción a la programación lógico-funcional Algunos lenguajes lógico-funcionalesAlgunos lenguajes lógico-funcionales OzOz - Historia- Historia - Multiparadigma- Multiparadigma - Programación con restricciones- Programación con restricciones - Jerarquía de tipos- Jerarquía de tipos - Ejemplos- Ejemplos - ventajas- ventajas MozartMozart MercuryMercury - Historia- Historia - Tipos- Tipos - Determinismo- Determinismo - Ejemplos- Ejemplos - Ventajas- Ventajas BibliografíaBibliografía
  • 3. 3 INTRODUCCION A LOS LENGUAJESINTRODUCCION 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.
  • 4. 4 INTRODUCCION A LOS LENGUAJESINTRODUCCION 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.
  • 5. 5 ALGUNOS LENGUAJES LOGICOALGUNOS LENGUAJES LOGICO FUNCIONALESFUNCIONALES  OZOZ  MOZARTMOZART  MERCURYMERCURY  LIFELIFE  TOYTOY
  • 6. 6 OZ HistoriaOZ Historia OZ fue originalmente desarrollado en elOZ fue originalmente desarrollado en el laboratorio de Programación de Sistemas en lalaboratorio de Programación de Sistemas en la Universidad de Saarland porUniversidad de Saarland por Gert SmolkaGert Smolka yy sussus estudiantes a comienzos de 1990estudiantes a comienzos de 1990. En 1996 el. En 1996 el desarrollo de Oz continuó en cooperación con eldesarrollo de Oz continuó en cooperación con el grupo de investigación degrupo de investigación de Seif HaridiSeif Haridi en Institutoen Instituto Sueco de Ciencias de la Computación. Desde 1999,Sueco de Ciencias de la Computación. Desde 1999, Oz ha sido continuamente desarrollado por un grupoOz ha sido continuamente desarrollado por un grupo internacional, el Consorcio Mozart, que estuvointernacional, el Consorcio Mozart, que estuvo compuesto originalmente por la Universidad decompuesto originalmente por la Universidad de Saarland, el Instituto Sueco de Ciencias de laSaarland, el Instituto Sueco de Ciencias de la Computación, y la Universidad Católica de Louvain.Computación, y la Universidad Católica de Louvain. En 2005, la responsabilidad de gestionar el desarrolloEn 2005, la responsabilidad de gestionar el desarrollo de Mozart fue transferida aun grupo base, el Tablerode Mozart fue transferida aun grupo base, el Tablero Mozart, con el propósito expreso de abrir elMozart, con el propósito expreso de abrir el desarrollo de Mozart a una comunidad mayor.desarrollo de Mozart a una comunidad mayor.
  • 7. 7 OZ HistoriaOZ Historia Oz tiene una implementación de granOz tiene una implementación de gran calidad, el Sistema de Programacióncalidad, el Sistema de Programación Mozart, el cual fue liberado con unaMozart, el cual fue liberado con una licencia de Código Abierto por ellicencia de Código Abierto por el Consorcio Mozart. Mozart ha sidoConsorcio Mozart. Mozart ha sido portado a diferentes plataformasportado a diferentes plataformas comocomo UnixUnix,, FreeBSDFreeBSD, Linux,, Linux, Microsoft Windows, y Mac OS X.Microsoft Windows, y Mac OS X.
  • 8. 8 OZ HistoriaOZ Historia Fue diseñado para hacer un avanceFue diseñado para hacer un avance moderno para las aplicacionesmoderno para las aplicaciones concurrentes , inteligentes , de redes ,concurrentes , inteligentes , de redes , tiempo real , paralelismo , interactivas ytiempo real , paralelismo , interactivas y reactivas .y para resolver aplicacionesreactivas .y para resolver aplicaciones complejas robusta y rápidamente.complejas robusta y rápidamente.
  • 9. 9 OZ MultiparadigmaOZ Multiparadigma Oz contiene una forma simple y bien hecha de laOz contiene una forma simple y bien hecha de la mayoría de los conceptos de los principalesmayorí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
  • 10. 10 OZ :Programación conOZ :Programación con restriccionesrestricciones Con respecto a la Programación con restricciones laCon respecto a la Programación con restricciones la búsqueda es implementada de forma diferente a comobúsqueda es implementada de forma diferente a como es había hecho en los lenguajes lógicos cones 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 primeroAdemás en vez de seguir el típico enfoque de primero en profundidad y de izquierda a derecha , las estrategiasen profundidad y de izquierda a derecha , las estrategias de búsqueda están codificadas en los llamadosde búsqueda están codificadas en los llamados procedimientos de búsqueda con lo que se explora enprocedimientos de búsqueda con lo que se explora en espacio de soluciones . Además el computo puede serespacio de soluciones . Además el computo puede ser suspendido o retrasado con respecto a las elecciones asuspendido o retrasado con respecto a las elecciones a realizar en el procedimiento de exploración , hasta querealizar en el procedimiento de exploración , hasta que el programador especifique explícitamente unel programador especifique explícitamente un procedimiento de búsqueda.procedimiento de búsqueda.
  • 11. 11 OZ: JERARQUIA DE TIPOSOZ: 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. 12 OZ :ConcurrenciaOZ :Concurrencia La concurrencia en OZ es muy eficiente yLa concurrencia en OZ es muy eficiente y económicoeconómico La programación con hebras no es tanLa programación con hebras no es tan pesada .pesada .
  • 13. 13 EJEMPLO SIMPLE EN OZEJEMPLO SIMPLE EN OZ El típico programa deEl típico programa de “Hello World” en OZ“Hello World” en OZ seria así de simpleseria así de simple Se usa el editor deSe usa el editor de texto emacstexto emacs
  • 14. 14 OZ ejemplo de concurrenciaOZ ejemplo de concurrencia TARDA 7.5 SEGUNDOS EN CREAR 100000 HEBRAS death --threads 100000 --times 10
  • 15. 15 OZ: ejemplo de concurrenciaOZ: ejemplo de concurrencia El mismo programa en java tarda 2:30 min. pero con solo java Death 1000 10
  • 16. 16 OZ VentajasOZ Ventajas  Implementa un modelo de programaciónImplementa 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 yHace 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 ellos cuales permiten búsquedas definidas por el usuario y estrategias de distribución que sonusuario y estrategias de distribución que son ortogonales al dominio de restricciones.ortogonales al dominio de restricciones.
  • 17. 17 MOZARTMOZART Es el resultado de 3 años de investigaciónEs el resultado de 3 años de investigación en la programación distribuida, y 10 años en laen 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 laDFKI (centro de investigación alemán para la inteligencia artificial)inteligencia artificial) SICS (instituto sueco para las ciencias deSICS (instituto sueco para las ciencias de computación)computación) UCL (universidad católica de Louvain)UCL (universidad católica de Louvain)
  • 18. 18 MOZARTMOZART MOZART en una implementación delMOZART en una implementación del lenguaje OZ, por tanto soporta loslenguaje OZ, por tanto soporta los paradigmas de OZ mencionados conparadigmas de OZ mencionados con anterioridad y Es un potente lenguaje paraanterioridad y Es un potente lenguaje para trabajo en red, computación distribuida ytrabajo en red, computación distribuida y posee una licencia libre.posee una licencia libre.
  • 19. 19 MERCURY :HistoriaMERCURY :Historia  Es un lenguaje lógico funcional que esta basado el laEs 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ñadoEs un lenguaje de propósito general que fue diseñado para resolver aplicaciones del “mundo real” de formapara resolver aplicaciones del “mundo real” de forma robusta.robusta.  Fue desarrollado porFue desarrollado por Fergus HendersonFergus Henderson,, ThomasThomas Conway y Zoltan SomogyiConway y Zoltan Somogyi en la universidad deen 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 algunasSu 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 .
  • 20. 20 MERCURY: TiposMERCURY: Tipos  Usa un sistema estático de chaqueo de tipos similar alUsa un sistema estático de chaqueo de tipos similar al de Haskell , pero también soporta tipificación dinámicade Haskell , pero también soporta tipificación dinámica ya que dispone del tipo universal (UNIV) esta definido enya que dispone del tipo universal (UNIV) esta definido en la librería estándar en el modulo std_util, con la ayudala librería estándar en el modulo std_util, con la ayuda de estos predicadosde 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. 21 MERCURY: DeterminismoMERCURY: Determinismo El determinismo en Mercury esEl determinismo en Mercury es mediante categorías usandomediante categorías usando estos predicados:estos predicados:
  • 22. 22 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).
  • 23. 23 MERCURY :EjemplosMERCURY :Ejemplos Los númerosLos números de fibonacci:de fibonacci:
  • 24. 24 MERCURY: EjemplosMERCURY: Ejemplos DOG+ANT=CAT :DOG+ANT=CAT : Aquí se ha usado el predicado cc_multi porque con una solución es suficiente
  • 25. 25 MERCURY: EjemplosMERCURY: Ejemplos (DOG+ANT=CAT)(DOG+ANT=CAT) $ 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! Una vez compilado y ejecutado :
  • 26. 26 MERCURY: VentajasMERCURY: Ventajas Es un lenguaje puro , comparado conEs un lenguaje puro , comparado con Prolog ,es mas declarativo puesto queProlog ,es mas declarativo puesto que carece de declaraciones “extra-logicas"carece de declaraciones “extra-logicas" como “poda” y E/S imperativa .Permitecomo “poda” y E/S imperativa .Permite una optimizacion mejor del programa .una optimizacion mejor del programa . Gracias a estas optimizaciones debidas aGracias a estas optimizaciones debidas a la pureza del programa , un programala pureza del programa , un programa escrito en mercury es mas rapido que unoescrito en mercury es mas rapido que uno equivalente realizado en prolog.equivalente realizado en prolog.
  • 27. 27 MERCURY: ProyectosMERCURY: Proyectos Algunos de los proyectos que usan Mercury:Algunos de los proyectos que usan Mercury: • HAL Project: es un lenguaje lógico funcionalHAL Project: es un lenguaje lógico funcional con restricciones realizado por la universidadcon restricciones realizado por la universidad de Melbourne y de la universidad de Monash.de Melbourne y de la universidad de Monash. • Aditi ProjectAditi Project : Es un lenguaje lógico para las: Es un lenguaje lógico para las bases de datos realizado por la universidad debases de datos realizado por la universidad de Melbourne.Melbourne.
  • 28. 28 BIBLIOGRAFIABIBLIOGRAFIA http://www.mozart-oz.org/documentation/dstutorial (lahttp://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/applications.hthttp://www.cs.mu.oz.au/research/mercury/applications.ht ml (Universidad de Melbourne departamento de cienciasml (Universidad de Melbourne departamento de ciencias de la computación e ingeniería de software).de la computación e ingeniería de software). http://ltcs.uned.es:8080/aepia/Uploads/27/275.pdfhttp://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/Mercury_programming_languhttp://en.wikipedia.org/wiki/Mercury_programming_langu age .age .