Materia: Administracin de Base de Datos Docente: Ing. Mara Guadalupe Njera Lozano Nombre(s): Enrique Mendoza Hernndez Semestre: 8 No. de Control:10430016 Pgina 1
Nombre de la actividad: Lenguajes de Programacin Funcional Fecha de Entrega: 06/05/14 La programacin lgica es un intento de definir un estilo de programacin alternativo al estilo convencional de von Neumann. En l, el programador describe indirectamente un proceso, definiendo un conjunto de asertos o condiciones, las cuales deben ser satisfechas en orden a que el proceso complete su tarea. El propio algoritmo resultante no est completamente bajo el control del programador, sino que el programador debe conocer el mecanismo de control subyacente para especificar un conjunto correcto de asertos. La programacin lgica es, por su naturaleza poco corriente, difcil de asimilar por las personas que se han formado en el estilo de von Neumann. El lenguaje Prolog (programming in logic) representa un estilo relativamente nuevo de programacin. Diseado principalmente para las aplicaciones de inteligencia artificial, el estilo del Prolog se basa en la nocin de definir objetos y relaciones de inferencia entre clases de objetos. Tiene unos fuertes fundamentos tericos en el clculo de proposiciones. La programacin lgica es aquel tipo de programacin que permite al software razonar, esto es, hacer razonamientos, por ejemplo, de tipo deductivo o inductivo. Dada una base de datos consistente en un conjunto de entidades, propiedades de esas entidades y relaciones de unas entidades con otras, el sistema es capaz de hacer razonamientos. Bsicamente, este proceso se expresa de la siguiente forma:
Instituto Tecnolgico de Piedras Negras Ingeniera en Sistemas Computacionales
Materia: Administracin de Base de Datos Docente: Ing. Mara Guadalupe Njera Lozano Nombre(s): Enrique Mendoza Hernndez Semestre: 8 No. de Control:10430016 Pgina 2
Donde entendemos que hechos es el conjunto de datos que conoce el sistema a priori(o que va adquiriendo a lo largo de su ejecucin) y reglas son un conjunto de operaciones que se pueden aplicar a dichos datos para sacar un resultado lgico. ALF (Another logical framework) Este lenguaje combina la programacin lgica con la programacin funcional (funcional basado en la evaluacin de expresiones y funciones matemticas ms que en la utilizacin de comandos como <alloc>, <malloc>). Al igual que Prolog, ALF est basado en clusulas de Horn (por eso es programacin lgica) pero tambin en funciones y ecuaciones (y por esto es tambin La base del procesamiento de ALF es resolution-narrowing-rewriting- rejection. ALF usa reglas de resolucin para evaluar los literales y reglas de estrechamiento( narrowing) para evaluar las expresiones funcionales. Esto lo hace buscando en un rbol, que es una representacin del lenguaje. Como el proceso de narrowing puede ser largo, se usan tcnicas de leftmost- innermost basic narrowing, que son ms eficientes (el final de la expresin que se evala primero siempre es un cierre de parntesis, el primer cierre y despus de evaluar esta expresin, se sustituye todo l por el resultado al que se ha llegado, y se sigue procesando el siguiente parntesis). Adems, las expresiones sufren un proceso de reescritura (rewriting) antes de ser procesadas por las reglas de narrowing y las ecuaciones cuyos dos lados de la igualdad no tengan el mismo nodo como origen son rechazadas (rejected). Estos dos pasos previos, hacen que la bsqueda sea mucho ms eficiente. Instituto Tecnolgico de Piedras Negras Ingeniera en Sistemas Computacionales
Materia: Administracin de Base de Datos Docente: Ing. Mara Guadalupe Njera Lozano Nombre(s): Enrique Mendoza Hernndez Semestre: 8 No. de Control:10430016 Pgina 3
Adems ALF usabacktracking con bsqueda en profundidad en el rbol de derivaciones. Ejemplo de narrowing: Se definen las reglas: s(M)+N=s(M+N)) ; 0+N=N ; Tenemos la expresin: X + s(0) = s(s(0)) Primer paso de narrowing: Si X=s(Y) S(Y+s(0)) = s(s(0)) Segundo paso de narrowing: (unificacin) Y+s(0) = s(0) Y=0 Solucin: X=s(0)
Gdel programming language Gdel es un lenguaje en el que las sentencias lgicas llevan un orden y en el que existe el polimorfismo. Est basado en mdulos (que aceptan polimorfismo) y en tipos de datos (soporta enteros y racionales con una precisin infinita, y nmero en coma flotante) y tiene una amplia librera de mdulos predefinidos. Es un buen lenguaje para tareas de meta-programacin, tales como compilacin, depuracin, anlisis, verificacin o transformacin de programas, ya que es mucho ms declarativo que Prolog, por ejemplo. Como curiosidad, se puede destacar que este lenguaje no funciona en un entorno Windows. MODULE GCD. IMPORT Integers. PREDICATE Gcd: Integer * Integer * Integer. Gcd (I , j , d ) <- CommonDivisor (i,j,d) & ~ SOME [e] (CommonDivisor (I , j ,e) & e > d). Instituto Tecnolgico de Piedras Negras Ingeniera en Sistemas Computacionales
Materia: Administracin de Base de Datos Docente: Ing. Mara Guadalupe Njera Lozano Nombre(s): Enrique Mendoza Hernndez Semestre: 8 No. de Control:10430016 Pgina 4
PREDICATE CommonDivisor: Integer * Integer * Integer. CommonDivisor (I , j,d ) <- IF (i = 0 \/ j = 0) THEN d = Max (Abs (I ) , Abs(j)) ELSE 1 =< d =< Min (Abs (i),Abs(j)) & i Mod d = 0 & j Mod d = 0.
Mercury programming language Mercury es un lenguaje de alto nivel (es decir, no se preocupa de problemas como la reserva y liberacin de memoria) derivado de Prolog, pero con una implementacin que le hace ser ms til para representar y tratar problemas del mundo real. Combina toda la expresividad del lenguaje declarativo con avanzadas tcnicas de anlisis esttico y deteccin de errores. Es un lenguaje compilado, lo que le permite detectar numerosos errores antes de poder ejecutar la aplicacin. El compilador traduce el programa de lenguaje Mercury a C, que es un lenguaje portable a cualquier plataforma. Adems, al igual que el lenguaje de Gdel, Mercury es un lenguaje que utiliza mdulos, lo que da una gran modularidad en el desarrollo de aplicaciones, solventando as uno de los mayores problemas a los que se enfrentaban los lenguajes de programacin lgicos.
Conclusiones : Como vemos el lenguaje Prolog no es el nico en cuanto a lenguajes aplicados a la programacin lgica sin embargo si es de los ms utilizados ya que en sus inicio todos estos fueron derivados de prologo tienen en sus fundamentos teoremas aplicados que forman parte de Prolog. Estos aplicacin ciertas caractersticas que los hacen similares en cuanto a funcionamientos pero se declaran de manera diferente o utilizan mdulos para poder compilar Como en su teora lo dice que son difciles de aprender por la Instituto Tecnolgico de Piedras Negras Ingeniera en Sistemas Computacionales
Materia: Administracin de Base de Datos Docente: Ing. Mara Guadalupe Njera Lozano Nombre(s): Enrique Mendoza Hernndez Semestre: 8 No. de Control:10430016 Pgina 5
lgica que aplica y es importante al menos buscar ejemplos que demuestren su funcionamiento.
Referencias Bibliogrficas Autor EDUARDO FERNNDEZ MATAMALA, Documento [En linea]. 24-Octubre-2007 [Fecha de consulta: 04/05/2014 Disponible en http://www.cuvalles.udg.mx/academiainformatica/pags/cursos/quinto/CC208%20Lenguajes%20Programaci%F3n%20Co mparados%20Ciclo%20IV/Apendices/No.%202.pdf
Autor ACADEMIA INFORMATICA Documento [En linea]. 16-abril-2010 [Fecha de consulta: 04/05/2014 Disponible en http://www.it.uc3m.es/jvillena/irc/practicas/estudios/Lenguajes_Logicos.pdf