Parece que escrever Declarative SQL
é muito popular na Programação Imperativa . No entanto, também parece que escrever Declarative Prolog
poderia economizar muita complexidade, mas isso não é muito comum.
Existe um precedente histórico para essa aparente preferência do SQL sobre o Prolog?
Se o motivo é a falta de suporte nativo por idiomas Imperative , é possível responder por que os criadores de idiomas não acharam útil dar suporte nativo Prolog
em primeiro lugar?
Para fornecer alguns exemplos específicos:
Exemplo 1 A
avaliação de um pedido de empréstimo pode ter apenas algumas linhas de código Prolog
, como a SELECT/JOIN
consulta que contém apenas algumas linhas de código SQL
, mas parece que a vantagem não é tão óbvia quanto SQL
.
Exemplo 2
Aqui está outro exemplo de problema e a solução no Prolog. O seguinte programa de lógica de restrição representa um conjunto de dados simplificado da história de john como professor:
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.
A seguinte cláusula de objetivo consulta o conjunto de dados para descobrir quando John ensinou lógica e foi professor :
:- teaches(john, logic, T), rank(john, professor, T).
Resultado:
2010 ≤ T, T ≤ 2012.
No exemplo acima, será fácil SQL
obter o mesmo resultado. Mas suponha que você tenha esses dados em um Array
. Então não é tão fácil obter os mesmos resultados usando SQL
. E, no caso de dados armazenados em uma matriz, acredito que o código do Prolog será mais fácil de escrever e manter.