2009-03-10 25 views
22

जैसे समय बीतता है, ऐसा लगता है कि कार्यात्मक प्रोग्रामिंग की तरह अन्य प्रोग्रामिंग भाषाओं पर अधिक प्रभाव पड़ता है। हम अपनी एआई कक्षा में प्रोलॉग से शुरुआत कर रहे हैं, और ऐसा लगता है कि वहां कुछ चीजें हैं जो गैर-एआई क्षेत्रों में प्रोग्रामिंग को आसान बनाती हैं। मेरा सवाल यह है: क्यों तर्कसंगत प्रोग्रामिंग को उसी तरह पकड़ा नहीं गया है?तर्क प्रोग्रामिंग क्यों नहीं पकड़ा गया है?

इस topic में, ऐसा लगता है कि एक सामान्य आम सहमति तक पहुंच गई थी कि तर्क प्रोग्रामिंग उपयोगी है लेकिन इस तरह साबित होना चाहिए। क्या ऐसा कोई कारण है कि इसे उपयोगी के रूप में क्यों नहीं देखा जाता है?

अद्यतन: शायद मुझे थोड़ा और स्पष्ट होना चाहिए। मैं वास्तव में प्रोलॉग के बारे में नहीं पूछ रहा हूं। मैं देख सकता हूं कि अधिकांश वास्तविक दुनिया के अनुप्रयोगों के लिए प्रोलॉग चुनना अच्छा क्यों नहीं होगा।

जो कुछ मैं बात कर रहा हूं उसका एक उदाहरण देने के लिए, पायथन में सूची समझ/मानचित्र/फ़िल्टर पर विचार करें। ये कार्यात्मक भाषाओं से स्पष्ट रूप से प्रभावित होते हैं। ऐसा क्यों है कि पाइथन जैसी भाषाएं तर्कसंगत प्रोग्रामिंग भाषाओं से इन प्रकार की चीजों पर भी नहीं उठाई गई हैं जैसे उनके पास कार्यात्मक भाषाएं हैं?

+1

यदि आप प्रोलॉग के बारे में बात नहीं कर रहे हैं तो आप किस बारे में बात कर रहे हैं? – user51568

+2

... शायद आपको "मैं वास्तव में प्रोलॉग के बारे में नहीं पूछ रहा हूं" के बाद के बाकी वाक्यों को पढ़ना चाहिए? –

+0

कौन सी तर्क प्रोग्रामिंग भाषाएं, क्योंकि हम प्रोलॉग के बारे में बात नहीं कर रहे हैं? अगर वे अस्पष्ट हैं, तो यह जवाब हो सकता है। लोगों को लिस्प और योजना के साथ दशकों तक कार्यात्मक प्रोग्रामिंग के संपर्क में लाया गया है। –

उत्तर

29

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

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

पास्कल मेरे भाषा पर एक भाषा के रूप में दिखाई नहीं दे रहा है, लेकिन यह एक सॉफ्टवेयर इंजीनियर के रूप में मेरे प्रशिक्षण में महत्वपूर्ण रहा है। इसकी उपयोगिता को वर्तमान में उत्पादन में वर्तमान में पास्कल कोड की संख्या से मापा जा सकता है।

जब आप सॉफ़्टवेयर विकसित करेंगे तो आपको एहसास होगा कि भले ही आप प्रोलॉग कोड की एक पंक्ति नहीं लिख रहे हों, फिर भी आप कभी-कभी उन तकनीकों का पुन: उपयोग कर रहे हैं जिन्हें आपने पहले "बेकार" प्रोलॉग में सीखा होगा या एआई कक्षाओं में आप भाग लिया।

किसी तकनीक (विशिष्ट प्रोग्रामिंग भाषा, विशिष्ट सॉफ़्टवेयर टूल/एप्लिकेशन) की उपयोगिता का मूल्यांकन करना केवल इसके वास्तविक स्तर के उपयोग का मूल्यांकन करने का विषय नहीं है बल्कि इसके प्रभाव का मूल्यांकन करना है।

