2009-10-03 4 views
7

उपयोग की जा रही हर भाषा का उपयोग आम तौर पर इसके फायदे के लिए किया जा रहा है।अन्य भाषाओं में प्रोलॉग का उपयोग करने के क्या फायदे हैं?

Prolog के फायदे क्या हैं?

सामान्य स्थितियों/समस्याओं की श्रेणी क्या हैं जहां कोई भी किसी अन्य भाषा की तुलना में प्रोलॉग का अधिक कुशलता से उपयोग कर सकता है?

उत्तर

3

वास्तव में क्या तुलना की तुलना में? प्रोलॉग वास्तव में तर्क प्रोग्रामिंग का पहला प्रख्यात कार्यान्वयन है, इसलिए यदि आपका प्रश्न वास्तव में प्रोग्रामिंग प्रतिमानों की तुलना में वास्तव में है, तो वास्तव में वास्तव में बहुत व्यापक है और आपको here देखना चाहिए।

यदि आपका प्रश्न अधिक सामान्य रूप से ओओ भाषाओं के रूप में प्रोलॉग के बारे में अधिक विशेष रूप से है, तो मैं तर्क दूंगा कि आप वास्तव में संतरे से सेब की तुलना कर रहे हैं - "लाभ" (जैसे यह है) बस सोचने का एक अलग तरीका है दुनिया, और कभी-कभी आप जिस प्रश्न से पूछते हैं उसे बदलते हुए समस्या को हल करने के लिए एक बेहतर टूल प्रदान करता है।

+0

विशेष रूप से सी/सी ++ की तुलना में ... 8 क्वींस समस्या को हल करना उदाहरण के लिए है, प्रोलोग में इतना आसान है (जिसे मैंने अभी पाया है)। सी बनाम Prolog सेब और संतरे की तरह क्यों है? क्या प्रत्येक सी प्रोग्राम Prolog में परिवर्तित नहीं किया जा सकता है और इसके विपरीत ?? – Lazer

+2

यह (सिद्धांत रूप में - यानी मैं काउंटर-उदाहरण ऑफहैंड के बारे में नहीं सोच सकता) लेकिन सिर्फ इसलिए कि इसका मतलब यह नहीं हो सकता कि आपको चाहिए। इसे इस तरह देखो: यदि यह * सही समय था, तो अधिकतर समय में वहां से बहुत अधिक प्रोलॉग प्रोग्रामर होंगे। – annakata

+0

@annakata हाँ, मैं सहमत हूं। लेकिन मुझे नहीं पता क्यों (कम प्रोलॉग प्रोग्रामर हैं) – Lazer

3

असल में, यदि आपका प्रोग्राम घोषणात्मक औपचारिक तर्क बयान के रूप में आसानी से कहा जा सकता है, प्रोलॉग (या उस परिवार में एक और भाषा) सबसे तेज़ विकास का समय देगा। यदि आप एक अच्छा प्रोलॉग कंपाइलर का उपयोग करते हैं, तो यह सर्वश्रेष्ठ प्रदर्शन और विश्वसनीयता भी प्रदान करेगा, क्योंकि इंजन के पास बहुत सारे डिज़ाइन और विकास प्रयास होंगे।

इस तरह की चीज को किसी अन्य भाषा में लागू करने की कोशिश करना एक गड़बड़ है। सबसे साफ और सबसे सामान्य समाधान में शायद आपके स्वयं के एकीकरण इंजन को लागू करना शामिल है। यहां तक ​​कि बेवकूफ कार्यान्वयन भी तुच्छ नहीं हैं, वॉरेन सार मशीन में इसके बारे में एक पुस्तक या दो लिखा गया है, और बेहतर प्रदर्शन करने में कम से कम अनुसंधान में कुछ सिरदर्द-प्रेरित पत्र पढ़ना होगा।

वास्तविक दुनिया में, आपके कार्यक्रम के प्रमुख हिस्सों को प्रोलॉग से लाभ हो सकता है, लेकिन कई अन्य चीजें किसी अन्य भाषा का उपयोग करके बेहतर तरीके से संभाली जाती हैं। यही कारण है कि बहुत से प्रोलॉग कंपाइलर्स इंटरफ़ेस कर सकते हैं, उदाहरण के लिए, सी

1

मैं कहूंगा कि प्रोलॉग उन समस्याओं के लिए अच्छी तरह से काम करता है जहां ज्ञान आधार समाधान का एक महत्वपूर्ण हिस्सा बनता है। विशेष रूप से जब ज्ञान संरचना तार्किक नियमों के रूप में एन्कोड किए जाने के लिए उपयुक्त होती है।

उदाहरण के लिए, किसी विशेष समस्या डोमेन के लिए एक प्राकृतिक भाषा दुभाषिया लिखने के लिए उस डोमेन में बहुत सारे ज्ञान की आवश्यकता होगी। विशेषज्ञ प्रणाली भी इस ज्ञान संचालित श्रेणी के भीतर आती है।

यह भी तार्किक पहेलियाँ ;-)

+0

हाँ, मैंने अभी आठ रानी समस्या हल की है, और यह इतना आसान था ... मुझे नहीं पता कि हम प्रोलॉग का अधिक इस्तेमाल क्यों नहीं करते हैं। – Lazer

+3

