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

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

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

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

यह भी देखें

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