Sembra che scrivere Declarative SQL
sia molto popolare nella programmazione imperativa . Tuttavia, sembra anche che scrivere Declarative Prolog
potrebbe salvare molta complessità, ma questo non è molto comune.
Esiste un precedente storico per questa apparente preferenza di SQL rispetto a Prolog?
Se la ragione è la mancanza di supporto nativo da parte delle lingue imperative , allora è possibile rispondere perché i creatori di lingue non hanno trovato utile sostenere nativamente Prolog
in primo luogo?
Per fornire alcuni esempi specifici:
Esempio 1 La
valutazione di un'applicazione di prestito potrebbe consistere in poche righe di codice Prolog
, come la SELECT/JOIN
query che contiene solo poche righe di codice SQL
, ma sembra che il vantaggio non sia così ovvio SQL
.
Esempio 2
Ecco un altro problema di esempio e la soluzione in Prolog. Il seguente programma di logica dei vincoli rappresenta un set di dati semplificato della storia di John come insegnante:
teaches(john, hardware, T) :- 1990 ≤ T, T < 1999.
teaches(john, software, T) :- 1999 ≤ T, T < 2005.
teaches(john, logic, T) :- 2005 ≤ T, T ≤ 2012.
rank(john, instructor, T) :- 1990 ≤ T, T < 2010.
rank(john, professor, T) :- 2010 ≤ T, T < 2014.
La seguente clausola obiettivo interroga il set di dati per scoprire quando John insegnava la logica ed era un professore :
:- teaches(john, logic, T), rank(john, professor, T).
Risultato:
2010 ≤ T, T ≤ 2012.
Nell'esempio sopra sarà facile SQL
ottenere lo stesso risultato. Ma supponiamo di avere questi dati in un Array
. Quindi non è così facile ottenere gli stessi risultati usando SQL
. E nel caso dei dati archiviati in un array, credo che il codice Prolog sarà più facile da scrivere e mantenere.