यदि आप विशेषज्ञ प्रणालियों, कंप्यूटर गेम एआई, वायु यातायात नियंत्रण, और शायद कई अन्य क्षेत्रों (सुझाव किसी को भी?) के क्षेत्र में प्रभाव तर्क प्रोग्रामिंग के प्रभाव में हैं, तो मुझे नहीं लगता कि यह कर सकता है कहा जा सकता है कि तर्क-प्रोग्रामिंग पर पकड़ा नहीं गया है ...

3

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

4

कार्यात्मक प्रोग्रामिंग अधिक लोकप्रिय हो रही है क्योंकि बहु-थ्रेडेड प्रोग्रामिंग पर लागू होने पर इसका कुछ महत्वपूर्ण लाभ होता है, और जैसे ही हम मल्टी-कोर प्रोसेसर की ओर बढ़ते हैं बहु-रंगीन प्रोग्रामिंग अधिक से अधिक महत्वपूर्ण हो जाएगा।

+6

तर्क कार्यक्रम भी अच्छी तरह से समानांतर कर सकते हैं। – TrayMan

2

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

1

तथ्य यह है कि आप अपने एआई कक्षा में प्रोलॉग से शुरू कर रहे हैं यह संकेत एक संकेत होना चाहिए। एआई भी बहुत अच्छी तरह से पकड़ा नहीं है, या तो।

मुझे एआई के लिए महत्वपूर्ण उपयोगों का प्रदर्शन करने के लिए एक प्रोफेसर को चुनौती देने में '80 में याद है (ठीक है, "स्कॉफिंग 'एक और सटीक शब्द होगा, लेकिन मैं तब छोटा था)। वह तब नहीं कर सका, और आज, मुझे संदेह है कि वह एआई के लिए 1/10 वां आवेदन कर रहा है कि वह वापस वापस जा रहा था।

शायद यह प्रोलॉग पर भी लागू होता है। मुझे याद नहीं है कि आखिरी बार मैंने कंपनी को प्रोलॉग अनुभव की तलाश में देखा है। शायद कभी नहीं, या शायद मैंने इसे देखा और इसे अनदेखा किया।

+2

एआई उन चीजों का अध्ययन है जो हम वास्तव में अभी तक नहीं कर सकते हैं। अगर हम कुछ कर सकते हैं, और इसे समझ सकते हैं, तो यह एआई नहीं है। परिभाषा के अनुसार, कभी भी व्यापक एआई अनुप्रयोग नहीं रहे होंगे और कभी नहीं होंगे। यह इसे बेकार नहीं बनाता है। –

+0

मैंने बेकार नहीं कहा; मैंने कहा "कोई महत्वपूर्ण उपयोग नहीं है"। मुझे यकीन है कि इसका उपयोग अकादमिक अर्थ में महत्वपूर्ण हो सकता है; सिर्फ एक वाणिज्यिक अर्थ में नहीं। –

+0

यदि आप एआई के रूप में स्वीकार करते हैं तो पैटर्न पहचान (विभिन्न माध्यमों से, तंत्रिका नेटवर्क सहित) और अस्पष्ट तर्क का बहुत महत्वपूर्ण उपयोग होता है। – TrayMan

3

मैंने प्रोलॉग को कॉलेज में अपनी एआई कक्षाओं में ले जाने पर बिल्कुल आकर्षक महसूस किया, लेकिन मैं केवल कुछ हद तक परिस्थितियों के बारे में सोच सकता हूं जहां मैं इसका उपयोग करूंगा आज एआई के बाहर। और पूर्व संध्या n उन परिस्थितियों में, मैं इसका उपयोग नहीं करना चाहूंगा। अंततः मुझे प्रोलॉग "पाने" के लिए काफी समय लगा, और जब मैंने किया, मैंने सोचा कि यह बहुत अच्छा था, लेकिन मैंने तुरंत इसे उपयोगिता की सीमित सीमा देखी।

