गैर-नियतात्मक प्रोग्रामिंग

एक गैर-नियतात्मक प्रोग्रामिंग लैंग्वेज एक प्रोग्रामिंग लैंग्वेज है जो कंप्यूटर प्रोग्राम में कुछ बिंदुओं (जिन्हें चॉइस पॉइंट कहा जाता है) पर नियंत्रण प्रवाह के लिए विभिन्न विकल्प निर्दिष्ट कर सकती है। एक नियमित (कंप्यूटर प्रोग्रामिंग) | if-then कथन के विपरीत, इन विकल्पों के बीच चयन की विधि सीधे प्रोग्रामर द्वारा निर्दिष्ट नहीं की जाती है; प्रोग्राम को सभी विकल्प बिंदुओं पर प्रयुक्त कुछ सामान्य विधि के माध्यम से विकल्पों के बीच रनटाइम (प्रोग्राम जीवनचक्र चरण) पर निर्णय लेना होगा। एक प्रोग्रामर सीमित संख्या में विकल्प निर्दिष्ट करता है, किंतु प्रोग्राम को बाद में उनमें से किसी एक को चुनना होगा। (चुनें, वास्तव में, गैर-नियतात्मक ऑपरेटर के लिए एक विशिष्ट नाम है।) पसंद बिंदुओं का एक हायरार्की बनाया जा सकता है, जिसमें उच्च-स्तरीय विकल्प उन शाखाओं की ओर ले जाते हैं जिनमें निचले स्तर के विकल्प होते हैं।

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

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

यह भी देखें

 * नॉनडेटर्मिनिज्म (बहुविकल्पी)
 * श्रेणी: गैर-नियतात्मक प्रोग्रामिंग लैंग्वेज एँ
 * एंजेलिक गैर-नियतिवाद
 * डेमोनिक गैर-नियतिवाद