ऐसा लगता है कि डिक्लेरेटिव लिखना इम्पीरेटिव प्रोग्रामिंगSQL
में बहुत लोकप्रिय है । हालाँकि, यह भी लगता है कि Declarative लिखने से बहुत जटिलता को बचाया जा सकता है लेकिन यह बहुत सामान्य नहीं है। Prolog
प्रोलॉग पर एसक्यूएल की इस स्पष्ट प्राथमिकता के लिए एक ऐतिहासिक मिसाल है?
यदि इसका कारण इंपीरियल भाषाओं द्वारा मूल समर्थन की कमी है , तो क्या यह उत्तर देना संभव है कि भाषा रचनाकारों ने इसे Prolog
पहली जगह में मूल रूप से समर्थन करने के लिए उपयोगी क्यों नहीं पाया ?
कुछ विशिष्ट उदाहरण प्रदान करने के लिए:
उदाहरण 1
ऋण आवेदन का मूल्यांकन कोड की कुछ पंक्तियाँ हो सकती हैं Prolog
, जैसे कि SELECT/JOIN
प्रश्न में कोड की कुछ पंक्तियाँ हैं SQL
, लेकिन ऐसा लगता है कि लाभ उतना स्पष्ट नहीं है SQL
।
उदाहरण 2
यहां एक और उदाहरण समस्या है और प्रोलॉग में समाधान। निम्नलिखित बाधा तर्क कार्यक्रम एक शिक्षक के रूप में जॉन के इतिहास के सरलीकृत डेटासेट का प्रतिनिधित्व करता है :
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.
जब जॉन ने दोनों को तर्क सिखाया और प्रोफेसर थे, तो निम्न लक्ष्य खंड में यह पता लगाने के लिए डेटासेट पर सवाल उठाए गए :
:- teaches(john, logic, T), rank(john, professor, T).
परिणाम:
2010 ≤ T, T ≤ 2012.
उपरोक्त उदाहरण SQL
में समान परिणाम प्राप्त करना आसान होगा । लेकिन मान लीजिए आप एक में इस डेटा है Array
। फिर उसी परिणाम का उपयोग करना उतना आसान नहीं है SQL
। और एक सरणी में संग्रहीत डेटा के मामले में, मेरा मानना है कि प्रोलॉग कोड को लिखना और बनाए रखना आसान होगा।