Yazma gibi görünüyor Declarative SQL
çok popüler olan Emir Programlama . Ancak, aynı zamanda yazılı görünüyor Declarative Prolog
karmaşıklık tasarrufu yapabilirsiniz ama bu çok yaygın değildir.
Prolog yerine SQL'in bu belirgin tercihi için tarihsel bir emsal var mı?
Nedeni Zorunlu diller tarafından yerel desteğin bulunmaması ise , dil yaratıcılarının Prolog
ilk etapta yerel olarak desteklemeyi neden yararlı bulamadıklarını cevaplamak mümkün müdür ?
Bazı spesifik örnekler sunmak için:
Örnek 1
Bir kredi başvurusunun değerlendirilmesi, yalnızca birkaç satır kodlu sorgu Prolog
gibi SELECT/JOIN
birkaç satır kod olabilir SQL
, ancak avantajı o kadar açık değildir SQL
.
Örnek 2
İşte başka bir örnek problem ve Prolog çözümü. Aşağıdaki kısıtlama mantık programı, john'un öğretmen olarak tarihinin basitleştirilmiş bir veri kümesini temsil eder :
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şağıdaki hedef fıkra zaman john hem öğretilen öğrenmek için veri kümesini sorgular mantığı ve oldu profesörü :
:- teaches(john, logic, T), rank(john, professor, T).
Sonuç:
2010 ≤ T, T ≤ 2012.
Yukarıdaki örnekte SQL
aynı sonucu elde etmek kolay olacaktır . Ancak, bu verilerin bir Array
. O zaman aynı sonuçları kullanarak o kadar kolay değil SQL
. Ve bir dizide saklanan veri durumunda, Prolog kodunun yazılması ve bakımı daha kolay olacağına inanıyorum.