@ ईएसके - दो बड़े, ए)। नौकरी सिंड्रोम के लिए गलत उपकरण, क्योंकि अधिकांश व्यावसायिक समस्याएं वस्तुओं को छेड़छाड़ करने के बारे में अधिक होती हैं और ओओ परिणामस्वरूप एक बहुत ही प्रचलित और सफल प्रतिमान बी है)। प्रोलॉग ग्रोक करने के लिए अविश्वसनीय रूप से कठिन है, और – annakata

2

सबसे अच्छा बार उपयोग करने के लिए Prolog जब आप backtracking साथ सुलझाने के लिए अनुकूल एक समस्या है है में से एक के समाधान का पता लगाने के लिए एक अच्छी भाषा है। और वह तब होता है जब आपके पास किसी समस्या के बहुत से संभावित समाधान होते हैं, और शायद आप उन्हें कुछ संदर्भों के आधार पर शामिल/बहिष्कृत करने का आदेश देना चाहते हैं। यह प्राकृतिक भाषा प्रसंस्करण में बहुत अस्पष्टता का सुझाव देता है।

यह निश्चित रूप से प्रोलॉग क्लॉज के रूप में सभी संभावित उत्तरों को लिखने के लिए बहुत कठिन होगा। एक अनिवार्य भाषा के साथ मुझे लगता है कि आप वास्तव में एक विशाल (वास्तव में विशाल) केस स्टेटमेंट लिख सकते हैं, जो बहुत मजेदार नहीं है।

2

सामान कि Prolog में निहित हैं:

  • पैटर्न मिलान!
  • कुछ भी जिसमें गहराई पहली खोज शामिल है।(जावा में यदि आप एक डीएफएस क्या करना चाहते हैं, तो आप एक आगंतुक पैटर्न से इसे लागू या एक (वास्तव में विशाल) मामला
  • एकीकरण
  • ??

पॉल ग्राहम क्या करना चाहते हो सकता है, एक लिस्प है फिर भी वह तर्क देता है कि प्रोलॉग 2% समस्याओं के लिए वास्तव में अच्छा है, मैं खुद को इस 2% को तोड़ना चाहता हूं और यह समझता हूं कि वह इस तरह के नंबर के साथ कैसे आएगा।

"बेहतर" भाषाओं के लिए उनका तर्क है "कम कोड, अधिक शक्ति"। Prolog निश्चित रूप से "कम कोड" है और यदि आप इसके बाद के स्वाद (टाइप किए गए) के लिए जाते हैं, तो आपको और भी शक्ति मिलती है। केवल एक चीज जो मुझे पीआर का उपयोग करते समय परेशान करती है ओलॉग यह तथ्य है कि मेरे पास सूचियों में कोई यादृच्छिक पहुंच नहीं है (कोई सरणी नहीं)।

2

प्रोलॉग एक बहुत ही उच्च स्तर की प्रोग्रामिंग भाषा है। एक समानता हो सकती है (प्रोलॉग: सी) के रूप में (सी: असेंबलर)

तब इतना उपयोग क्यों नहीं किया जाता है? मुझे लगता है कि इसे उपयोग करने वाली मशीनों के साथ करना है; वे ट्यूरिंग मशीनों पर आधारित हैं। सी को स्वचालित रूप से बाइट कोड में संकलित किया जा सकता है, लेकिन प्रोलॉग को सार वॉरेन मशीन के अनुकरण पर चलाने के लिए संकलित किया गया है, इस प्रकार, यह कुशल नहीं है।

इसके अलावा, प्रोलॉग पहले ऑर्डर तर्क पर आधारित है जो घोषणात्मक तरीके से हर हल करने योग्य समस्या को हल करने में सक्षम नहीं है, इस प्रकार, किसी बिंदु पर, आपको अनिवार्य कोड पर भरोसा करना होगा।

+0

डीबग करने के लिए एक अपवित्र दुःस्वप्न है क्या आप प्रोलॉग में हल करने योग्य समस्या का उदाहरण दे सकते हैं? – alexraasch

+0

@alexraasch Prolog पूर्ण ट्यूरिंग है, इसलिए यह हल करने योग्य को हल करने में सक्षम है। हालांकि, अगर आप हल करने का प्रयास करते हैं, उदाहरण के लिए, आपके कोड के साथ समीकरणों की एक प्रणाली अनिवार्य जैसी होगी। –

1

मैं स्वि-प्रोलॉग के साथ एक वर्ष में प्रोग्रामिंग (मज़े के लिए) रहा हूं। मुझे लगता है कि प्रोलॉग के फायदों में से एक यह है कि प्रोलॉग का कोई साइड इफेक्ट नहीं है: प्रोलॉग ऐसी भाषा है जिसका उपयोग (स्थानीय या वर्ग सदस्य) चर के लिए कोई उपयोग नहीं है, इस तरह की ताकतें प्रोग्रामर चर का उपयोग नहीं करती हैं। प्रोल ऑब्जेक्ट्स में कोई राज्य नहीं है। मुझे लगता है। मैं कमांड लाइन प्रोलॉग लिख रहा हूं (कुछ जीपीआई नहीं, कुछ एक्सपीसीई परीक्षणों को छोड़कर): यह एक ट्रैक पर एक ट्रेन की तरह है।

संबंधित मुद्दे