फिर भी, मैं इसे सीखने की अत्यधिक अनुशंसा करता हूं, अगर किसी अन्य तरीके से प्रोग्रामिंग से संपर्क करना सीखने की तुलना में कोई अन्य कारण नहीं है। कई अलग-अलग लाभ बिंदुओं से किसी समस्या को देखने में सक्षम होने से आपको बिल्कुल बेहतर प्रोग्रामर मिल जाता है।

7

प्रोलॉग के साथ पहली समस्या यह थी कि यह एक तर्क प्रोग्रामिंग भाषा नहीं है। इसमें दो सच्चे मानकों को "सत्य", "झूठा", और "पता नहीं" के तीन मूल्यवान मानक तर्क की कमी है। दूसरे शब्दों में, दो सत्य मान वास्तव में "दिखाए जा सकते हैं" और "दिखाया नहीं जा सकता"। यह प्रोलॉग वास्तविक समस्याओं को "नहीं" के विचार से देता है, जो तार्किक तर्क के लिए बहुत बुनियादी है।

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

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

एक वास्तविक तर्क-आधारित भाषा होना संभव नहीं है जहां प्रोग्रामर चीजें लिख सकता है और वास्तव में परिणामों पर भरोसा कर सकता है। प्रथम क्रम पूर्वानुमान कैलकुस (यानी, चर के साथ तर्क, सत्य-या-झूठे कार्यों, "और", "या", "नहीं", "सभी के लिए", और "मौजूद है") सकारात्मक रूप से अपरिहार्य है। (कारण हैं कि हम सभी संभावित प्रमेय यांत्रिक रूप से उत्पन्न करने के बजाय गणितज्ञों में कॉफी डालना क्यों रखते हैं।) प्रोग्रामर के लिए प्राथमिकता जानने का कोई तरीका नहीं है कि कोई प्रस्तावित प्रस्ताव साबित होगा या नहीं, भले ही प्रोग्रामर पहले से ही जानता हो यह सच या गलत होना है।

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

+0

यह 'रेडक्टियो विज्ञापन बेतुका' है और गोडेल की अपूर्णता प्रमेय जो हमें बताती है कि एक सूत्र के लिए एक (डी) सबूत का अस्तित्व अनिश्चित है, समाप्ति समस्या से निकटता से संबंधित है, जो संकेत देता है कि क्यों स्वचालित प्रमेय साबित करना वास्तव में अभ्यास में काफी अच्छा काम कर सकता है । – TrayMan

+0

प्रोलॉग का कट नियम है, इसलिए इसे विज्ञापन निष्कासन की आवश्यकता नहीं है। क्या आप इसका इस्तेमाल कर रहे हैं? – rjh

+0

@rjh: कट बैकट्रैकिंग को रोकता है। यह किसी भी तरह से एक तार्किक ऑपरेशन नहीं है। यह केवल कुछ सीमित मामलों में अस्वीकृति से निपटने की अनुमति देता है और प्रोग्राम अर्थशास्त्र को एक स्पष्ट तरीके से बदलकर आसानी से गलतियों की ओर जाता है। – TrayMan

9

सादे प्रोलॉग का मेरा प्रभाव यह है कि यह एक खिलौना भाषा है। यह कहना नहीं है कि तर्क प्रोग्रामिंग उपयोगी नहीं हो सकती है। उदाहरण के लिए, Twelf में सरल प्रोग्रामिंग भाषा के लिए अर्थशास्त्र घोषित करना संभव है और घोषणाएं दुभाषिया के रूप में कार्य करती हैं। मैंने λProlog के बारे में कुछ अच्छी बातें भी सुनी हैं।

एक सामान्य उद्देश्य भाषा के रूप में एक तर्क प्रोग्रामिंग भाषा का उपयोग करने की कोशिश करने में मुझे लगता है कि समस्या कुछ हद तक अवधारणा को अच्छी तरह से फिट नहीं करती है। मुझे लगता है कि तर्क प्रोग्रामिंग सुविधाओं को उस भाषा में शामिल करने की आवश्यकता है जिसमें अनिवार्य और कार्यात्मक संरचनाएं हों। कम से कम एक ऐसी भाषा है: Oz, लेकिन मैंने अभी तक इसे आजमाया है।

