Parece que la escritura declarativa SQL es muy popular en la programación imperativa . Sin embargo, también parece que escribir Declarative Prolog podría ahorrar mucha complejidad, pero esto no es muy común.
¿Existe un precedente histórico para esta aparente preferencia de SQL sobre Prolog?
Si la razón es la falta de soporte nativo por parte de los lenguajes imperativos , entonces ¿es posible responder por qué los creadores del lenguaje no encontraron útil el soporte nativo Prologen primer lugar?
Para proporcionar algunos ejemplos específicos:
Ejemplo 1 La
evaluación de una solicitud de préstamo podría incluir solo unas pocas líneas de código Prolog, como la SELECT/JOINconsulta que solo contiene unas pocas líneas de código SQL, pero parece que la ventaja no es tan obvia como SQL.
Ejemplo 2
Aquí hay otro problema de ejemplo y la solución en Prolog. El siguiente programa de lógica de restricción representa un conjunto de datos simplificado de la historia de John como maestro:
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 siguiente cláusula objetivo consulta el conjunto de datos para averiguar cuándo juan enseñó lógica y fue profesor :
:- teaches(john, logic, T), rank(john, professor, T).
Resultado:
2010 ≤ T, T ≤ 2012.
En el ejemplo anterior, será fácil SQLobtener el mismo resultado. Pero suponga que tiene estos datos en un Array. Entonces no es tan fácil obtener los mismos resultados usando SQL. Y en el caso de los datos almacenados en una matriz, creo que el código Prolog será más fácil de escribir y mantener.