क्यों (नहीं) तर्क प्रोग्रामिंग?


13

मैंने अभी तक सॉफ्टवेयर उद्योग में किसी तार्किक प्रोग्रामिंग भाषा (जैसे प्रोलॉग) के किसी भी उपयोग के बारे में नहीं सुना है, और न ही मुझे इसका उपयोग हॉबी प्रोग्रामिंग या ओपन सोर्स प्रोजेक्ट में करने का पता है। यह (प्रोलॉग) कुछ हद तक अकादमिक भाषा के रूप में प्रयोग किया जाता है, हालांकि (इसे अकादमिक भाषा में क्यों इस्तेमाल किया जाता है?)।

यह मुझे आश्चर्यचकित करता है, आपको तर्क प्रोग्रामिंग का उपयोग क्यों करना चाहिए, और क्यों नहीं? क्यों यह किसी भी पता लगाने योग्य उद्योग उपयोग नहीं हो रहा है?

जवाबों:


8

अकादमिया के बाहर ... मैंने इसके बारे में ऐ में अधिक इस्तेमाल किया है, कभी-कभी खेलों में (मैंने सुना है कि यह एआई को ब्लैक एंड व्हाइट सीरीज़ में निकाल दिया है)। मैंने कुछ व्यवसायों और आर्थिक सिमुलेशन के लिए नियम-इंजन चलाने के लिए उपयोग की जाने वाली भिन्नताओं के बारे में भी सुना है।

व्यापक रूप से गोद लेने की कमी के लिए मेरे अनुमान हैं:

  • यह अजीब है - अधिकांश लोगों को इसमें प्रोग्रामिंग करने की आदत नहीं है, और वे वे कर सकते हैं जो उन्हें अन्य भाषाओं में चाहिए।
  • वेंडर सपोर्ट की कमी - अगर Microsoft ने अगली बड़ी बात के रूप में अचानक Prolog # (.NET लाइब्रेरी और टूलसेट के पूरे वजन के साथ और इसके पीछे औपचारिक समर्थन के साथ) धक्का देना शुरू कर दिया - और तब आईबीएम और ओरेकल ने मुझे टक्कर देने के लिए कुछ किया। यह देखना होगा!
  • एकीकरण का अभाव - मुझे नहीं पता कि प्रोलॉग के लिए कौन सी लाइब्रेरी उपलब्ध है - पिछली बार मैंने जाँच की थी कि बहुत अधिक ग्राफिकल या नेटवर्किंग लाइब्रेरी नहीं थी, जिसका अर्थ है कि एक प्रोलॉग "एप्लिकेशन" को दूसरे एप्लिकेशन में लपेटना होगा जो बाकी के साथ इंटरैक्ट करता है। विश्व।

"एक प्रोलॉग" एप्लिकेशन को एक अन्य एप्लिकेशन में लपेटा जाना है जो बाकी दुनिया के साथ बातचीत करता है। " यह वास्तव में हमारे लिए एक विशेषता थी। हम अधिक आसानी से प्रोलॉग बिट्स को अलग कर सकते थे क्योंकि इसके लिए इंटरफ़ेस इतना सरल था।
लोट

@ S.Lott: ठीक है, मुझे लगता है कि संभवतः साथ ही सकारात्मक रूप में, हालांकि, जब मैं स्कूल में था और वास्तव में चाहता था देख सकते हैं बनाने के Prolog साथ एक आवेदन, मैं पाइपलाइन और तारों टुकड़ों के बीच एक बड़ी चुनौती और बाधा हो पाया।
FrustratedWithFormsDesigner

5

हमने इसका उपयोग पार्सर बनाने के लिए किया। लेक्स / याक की तुलना में काम करना आसान था।

क्यों यह किसी भी पता लगाने योग्य उद्योग उपयोग नहीं हो रहा है?

यह अचूक है। "पता लगाने योग्य" का क्या अर्थ है? पता लगाने मेमो की आवश्यकता किसे है?

http://www.meridiansystems.com/landing/ppc/prolog/getvideo.asp

यदि आप तथ्य चाहते हैं तो उनके प्रस्ताव के बारे में मेरिडियन सॉफ्टवेयर से पूछें।

हालांकि, प्रवेश के लिए कुछ बाधाएं हैं जो मैंने अनुभव की हैं।

सबसे पहले, प्रोलॉग धीमा हो सकता है। जब बहुत सारे उम्मीदवार नियम होते हैं और खोज स्थान को सीमित करने के लिए कोई सरल कटौती नहीं होती है, तो कुछ करने में कुछ समय लग सकता है।

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

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

अधिकांश मंडलियों में निम्नलिखित स्वीकार्य है।

b = a + 1
if a > b: # always False

इस तरह की मुखर सोच आपको प्रोलॉग में परेशानी में डालती है।


2

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

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

इसलिए, प्रोलॉग प्रोग्रामिंग तार्किक शुद्धता पर इतना निर्भर नहीं करती है जितना कि प्रोलॉग भाषा। यह कुछ मायनों में एक उपयोगी भाषा है, लेकिन यह मुख्यधारा के पास कहीं नहीं है, और इसमें C ++ जैसी भाषा के उपकरण और सामुदायिक लाभ नहीं हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.