संपादित करें: एक विचार है कि मैं कुछ समय के लिए प्रयास करना चाहता हूं: प्रोलॉग को परमाणु के रूप में एक संबंधपरक डेटाबेस फ़ीड करें और SQL के बजाय क्वेरी करने के लिए इसका उपयोग करें। मुझे लगता है कि यह एसक्यूएल पर एक बड़ा सुधार होगा।

+1

एसक्यूएल के लिए एक ही विचार के बारे में सोच रहा है। किसी को एक प्रोजेक्ट शुरू करना है :) – Saintali

+2

जहां तक ​​डेटाबेस भाषा का विचार जाता है (और मैंने खुद के सामने भी यह विचार किया था), विकास में वितरित डेटाबेस पर एक भाषा अमूर्तता है जिसने तर्क भाषा पर अपनी क्वेरी भाषा आधारित है । मुझे इसके बारे में बहुत कुछ पता नहीं है, लेकिन इस जवाब के विषय को देखते हुए उल्लेखनीय है। http://en.wikipedia.org/wiki/Datomic – josiah

2

यह नौकरी के लिए सही उपकरण का उपयोग करने का मानक मामला है। आप कुछ स्थितियों में तर्क प्रोग्रामिंग देखते हैं: उन्हें आमतौर पर नियम-आधारित या विशेषज्ञ प्रणालियों जैसे कुछ कहा जाता है।

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

बीटीडब्लू, मैं हमेशा प्रोलॉग का जवाब लगभग हर चीज से प्यार करता हूं "नहीं।"

7

जब हमने प्रोलॉग (प्रोग्रामिंग भाषा कक्षा में केवल कुछ हफ्तों को सीखा, तो मैं शायद ही एक विशेषज्ञ हूं), प्रोफेसर ने यह भी बताया कि आपकी परिभाषाओं के आधार पर, तर्क प्रोग्रामिंग वास्तव में प्रोग्रामिंग नहीं हो सकती है।

जब हम प्रोग्रामिंग कहते हैं, तो हम आम तौर पर 'कंप्यूटर की कार्रवाइयों या निर्देशों को जारी करने' जैसी कुछ चीज़ों का उल्लेख करते हैं। यही जरूरी है कि अनिवार्य या कार्यात्मक प्रोग्रामिंग भाषाएं हों। यही वह "असली" प्रोग्रामिंग भाषा करता है। Prolog, या तर्क प्रोग्रामिंग, वास्तव में ऐसा नहीं करता है। यह एसक्यूएल की तरह है। आप कंप्यूटर से कई सवाल पूछते हैं, बहुत ज्यादा। यह आपके द्वारा पहले किए गए डेटा के आधार पर इसकी योग्यता के सर्वोत्तम उत्तर देगा, लेकिन अन्य प्रोग्रामिंग प्रतिमानों के विपरीत, आप वास्तव में कंप्यूटर को नहीं बता रहे हैं कि क्या करना है।

यह सिर्फ बहुत विशेष है, और सामान्य प्रयोजन प्रोग्रामिंग के लिए अनुकूल नहीं है। और के लिए यह विशेष रूप से आवश्यक नहीं है।

दूसरी तरफ कार्यात्मक प्रोग्रामिंग निश्चित रूप से सामान्य उद्देश्य प्रोग्रामिंग है, और इसका उपयोग किसी भी चीज के लिए नहीं किया जा सकता है, बिना किसी बड़ी समस्या के। यही कारण है कि उत्तरार्द्ध पर पकड़ रहा है, और तर्क प्रोग्रामिंग नहीं है। मुझे लगता है ... :)

+1

प्रोग्रामिंग का प्रकार जिसे आप "असली" कह रहे हैं उसे आम तौर पर "अनिवार्य प्रोग्रामिंग" कहा जाता है। एसक्यूएल और प्रोलॉग "घोषणात्मक प्रोग्रामिंग" के दोनों उदाहरण हैं। http://en.wikipedia.org/wiki/Declarative_programming – rmeador

