Sembra che scrivere Dichiarativo SQL
sia molto popolare in Programmazione Imperativa . Tuttavia, sembra anche che scrivere Dichiarativo Prolog
potrebbe risparmiare 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 linguistici non hanno trovato utile supportare nativamente Prolog
in primo luogo?
Per fornire alcuni esempi specifici:
Esempio 1
La valutazione di un'applicazione di prestito potrebbe essere solo alcune righe di codice in Prolog
, come la query SELECT/JOIN
che è solo alcune righe di codice in SQL
, ma sembra che il vantaggio non sia ovvio come 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 ha entrambi insegnato logic ed era un professore :
:- teaches(john, logic, T), rank(john, professor, T).
Risultato:
2010 ≤ T, T ≤ 2012.
Nell'esempio precedente sarà facile con SQL
ottenere lo stesso risultato. Ma supponiamo che tu abbia questi dati in un Array
. Quindi non è così facile ottenere gli stessi risultati usando SQL
. E nel caso di dati memorizzati in un array, credo che il codice Prolog sarà più facile da scrivere e mantenere.