अपरिवर्तनीय-आधारित प्रोग्रामिंग: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
'''अपरिवर्तनीय-आधारित प्रोग्रामिंग (इनवेरिएंट-बेस्ड प्रोग्रामिंग)'''<ref>Back, Ralph-Johan: [https://hal.archives-ouvertes.fr/hal-00477903/document Invariant Based Programming: Basic approach and Teaching Experience], Formal Aspects of Computing, 14 February 2008, ISSN 0934-5043 (Print) 1433-299X (Online)</ref> एक प्रोग्रामिंग पद्धति है जहां वास्तविक प्रोग्राम स्टेटमेंट से पहले विनिर्देश और इनवेरिएंट लिखे जाते हैं। प्रोग्रामिंग प्रक्रिया के दौरान इनवेरिएंट को लिखने के कई फायदे हैं: प्रोग्रामर को वास्तव में इसे लागू करने से पहले प्रोग्राम व्यवहार के बारे में अपने इरादे स्पष्ट करने की आवश्यकता होती है, और सामान्य प्रोग्रामिंग त्रुटियों को पकड़ने के लिए निष्पादन के दौरान इनवेरिएंट का गतिशील रूप से मूल्यांकन किया जा सकता है। इसके अलावा, यदि पर्याप्त रूप से मजबूत हो, तो प्रोग्राम कथनों के औपचारिक शब्दार्थ के आधार पर प्रोग्राम की शुद्धता को साबित करने के लिए इनवेरिएंट का उपयोग किया जा सकता है। गैर-तुच्छ कार्यक्रमों के पूर्ण सत्यापन के लिए आम तौर पर एक शक्तिशाली औपचारिक प्रूफ सिस्टम से जुड़ी एक संयुक्त प्रोग्रामिंग और विनिर्देश भाषा की आवश्यकता होगी। इस स्तिथि में, साक्ष्यों का उच्च स्तर का स्वचालन भी संभव है।
'''अपरिवर्तनीय-आधारित प्रोग्रामिंग (इनवेरिएंट-बेस्ड प्रोग्रामिंग)'''<ref>Back, Ralph-Johan: [https://hal.archives-ouvertes.fr/hal-00477903/document Invariant Based Programming: Basic approach and Teaching Experience], Formal Aspects of Computing, 14 February 2008, ISSN 0934-5043 (Print) 1433-299X (Online)</ref> एक प्रोग्रामिंग पद्धति है जहां वास्तविक प्रोग्राम स्टेटमेंट से पहले विनिर्देश और इनवेरिएंट लिखे जाते हैं। प्रोग्रामिंग प्रक्रिया के दौरान इनवेरिएंट को लिखने के कई फायदे हैं: प्रोग्रामर को वास्तव में इसे लागू करने से पहले प्रोग्राम व्यवहार के बारे में अपने इरादे स्पष्ट करने की आवश्यकता होती है, और सामान्य प्रोग्रामिंग त्रुटियों को पकड़ने के लिए निष्पादन के दौरान इनवेरिएंट का गतिशील रूप से मूल्यांकन किया जा सकता है। इसके अलावा, यदि पर्याप्त रूप से मजबूत हो, तो प्रोग्राम कथनों के औपचारिक शब्दार्थ के आधार पर प्रोग्राम की शुद्धता को साबित करने के लिए इनवेरिएंट का उपयोग किया जा सकता है। गैर-तुच्छ कार्यक्रमों के पूर्ण सत्यापन के लिए सामान्यतः शक्तिशाली औपचारिक प्रूफ सिस्टम से जुड़ी एक संयुक्त प्रोग्रामिंग और विनिर्देश लैंग्वेज की आवश्यकता होगी। इस स्तिथि में, साक्ष्यों का उच्च स्तर का स्वचालन भी संभव है।


अधिकांश मौजूदा प्रोग्रामिंग भाषाओं में मुख्य आयोजन संरचनाएँ कण्ट्रोल फ्लो ब्लॉक हैं जैसे कि <code>for</code>लूप्स, <code>while</code>व्हाइल लूप्स, <code>and if</code>स्टेटमेंट्स। ऐसी भाषाएँ इनवेरिएंट-प्रथम प्रोग्रामिंग के लिए आदर्श नहीं हो सकती हैं, क्योंकि वे प्रोग्रामर को इनवेरिएंट लिखने से पहले नियंत्रण प्रवाह के बारे में निर्णय लेने के लिए बाधित करती हैं। इसके अतिरिक्ति, अधिकांश प्रोग्रामिंग भाषाओं में विशिष्टताओं और आविष्कारों को लिखने के लिए अच्छा समर्थन नहीं है, क्योंकि उनमें क्वांटिफायर ऑपरेटरों की कमी है और कोई आमतौर पर उच्च-क्रम गुणों को व्यक्त नहीं कर सकता है।
अधिकांश प्रचलित प्रोग्रामिंग लैंग्वेज में मुख्य आयोजन संरचनाएँ कण्ट्रोल फ्लो ब्लॉक हैं जैसे कि <code>for</code>लूप्स, <code>while</code>व्हाइल लूप्स, <code>and if</code>स्टेटमेंट्स। ऐसी लैंग्वेज इनवेरिएंट-प्रथम प्रोग्रामिंग के लिए आदर्श नहीं हो सकती हैं, क्योंकि वे प्रोग्रामर को इनवेरिएंट लिखने से पहले नियंत्रण प्रवाह के बारे में निर्णय लेने के लिए बाधित करती हैं। इसके अतिरिक्ति, अधिकांश प्रोग्रामिंग लैंग्वेज में विशिष्टताओं और आविष्कारों को लिखने के लिए अच्छा समर्थन नहीं है, क्योंकि उनमें क्वांटिफायर ऑपरेटरों की कमी है और कोई सामान्यतः उच्च-क्रम गुणों को व्यक्त नहीं कर सकता है।


कार्यक्रम को उसके प्रमाण के साथ विकसित करने का विचार एड्सगर डिज्क्स्ट्रा|ई.डब्ल्यू. से उत्पन्न हुआ। दिज्क्स्ट्रा। दरअसल प्रोग्राम स्टेटमेंट से पहले इनवेरिएंट लिखने पर एम.एच. द्वारा कई अलग-अलग रूपों में विचार किया गया है। वैन एम्डेन, जॉन सी. रेनॉल्ड्स|जे.सी. रेनॉल्ड्स और [[राल्फ-जोहान वापस]]|आर-जे वापस।
कार्यक्रम को उसके प्रमाण के साथ विकसित करने का विचार ई.डब्ल्यू. डिज्क्स्ट्रा से उत्पन्न हुआ था। वास्तव में प्रोग्राम स्टेटमेंट से पहले इनवेरियंट लिखने पर एम.एच. वैन एमडेन, जे.सी. रेनॉल्ड्स और आर.जे. बैक ने कई अलग-अलग रूपों में विचार किया गया था।


== यह भी देखें ==
== यह भी देखें ==
* [[एफिल (प्रोग्रामिंग भाषा)]]
* [[एफिल (प्रोग्रामिंग भाषा)|एफिल (प्रोग्रामिंग लैंग्वेज)]]


== टिप्पणियाँ ==
== टिप्पणियाँ ==

Revision as of 07:58, 4 August 2023

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

अधिकांश प्रचलित प्रोग्रामिंग लैंग्वेज में मुख्य आयोजन संरचनाएँ कण्ट्रोल फ्लो ब्लॉक हैं जैसे कि forलूप्स, whileव्हाइल लूप्स, and ifस्टेटमेंट्स। ऐसी लैंग्वेज इनवेरिएंट-प्रथम प्रोग्रामिंग के लिए आदर्श नहीं हो सकती हैं, क्योंकि वे प्रोग्रामर को इनवेरिएंट लिखने से पहले नियंत्रण प्रवाह के बारे में निर्णय लेने के लिए बाधित करती हैं। इसके अतिरिक्ति, अधिकांश प्रोग्रामिंग लैंग्वेज में विशिष्टताओं और आविष्कारों को लिखने के लिए अच्छा समर्थन नहीं है, क्योंकि उनमें क्वांटिफायर ऑपरेटरों की कमी है और कोई सामान्यतः उच्च-क्रम गुणों को व्यक्त नहीं कर सकता है।

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

यह भी देखें

टिप्पणियाँ

  1. Back, Ralph-Johan: Invariant Based Programming: Basic approach and Teaching Experience, Formal Aspects of Computing, 14 February 2008, ISSN 0934-5043 (Print) 1433-299X (Online)

[Category:Programming paradig