Es scheint, dass das Schreiben von Deklarativen SQL
in der Imperativen Programmierung sehr beliebt ist . Es scheint jedoch auch, dass das Schreiben von Declarative Prolog
eine Menge Komplexität einsparen könnte, aber dies ist nicht sehr häufig.
Gibt es einen historischen Präzedenzfall für diese offensichtliche Präferenz von SQL gegenüber Prolog?
Wenn der Grund für die mangelnde native Unterstützung durch imperative Sprachen liegt, ist es dann möglich zu beantworten, warum die Sprachentwickler es nicht für nützlich hielten, native Unterstützung überhaupt zu bieten Prolog
?
Um einige spezifische Beispiele bereitzustellen:
Beispiel 1 Die
Bewertung eines Kreditantrags kann nur wenige Codezeilen umfassen Prolog
, wie die SELECT/JOIN
Abfrage, die nur wenige Codezeilen enthält. SQL
Der Vorteil ist jedoch offensichtlich nicht so offensichtlich wie SQL
.
Beispiel 2
Hier ist ein weiteres Beispielproblem und die Lösung in Prolog. Das folgende Constraint-Logik-Programm repräsentiert einen vereinfachten Datensatz von Johns Geschichte als Lehrer:
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.
Die folgende Zielklausel fragt den Datensatz ab, um herauszufinden, wann John sowohl Logik unterrichtet hat als auch Professor war :
:- teaches(john, logic, T), rank(john, professor, T).
Ergebnis:
2010 ≤ T, T ≤ 2012.
Im obigen Beispiel ist es einfach SQL
, dasselbe Ergebnis zu erzielen. Angenommen, Sie haben diese Daten in einem Array
. Dann ist es nicht so einfach, die gleichen Ergebnisse zu erzielen SQL
. Und im Fall von Daten, die in einem Array gespeichert sind, glaube ich, dass der Prolog-Code einfacher zu schreiben und zu warten ist.