2012-05-17 26 views
6

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

मुझे पता है कि प्रोलॉग कुछ प्रोलॉग कार्यान्वयन में सी कार्यों को कॉल कर सकता है। यानी एसडब्ल्यूआई प्रोलॉग।

मुझे जो चाहिए वह प्रोलॉग प्रश्नों का एक सरल इनपुट/आउटपुट पुनर्निर्देशन और उपयोगकर्ता द्वारा प्रदान किया जाने वाला उत्तर है।

किसी भी मदद की वास्तव में सराहना की जाएगी।

उत्तर

6

मुझे आपके कार्य के लिए एक विदेशी भाषा इंटरफ़ेस के लिए कोई वास्तविक आवश्यकता नहीं दिखाई देती है: Prolog IO का उपयोग करें, यह उपयोग करना और कुशल बनाना आसान है। आप protocol/1 से केवल समर्थन के साथ भी शुरू कर सकते हैं। बस एक KISS सलाह ...

एक विदेशी भाषा इंटरफ़ेस अनिवार्य है जब आपको उस दूसरी भाषा में लागू कुछ की आवश्यकता होती है।

एसडब्ल्यूआई-प्रोलॉग C++ interface सी काउंटरपार्ट से उपयोग करना बहुत आसान है, और दोनों को वास्तव में आसान बिल्टिन कोडिंग के साथ-साथ एक स्टैंडअलोन 'मुख्य' में इंजन को एम्बेड करने की अनुमति देता है। और ये 2 पहलू सुसंगत रूप से cohexist कर सकते हैं: एक तेजी से प्रोटोटाइप के लिए कहें हम केवल बिल्टिन को लागू करते हैं, और आरईपीएल शीर्ष स्तर का उपयोग करते हैं, जबकि एक पूर्ण उड़ा हुआ आवेदन इंजन इंजन के रूप में इस्तेमाल करने के लिए इंजन शुरू कर सकता है, और उम्मीद है (उम्मीद है कि आरईपीएल के माध्यम से परीक्षण किया गया है पृष्ठभूमि में प्रश्न।

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

ग्रहण (PDT, प्रोलॉग डेवलपमेंट टूल्स) में आईडीई उपलब्ध कराने के लिए एक दिलचस्प विकास हो रहा है। मुझे लगता है कि वे अपने स्वयं के जावा इंटरफ़ेस का उपयोग करते हैं। वर्तमान में जेपीएल की तुलना में बेहतर विकल्प हो सकता है।

लेकिन सबसे दिलचस्प इंटरफ़ेस एसडब्ल्यूआई-प्रोलॉग आज प्रस्तावित कर सकता है कि यह HTTP सर्वर आधारभूत संरचना है। यदि आप वेब क्लाइंट डेवलपमेंट (एचटीएमएल/जावास्क्रिप्ट/एक्सएमएल/आरडीएफ) जानते हैं तो आपके पास एमवीसी क्लाइंट/सर्वर में अपने डिज़ाइन को विभाजित करने के लिए बहुत सारे टूल हैं। Prolog एक वेब सेवा चलाता है, और एक अमीर ग्राहक अंत उपयोगकर्ता के साथ बातचीत करता है। यह आर्किटेक्चर आपके आवेदन को स्थानीय रूप से जंगली में चलाने के लिए तैयार करता है।

कृपया प्रासंगिक How To अनुभाग देखें ... एक आसान काम नहीं है, लेकिन (आईएमएचओ) एक बहुत ही पुरस्कृत और लंबे समय तक खड़ा है।

1

SWI-Prolog सी (http://www.swi-prolog.org/pldoc/package/clib.html), सी ++ (http://www.swi-prolog.org/pldoc/package/pl2cpp.html), सी # (http://www.swi-prolog.org/contrib/CSharp.html) और अजगर (http://code.google.com/p/pyswip/) के साथ इंटरफेस कर सकते हैं। इसके अलावा, आप प्रोलॉग के साथ, बाहरी फाइलों के माध्यम से संवाद कर सकते हैं।

+0

सॉकेट का उपयोग करके संवाद करना एक और विकल्प है। –

+0

सी # इंटरफेस एफ # के साथ भी काम करता है। – joel76

1

Amzi Prolog + Logic Server पर एक नज़र डालें - इसका उद्देश्य प्रोलॉग प्रोग्राम्स को अन्य पारंपरिक भाषाओं के घटक के रूप में सुलभ बनाना है।

1

यह आपके द्वारा उपयोग किए जा रहे प्रोलॉग वितरण पर निर्भर करता है। जैसा कि पहले टिप्पणी की गई थी एसडब्ल्यूआई-प्रोल सी, सी ++, डेटाबेस, HTTP, एक्सएमएल और अन्य जैसे सबसे आम उपयोगों के लिए अलग-अलग इंटरफेस प्रदान करता है। Ciao वितरण जो भी आप ढूंढ रहे हैं उसके लिए भी उपयोगी हो सकता है। इस मामले में सी है इसलिए इस लिंक को देखें Ciao Prolog and C