¿Por qué (no) la programación lógica?

13

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 tampoco sé de su uso en la programación de pasatiempos o en proyectos de código abierto. Sin embargo, se usa (Prolog) como lenguaje académico en cierta medida (¿por qué se usa en la academia?).

Esto me hace preguntarme: ¿por qué debería usar la programación lógica y por qué no? ¿Por qué no se obtiene ningún uso detectable en la industria?

    
pregunta Anto 17.03.2011 - 18:43

3 respuestas

8

Fuera de la academia ... he escuchado que se usa más en IA, a veces en juegos (escuché que condujo a la AI en la serie Black & White). También he oído hablar de variaciones utilizadas para ejecutar motores de reglas para ciertas empresas y simulaciones económicas.

Mis suposiciones por falta de adopción generalizada son:

  • Es raro: la mayoría de la gente no está acostumbrada a programar en ella, y pueden hacer lo que necesitan en otros idiomas.
  • Falta de soporte del proveedor: si Microsoft de repente comenzó a presionar Prolog # (con todo el peso de la biblioteca y el conjunto de herramientas .NET y el soporte formal detrás de él) como The Next Big Thing - y luego a IBM y Oracle se les ocurrió algo para competir ¡Apuesto a que lo verías recoger!
  • Falta de integración (no sé qué bibliotecas están disponibles para Prolog). La última vez que verifiqué no había muchas bibliotecas gráficas o de redes, lo que significa que una "aplicación" de Prolog debe incluirse en otra aplicación que interactúe con resto del mundo.
respondido por el FrustratedWithFormsDesigner 17.03.2011 - 18:54
5

Lo usamos para construir parsers. Era más fácil trabajar con lex / yacc.

  

¿Por qué no se obtiene ningún uso detectable en la industria?

Esto no tiene respuesta. ¿Qué significa "detectable"? ¿Quién necesita obtener la nota de detección?

enlace

Pregunte a Meridian Software sobre 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 tomar un tiempo lograr algo.

Segundo, el prólogo no es de procedimiento o funcional, por lo que muchos programadores se resisten a usarlo. (Curiosamente, algunos programadores también se resisten a usar SQL. Para el caso, algunos programadores usarán a regañadientes SQL y harán cosas extrañas como evitar las operaciones de combinación, o afirman que COUNT(*) es mágicamente ineficiente).

Tercero, el prólogo requiere un pensamiento bastante claro sobre cuáles son los distintos casos. La programación de procedimientos puede ser descuidada y aún funcionar de manera confiable. Las declaraciones no ejecutables son aceptables.

Lo siguiente es aceptable en la mayoría de los círculos.

b = a + 1
if a > b: # always False

Este tipo de pensamiento turbio te mete en problemas con el prólogo.

    
respondido por el S.Lott 17.03.2011 - 19:17
2

Un problema es que Prolog no está realmente programando en la lógica de predicados de primer orden, que es computacionalmente intratable (no recuerdo en qué medida, 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 se puede probar como verdadera, falsa o no probada de ninguna manera. Prolog solo ha probado y no probado, "no probado" que normalmente significa falso. Además, el orden de las cláusulas de Prolog puede afectar la ejecución, lo que no es el caso de las cláusulas lógicas. En el curso en el que lo utilicé, 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 el propio lenguaje Prolog. Es un lenguaje útil en cierto modo, pero no se encuentra en ningún punto más que lo normal, y no ha tenido la herramienta y los beneficios para la comunidad de un lenguaje como C ++.

    
respondido por el David Thornley 17.03.2011 - 21:48

Lea otras preguntas en las etiquetas