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 Prolog
en 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/JOIN
consulta 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 SQL
obtener 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.