Programación Lógica
![](http://deltasoft.com.ve/images/adiestramiento.jpg)
El proceso general de la programación lógica es que a partir de un conjunto de reglas (axiomas) e inferencias podamos comprobar nuevas proposiciones que nos sean relevantes. Este proceso está basado en reglas de lógica de primer orden.
Al ser un paradigma bastante abstracto vale la pena esclarecerlo a través de algunos ejemplos. Aunque Prolog es el lenguaje más representativo en este paradigma,
haré los ejemplos en Structured Query Language (SQL), un lenguaje para operar bases
de datos y el cual representa otra de las aplicaciones de la programación lógica.
haré los ejemplos en Structured Query Language (SQL), un lenguaje para operar bases
de datos y el cual representa otra de las aplicaciones de la programación lógica.
Zarate, Héctor (2008, septiembre).Paradigmas de programación. Extraído el 24 de mayo de 2011 desde http://es.scribd.com/doc/9174723/Paradigmas-de-Programacion
Lenguajes en la Programación Lógica:
Prolog es un lenguaje de programación simple pero poderoso desarrollado en la Universidad de Marsella como una herramienta práctica para programación lógica. Desde el punto de vista del usuario, la ventaja principal es la facilidad para programar, ya que se pueden escribir rápidamente y con pocos errores, programas claramente leíbles.
Extraído desde http://proton.ucting.udg.mx/tutorial/prolog/index.htm
ALF (Another logical framework):
Este lenguaje combina la programación lógica con la programación funcional (Funcional basado en la evaluación de expresiones y funciones matemáticas más que en la utilización de comandos como <alloc>, <malloc>…). Al igual que Prolog, ALF esta basado en “cláusulas de Horn” (por eso es programación lógica) pero también en funciones y ecuaciones (y por esto es también programación funcional). En ALF, se puede mezclar expresiones y ecuaciones; puedes poner una expresión funcional como si fuese un predicado y cualquier predicado puede ser introducido como condición en cualquier ecuación.
Gödel programming language:
Gödel es un lenguaje en el que las sentencias lógicas llevan un orden y en el que existe el polimorfismo. Está basado en módulos (que aceptan polimorfismo) y en tipos de datos (soporta enteros y racionales con una precisión infinita, y número en coma flotante) y tiene una amplia librería de módulos predefinidos. Es un buen lenguaje para tareas de meta-programación, tales como compilación, depuración, análisis, verificación o transformación de programas, ya que es mucho más declarativo que Prolog.
Fernandez, Eduardo.Otros Lenguajes Lógicos además del Prolog. Extraído el 24 de mayo de 2011 desde http://www.it.uc3m.es/jvillena/irc/practicas/estudios/Lenguajes_Logicos.pdf
Programación declarativa
No se basa en el cómo se hace algo (cómo se logra un objetivo paso a paso), sino que describe (declara) cómo es algo. En otras palabras, se enfoca en describir las propiedades de la solución buscada, dejando
indeterminado el algoritmo (conjunto de instrucciones) usado para encontrar esa solución. Es más complicado de implementar que el paradigma imperativo, tiene desventajas en la eficiencia, pero ventajas en la solución de determinados problemas.
Eviltec(2009,julio17).Paradigmas de programación. Extraído el 24 de mayo de
Lenguajes de Programación Declarativa:
Maude:
Maude es un lenguaje de programación de alto rendimiento que soporta la especificación y programación lógica tanto ecuacional como de reescritura para una amplia gama de aplicaciones. Maude ha sido influenciado de una manera muy importante por el lenguaje OBJ3, que puede considerarse como un sublenguaje de Maude para la lógica ecuacional.
Apaza Juan, Juarez Digberth, Suasaca Jose, Roa Ruben. (2009, Agosto 21).Manuel de Maude.Extraido el 24 de mayo de 2011 desde http://www.maudetutorial.260mb.com/introduccion.html
SQL:
![](http://www.addenda.com.mx/blog/wp-content/uploads/2011/03/sql-server-logo-411303.jpg)
cliente – servidor.
Casares,Claudio(2004,Septiembre7).TutorialdeSQL.Extraidoel24demayode2011desde
Lisp:
El Lisp es un lenguaje funcional que se apoya en la utilización de funciones matemáticas para el control de los datos. Pero el elemento fundamental en el Lisp es la lista. Y desde el punto de vista más amplio del término. Cada función del Lisp y cada programa que generemos con él vienen dado en forma de lista. Por esta razón los datos no se pueden diferenciarse sintácticamente de los programas.
Extraido desde http://www.larevistainformatica.com/Lisp.htm
El paradigma de programación funcional es uno de los fundamentales entre los llamados de programación declarativa. Como tal, permite aunar los componentes de especificación y programación en las tareas de solución automática de problemas.
Los lenguajes funcionales ofrecen al programador un buen número de recursos expresivos que permiten resolver problemas complejos mediante programas pequeños y robustos. Entre ellos cabe destacar: un sistema de tipos polimórficos que permite definir una amplia variedad de estructuras de datos de uso genérico, la posibilidad de definir funciones que aceptan otras funciones como argumentos y devuelven funciones como resultado, facilidades para definir y manipular estructuras de datos infinitas, un modelo computacional simple, claro y bien fundamentado, etc. De no menor importancia es la posibilidad de razonar, de forma sencilla, acerca de las propiedades de los programas: su corrección, su eficacia, su comportamiento en ejecución, Esto permite optimizar las tareas de implementación de los lenguajes funcionales.
Podemos encontrar, en casi todos los lenguajes de programación funcional, un núcleo común de conceptos y técnicas asentado sobre bases firmemente establecidas.
Los lenguajes funcionales ofrecen al programador un buen número de recursos expresivos que permiten resolver problemas complejos mediante programas pequeños y robustos. Entre ellos cabe destacar: un sistema de tipos polimórficos que permite definir una amplia variedad de estructuras de datos de uso genérico, la posibilidad de definir funciones que aceptan otras funciones como argumentos y devuelven funciones como resultado, facilidades para definir y manipular estructuras de datos infinitas, un modelo computacional simple, claro y bien fundamentado, etc. De no menor importancia es la posibilidad de razonar, de forma sencilla, acerca de las propiedades de los programas: su corrección, su eficacia, su comportamiento en ejecución, Esto permite optimizar las tareas de implementación de los lenguajes funcionales.
Podemos encontrar, en casi todos los lenguajes de programación funcional, un núcleo común de conceptos y técnicas asentado sobre bases firmemente establecidas.
Salvador, Lucas.Programacion Funcional. Extraído el 24 de mayo de 2011 desde http://users.dsic.upv.es/asignaturas/facultad/prg/prf.html
Lenguajes en la Programación Funcional:
Haskell:
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ4TEy0rF1a_nrAfbuknePVfLsWTJuFv1-jBF1x_XScEInEjftmJvvWxJQ4KTii-qNLx_OPpOmizaW0FqJ6gFh4WZp5ikfWWshyS6v5fTLl4wk2REIZsgOiLdxMaE6rxw33YW_JxLOcVU/s200/Haskell_logo.png)
Labra, José (1998, Octubre).Introducción al Lenguaje Haskell. Extraído el 24 de mayo de 2011 desdehttp://www.x.edu.uy/inet/IntHaskell98.pdf
Miranda:
Miranda es un lenguaje de programación funcional puro diseñado por David Turner, como sucesor de sus lenguajes SASL y KRC, emplea algunos conceptos de los lenguajes ML y Hope. Fue producido por Research Software Ltd. of England y fue el primer lenguaje de programación puramente funcional comercializado.
Miranda fue lanzado en 1985, como un intérprete rápido en C para sistemas operativos UNIX. Otras versiones fueron lanzadas en 1987 y 1989.
Un programa en Miranda es llamado script y consiste de un conjunto de ecuaciones que definen funciones matemáticas varias y tipos de datos algebraicos.
Miranda fue lanzado en 1985, como un intérprete rápido en C para sistemas operativos UNIX. Otras versiones fueron lanzadas en 1987 y 1989.
Un programa en Miranda es llamado script y consiste de un conjunto de ecuaciones que definen funciones matemáticas varias y tipos de datos algebraicos.
Extraído desde http://www.alegsa.com.ar/Dic/miranda.php
Scala:
Scala es un lenguaje de alto nivel, multiparadigmático, elegante y seguro. Soporta la programación orientada a objetos y la programación funcional y tiene una librería para soportar la concurrencia basada en el modelo de actores. Sin embargo Scala tiene un montón de capacidades interesantes: fue diseñado para reutilizar la plataforma existente y se integra perfectamente con Java y XML, que maneja de manera nativa con capacidades de XQuery y XPath, tiene tipos estáticos, inferencia de tipos y pattern matching.
Rey, José (2007, agosto 15).El lenguaje de Programación Scala.Extraido el 24 de mayo de 2011 desde http://radarlibre.blogspot.com/2007/08/el-lenguaje-de-programacin-scala.html