2P-Kt
Che cos'è 2P-Kt
2P-Kt è
- l'implementazione corrente di tuProlog, riscritta da zero in Kotlin come progetto multi-piattaforma con target JVM, JS — lato server e lato browser — e Android
- costruita su un core minimale e stratificato — termini e clausole, unificazione, teorie, risoluzione — che si estende per moduli anziché configurarsi per opzioni
- pensata per dare agli ingegneri dei sistemi intelligenti un ecosistema general-purpose, estensibile e aperto per la IA simbolica, e non il solo interprete Prolog
- open source, rilasciata sotto licenza Apache 2.0
Le due IDE
La stessa IDE Prolog esiste in due incarnazioni, che condividono modello e controllore e differiscono solo per il toolkit che li disegna.
- la Web IDE gira in un browser senza installare nulla — tuprolog.github.io/2p-kt/web-ide
- la IDE desktop è un jar eseguibile sulla pagina del rilascio, costruito su Swing
Editing, evidenziazione della sintassi, diagnostica e risoluzione delle query si comportano allo stesso modo in entrambe. Si separano sulla persistenza: nel browser New, Open, Save e Save as gestiscono pagine conservate nella memoria locale del browser, che sopravvivono a un ricaricamento senza toccare il file system, mentre Upload e Download sono ciò che legge e scrive un file di teoria su disco.
I moduli
2P-Kt è una famiglia di moduli, ciascuno un artefatto a sé, stratificati perché una applicazione prenda solo ciò che le serve.
| modulo | che cosa fornisce |
|---|---|
| core | termini e clausole logiche |
| unify | unificazione |
| theory | indicizzazione e memorizzazione in memoria delle teorie |
| solve | l'API generica per la risoluzione di query — solve-classic e solve-streams hanno per target il Prolog ISO |
| solve-plp | programmazione logica probabilistica, con solve-problog sul modulo bdd |
| solve-concurrent | risoluzione OR-concorrente |
| dsl-* | un linguaggio dedicato Prolog-like dentro Kotlin |
| parser-core, parser-theory | parsing di termini e di teorie |
| serialize-core, serialize-theory | (de)serializzazione di termini e di teorie |
| repl | Prolog da riga di comando |
| ide, ide-plp | Prolog, e programmazione logica probabilistica, tramite interfaccia grafica |
L'architettura è deliberatamente neutrale: è pensata per accogliere forme di IA simbolica diverse dal Prolog — answer set programming, risoluzione tabled, programmazione logica concorrente — come ulteriori moduli. E poiché il progetto è Kotlin puro, vincolato alla sola libreria common, resta piccolo e portabile: JVM, JS e Android oggi, Kotlin/Native in linea di principio.
I rilasci
Versioni, note di rilascio e artefatti stanno con il codice, su GitHub. Queste pagine non li inseguono: ciò che è corrente si legge meglio là.
Il motore che sostituisce
2P-Kt è un reboot, non un port: il motore Java che sostituisce è un progetto a sé, con vent'anni di storia propria, e ha qui le sue pagine — tuProlog.