+1

नहीं, मैं विशेष रूप से अनिवार्य प्रोग्रामिंग के बारे में बात नहीं कर रहा हूं (मैं कार्यात्मक प्रोग्रामिंग भी शामिल करता हूं)। मैं बस यह इंगित कर रहा हूं कि आप इसे कैसे परिभाषित करते हैं, इस पर निर्भर करते हुए, घोषणात्मक भाषाएं प्रोग्रामिंग नहीं हो सकती हैं (एचटीएमएल या एसक्यूएल प्रोग्रामिंग भाषाएं हैं या नहीं) – jalf

10

मैंने अपने प्रोग्रामिंग करियर के लगभग 4 वर्षों में ग्राहक आवश्यकताओं के आधार पर टेलीफोन एक्सचेंजों के लिए हार्डवेयर प्रावधान और कॉन्फ़िगर करने के लिए नियम "विशेषज्ञ प्रणाली" पर काम किया।

यह बहुत सफल रहा था, और जहाँ तक मुझे पता है की तुलना में अधिक 10 साल बाद दैनिक उपयोग में अब भी है। लेकिन प्रोग्रामर ढूंढना जो यह समझ सके कि यह कैसे काम करता है, सिस्टम को विकसित करने से कहीं अधिक काम था।

मुझे लगता है कि इसीलिए दृष्टिकोण नहीं हटाया गया है, क्योंकि कुछ लोगों को तर्कसंगत प्रोग्रामिंग के लिए आवश्यक मानसिकता है जो प्रक्रियात्मक और कार्यात्मक प्रोग्रामिंग की अवधारणाओं को समझ सकते हैं।

तर्क प्रोग्रामिंग भाषाएं "अनुमान इंजन" में अनुमान लगाने के तथ्यों और नियमों को खिलाने के लिए एक तंत्र प्रदान करती हैं, जिसे नए तथ्यों के उत्पादन के लिए दिए गए तथ्यों के नियमों को लागू करने के लिए गति में स्थापित किया जाता है।एक विशेष तर्क भाषा इसके विशेष अनुमान इंजन की ताकत पर खड़ी होती है या गिरती है।

प्रोलॉग के अनुमान इंजन में बहुत ही निष्क्रिय कार्यान्वयन है और यह बहुत अक्षम है। एक लूप में बयान के बहुत सारे लिखकर, अधिकांश प्रक्रियात्मक भाषाओं में एक ही समस्या को और अधिक कुशलता से हल किया जा सकता है।

जिस भाषा को हमने "कॉन्फ़िगरेटर" के लिए चुना है वह डीईसी के नियमवर्क्स था जो अधिक व्यापक रूप से ज्ञात ओपीएस 5 भाषा का परिष्करण है। इसमें Rete Algorithm पर आधारित एक अनुमान इंजन है जो इसे प्रक्रियात्मक दृष्टिकोण से कहीं अधिक कुशल बनाता है।

चूंकि डेक को कॉम्पैक द्वारा निगल लिया गया है जो एचपी द्वारा निगल लिया गया है, रूलेवर्क्स ओपन सोर्स बन गया है और from this web page प्राप्त किया जा सकता है।

यह शर्म की बात है कि ऐसी तकनीकों में अधिक रुचि नहीं है क्योंकि वे अन्यथा अचूक समस्याओं को हल करने के लिए बहुत प्रभावी हो सकते हैं।

8

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

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

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

2

इस चर्चा धागे में एक तर्क प्रोग्रामिंग भाषा के लिए कॉल हैं जो वास्तव में घोषणात्मक है (विवरण किसी भी क्रम में किए जा सकते हैं), और इसका उपयोग एसक्यूएल के प्रतिस्थापन के रूप में डेटाबेस से पूछताछ के लिए किया जा सकता है।

Datalog वह है जो आप खोज रहे हैं। इसका उपयोग डेटा एकीकरण, सुरक्षा अनुप्रयोगों और कार्यक्रम विश्लेषण में किया जाता है, उदाहरण के लिए।

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