Perché (non) programmare la logica?


13

Non ho ancora sentito parlare di alcun uso di un linguaggio di programmazione logico (come Prolog) nell'industria del software, né conosco il suo utilizzo nella programmazione di hobby o progetti open source. Tuttavia (Prolog) è usato in qualche modo come lingua accademica (perché viene usato nel mondo accademico?).

Questo mi fa meravigliare, perché dovresti usare la programmazione logica e perché no? Perché non viene rilevato alcun utilizzo del settore rilevabile?

Risposte:


8

Al di fuori del mondo accademico ... ne ho sentito parlare più usato nell'intelligenza artificiale, a volte nei giochi (l'ho sentito guidare l'IA nella serie Black & White). Ho anche sentito parlare di variazioni utilizzate per far funzionare i motori delle regole per determinate aziende e simulazioni economiche.

Le mie ipotesi per mancanza di adozione diffusa sono:

  • È strano - la maggior parte delle persone non è abituata a programmare in esso e può fare ciò di cui ha bisogno in altre lingue.
  • Mancanza di supporto del fornitore - Se improvvisamente Microsoft ha iniziato a spingere Prolog # (con tutto il peso della libreria e del set di strumenti .NET e il supporto formale dietro di esso) come The Next Big Thing - e poi IBM e Oracle hanno inventato qualcosa per competere, scommetto che lo vedrei prendere!
  • Mancanza di integrazione - non so quali librerie sono disponibili per Prolog - l'ultima volta che ho controllato non c'erano molte librerie grafiche o di rete, il che significa che una "applicazione" di Prolog deve essere racchiusa in un'altra applicazione che interagisce con il resto del mondo.

"un'applicazione Prolog" deve essere racchiusa in un'altra applicazione che interagisce con il resto del mondo. " Questa era in realtà una caratteristica per noi. Potremmo isolare più facilmente i bit del prologo perché l'interfaccia era così semplice.
S.Lott

@ S.Lott: Ok, lo vedo anche come forse positivo, anche se quando ero a scuola e volevo davvero fare una domanda con Prolog, ho trovato che l'impianto idraulico e il cablaggio tra i pezzi erano una grande sfida e un ostacolo.
FrustratedWithFormsDesigner

5

Lo abbiamo usato per costruire parser. È stato più facile lavorare rispetto a lex / yacc.

Perché non viene rilevato alcun utilizzo del settore rilevabile?

Questo è senza risposta. Cosa significa "rilevabile"? Chi ha bisogno di ottenere il promemoria di rilevamento?

http://www.meridiansystems.com/landing/ppc/prolog/getvideo.asp

Chiedi a Meridian Software la sua offerta di prolog se desideri dei fatti.

Tuttavia, ci sono alcuni ostacoli all'ingresso che ho riscontrato.

Innanzitutto, il prologo può essere lento. Quando ci sono molte regole candidate e nessuna semplice operazione di taglio per limitare lo spazio di ricerca, può richiedere del tempo per fare qualcosa.

In secondo luogo, prolog non è procedurale o funzionale, quindi molti programmatori si rifiutano di usarlo. (È interessante notare che anche alcuni programmatori si oppongono all'utilizzo di SQL. In tal caso, alcuni programmatori useranno con riluttanza SQL e faranno cose strane come evitare operazioni di join o affermano che COUNT(*)è magicamente inefficiente.)

Terzo, Prolog richiede un pensiero abbastanza chiaro su quali siano i vari casi. La programmazione procedurale può essere sciatta e funzionare ancora in modo affidabile. Le dichiarazioni non eseguibili sono accettabili.

Quanto segue è accettabile nella maggior parte delle cerchie.

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

Questo tipo di pensiero oscuro ti mette nei guai in prologo.


2

Un problema è che Prolog non sta davvero programmando nella logica del predicato del primo ordine, che è intrattabile dal punto di vista computazionale (non ricordo fino a che punto, ma non è in NP, e se aggiungi l'aritmetica ad esso è formalmente indecidibile). Pertanto, è una semplificazione.

Nella logica, una proposizione può essere dimostrata vera, dimostrata falsa o non dimostrata in entrambi i modi. Prolog ha solo dimostrato e non dimostrato, "non provato" in genere significa falso. Inoltre, l'ordine delle clausole Prolog può influire sull'esecuzione, il che non è il caso delle clausole logiche. Nel corso in cui l'ho usato, ho iniziato a pensare a Prolog come un linguaggio di adattamento dei modelli più che un linguaggio logico.

Pertanto, la programmazione Prolog non dipende tanto dalla correttezza logica quanto dal linguaggio Prolog stesso. È in qualche modo un linguaggio utile, ma non è affatto vicino al mainstream e non ha avuto gli strumenti e i vantaggi della community di un linguaggio come il C ++.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.