Sto lavorando a un'applicazione in Java, che deve fare alcune deduzioni di regole logiche complesse come parte della sua funzionalità. Mi piacerebbe codificare le mie deduzioni logiche in Prolog o in qualche altro linguaggio di programmazione di logica/vincolo, invece di Java, poiché ritengo che il codice risultante sarà significativamente più semplice e più gestibile.Interpreter/compiler Prolog incorporato per Java
Ho cercato su Google le implementazioni Java incorporate su Prolog e ne ho trovato il numero, ognuna con pochissima documentazione. I miei criteri (modesto) che hai scelto sono:
- dovrebbe essere integrabile in Java (per esempio, può essere abbinato con il mio pacchetto java invece di richiedere eventuali installazioni native su programmi esterni)
- semplice interfaccia da utilizzare da Java (per avvio di detrazioni, ispezione dei risultati e aggiunta di regole)
- venire con almeno alcuni esempi su come utilizzarlo
- non deve necessariamente essere Prolog, ma altri linguaggi di programmazione di logica/vincoli con i criteri sopra potrebbero soddisfare anche i miei bisogni.
Quali scelte ho e quali sono i loro vantaggi e svantaggi?
Non ho mai usato un Prolog-in-Java, ma un'altra opzione è quella di scrivere il proprio. Conosco almeno 2 libri Lisp che lo fanno in non troppe pagine (On Lisp e PAIP), quindi non può essere * così * difficile, nemmeno in Java. – Ken
Certo, puoi creare un linguaggio di programmazione logico giocattolo in poche pagine di codice, ma sto cercando qualcosa di un po 'più robusto. Ora puoi fare una lisp giocattolo anche in un paio di pagine di codice, quindi credo che avrò solo quattro pagine e andrò bene :-) – Sami
Queste sono alcune parole caricate che stai lanciando in giro! Non sono sicuro di ciò che rende una piccola implementazione di Prolog un "giocattolo", o in che modo non sono abbastanza "robusti". Una delle lezioni di Norvig era "Prolog è simile a Lisp sui punti principali"; un piccolo Prolog-on-Lisp, quindi, non è un "giocattolo", ma piuttosto un'interfaccia utente diversa per il compilatore. Non sarà così divertente in Java, ma non penso che stesse facendo * tanto * con i macro. – Ken