Todavía no he oído hablar de ningún uso de un lenguaje de programación lógico (como Prolog) en la industria del software, ni sé de su uso en la programación de pasatiempos o proyectos de código abierto. Sin embargo, (Prolog) se usa como lenguaje académico en cierta medida (¿por qué se usa en la academia?).
Esto me hace preguntarme, ¿por qué deberías usar programación lógica y por qué no? ¿Por qué no está obteniendo ningún uso industrial detectable?
Lo usamos para construir analizadores. Era más fácil trabajar con lex / yacc.
Esto no tiene respuesta. ¿Qué significa "detectable"? ¿Quién necesita obtener la nota de detección?
http://www.meridiansystems.com/landing/ppc/prolog/getvideo.asp
Pregúntele a Meridian Software acerca de su oferta de prólogo si desea información.
Sin embargo, hay algunas barreras de entrada que he experimentado.
Primero, el prólogo puede ser lento. Cuando hay muchas reglas candidatas y no hay operaciones de corte simples para restringir el espacio de búsqueda, puede llevar un tiempo hacer algo.
En segundo lugar, el prólogo no es procesal o funcional, por lo que muchos programadores se resisten a usarlo. (Curiosamente, algunos programadores también se resisten a usar SQL. Por lo demás, algunos programadores usarán SQL de mala gana y harán cosas extrañas como evitar operaciones de unión o afirmar que
COUNT(*)
es mágicamente ineficiente).Tercero, el prólogo requiere un pensamiento bastante claro sobre cuáles son los diferentes casos. La programación procesal puede ser descuidada y aún así funcionar de manera confiable. Las declaraciones no ejecutables son aceptables.
Lo siguiente es aceptable en la mayoría de los círculos.
Este tipo de pensamiento turbio te mete en problemas en el prólogo.
fuente
Un problema es que Prolog no está realmente programando en lógica de predicado de primer orden, que es computablemente intratable (no recuerdo hasta qué punto, pero no está en NP, y si le agregas aritmética es formalmente indecidible). Por lo tanto, es una simplificación.
En lógica, una proposición puede ser probada como verdadera, falsa o no ser probada de ninguna manera. Prolog solo ha sido probado y no probado, "no probado" generalmente significa falso. Además, el orden de las cláusulas Prolog puede afectar la ejecución, que no es el caso de las cláusulas lógicas. En el curso en que lo usé, comencé a pensar en Prolog como un lenguaje de coincidencia de patrones más que un lenguaje lógico.
Por lo tanto, la programación de Prolog no depende tanto de la corrección lógica como del lenguaje Prolog en sí. Es un lenguaje útil en algunos aspectos, pero no está cerca de la corriente principal, y no ha tenido la herramienta y los beneficios para la comunidad de un lenguaje como C ++.
fuente