2011-01-16 30 views

Respuesta

9

Mercury es bonito y moderno, y se parece al prólogo.

Mercury es un nuevo lenguaje de programación lógica/funcional, que combina la claridad y la expresividad de la programación declarativa con funciones avanzadas de análisis estático y detección de errores. Su algoritmo de ejecución altamente optimizado ofrece una eficiencia muy superior a los sistemas de programación lógica existentes y cercana a los sistemas de programación convencionales. Mercury aborda los problemas del desarrollo de programas a gran escala, permitiendo la modularidad, la compilación por separado y numerosas compensaciones de optimización/tiempo.

+1

También propongo Mercury como un gran lenguaje de programación lógica. También tenga en cuenta que, si bien la sintaxis de Mercury puede parecerse a la de Prolog, se siente más como si estuviese programando en Haskell debido al sistema de tipo fuerte. Además, si necesita algunas características típicas de Prolog, como Variables lógicas, Mercury no las admite. En la práctica, evitarlos hará que su programa sea más fácil de mantener :-). Descargo de responsabilidad: yo trabajo en el proyecto Mercury, las observaciones sobre el mantenimiento del código son subjetivas y anecdóticas. Otros comentarios son objetivos –

+1

La falta de variables lógicas parece una gran desventaja. ¿No es un aspecto bastante central de prolog/LP? – ib84

5

Hay un lenguaje de programación de lógica funcional muy prometedor llamado Curry. A pesar de su novedad, debería ser fácil acostumbrarse a Curry si ya conoces a Haskell y Prolog ya que fue directamente influenciado por estos dos idiomas.

Curry combina de una manera transparente características de la programación funcional (expresiones anidadas, de orden superior funciones, la evaluación perezosa), lógica de programación (variables lógicas, estructuras de datos parciales, una función de búsqueda) y programación simultánea (evaluación simultánea de las expresiones con sincronización en variables lógicas ).

1

Oz/Mozart es un lenguaje de programación multi-paradigma que admite la programación lógica como una de sus características. Nunca lo he usado así que no puedo decir si es bueno. Sin embargo, parece interesante.

Descargo de responsabilidad: Trabajo en el proyecto Mercury y elegiría Mercury en una elección entre Oz/Mozart y Mercury.

+0

Por favor, corrija el enlace a Oz/Mozart. – nbro

2

No olvide que Prolog es el anfitrión de muchas extensiones más nuevas que pueden considerarse idiomas por derecho propio. En particular, lenguajes de restricción como CLP (R), CLP (Q), CLP (FD). Extensiones más generales como CHR, pero también muchos enfoques tipados.

Estos idiomas generalmente se envían como una biblioteca en un sistema Prolog existente. Lo que obtienes en ese entorno suele ser una implementación significativamente más madura y estable que la que ofrece el sistema desde cero. Después de todo, muchos sistemas Prolog tienen casi 30 años.

3

Logtalk es un lenguaje de programación lógica orientado a objetos que amplía y aprovecha el lenguaje Prolog con un conjunto de características adecuado para la programación en gran tamaño, centrándose en la encapsulación de código y mecanismos de reutilización. Es altamente portable como un compilador de back-end que mantiene las implementaciones de Prolog de manera más activa. Otras características dignas de mención incluyen la compatibilidad con prototipos y clases, protocolos (interfaces), coinducción, programación basada en componentes, programación basada en eventos y programación multi-threading de alto nivel. La distribución actual incluye un gran conjunto de ejemplos de programación, herramientas de programación, bibliotecas y editores de texto, y soporte de resaltado de sintaxis para programar y publicar código fuente.

Cuestiones relacionadas