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.