अभिव्यक्ति (कंप्यूटर विज्ञान): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{Short description|Syntactic entity in a programming language with a determinable value}}
{{Short description|Syntactic entity in a programming language with a determinable value}}
[[कंप्यूटर विज्ञान]] में, एक अभिव्यक्ति एक [[प्रोग्रामिंग भाषा]] में एक [[सिंटेक्स (प्रोग्रामिंग भाषाएं)]] इकाई है जिसका मूल्यांकन इसके मूल्य को निर्धारित करने के लिए किया जा सकता है।<ref>[[John C. Mitchell|Mitchell, J.]] (2002). Concepts in Programming Languages. Cambridge: Cambridge University Press, ''3.4.1 Statements and Expressions'', p. 26</ref> यह एक या एक से अधिक स्थिरांक (प्रोग्रामिंग), [[चर (प्रोग्रामिंग)]], [[समारोह (प्रोग्रामिंग)]] और [[ऑपरेटर (प्रोग्रामिंग)]] का एक संयोजन है जो प्रोग्रामिंग भाषा की व्याख्या करता है (इसके पूर्वता और संघ के विशेष नियमों के अनुसार) और उत्पादन करने के लिए गणना करता है ("वापसी के लिए", एक [[राज्य (कंप्यूटर विज्ञान)]] वातावरण में) एक और मूल्य। [[गणितीय अभिव्यक्ति]]यों के लिए इस प्रक्रिया को मूल्यांकन कहलाती है।
[[कंप्यूटर विज्ञान]] में, एक अभिव्यक्ति एक [[प्रोग्रामिंग भाषा]] में एक [[सिंटेक्स (प्रोग्रामिंग भाषाएं)]] इकाई है जिसका मूल्यांकन इसके मूल्य को निर्धारित करने के लिए किया जा सकता है।<ref>[[John C. Mitchell|Mitchell, J.]] (2002). Concepts in Programming Languages. Cambridge: Cambridge University Press, ''3.4.1 Statements and Expressions'', p. 26</ref> यह एक या एक से अधिक स्थिरांक (प्रोग्रामिंग), [[चर (प्रोग्रामिंग)]], [[समारोह (प्रोग्रामिंग)|फंक्शन (प्रोग्रामिंग)]] और [[ऑपरेटर (प्रोग्रामिंग)]] का एक संयोजन है जो प्रोग्रामिंग भाषा की व्याख्या करता है (इसके पूर्वता और संघ के विशेष नियमों के अनुसार) और उत्पादन करने के लिए गणना करता है ("वापसी के लिए", एक [[राज्य (कंप्यूटर विज्ञान)|स्थिति (कंप्यूटर विज्ञान)]] वातावरण में) एक और मूल्य [[गणितीय अभिव्यक्ति]]यों के लिए इस प्रक्रिया को मूल्यांकन कहलाती है।


सरल सेटिंग्स में, परिणामी मूल्य सामान्य रूप से विभिन्न [[आदिम डेटा प्रकार]]ों में से एक होता है, जैसे संख्यात्मक, [[स्ट्रिंग (कंप्यूटर विज्ञान)]], [[बूलियन अभिव्यक्ति]], [[जटिल डेटा प्रकार]] या अन्य प्रकार है।
सरल सेटिंग्स में, परिणामी मूल्य सामान्य रूप से विभिन्न [[आदिम डेटा प्रकार]] में से एक होता है, जैसे संख्यात्मक, [[स्ट्रिंग (कंप्यूटर विज्ञान)]], [[बूलियन अभिव्यक्ति]], [[जटिल डेटा प्रकार]] या अन्य प्रकार है।


अभिव्यक्ति अक्सर कथन (कंप्यूटर विज्ञान) के विपरीत माना जाता है - एक वाक्य-विन्यास इकाई जिसका कोई मूल्य नहीं है (एक निर्देश)।
अभिव्यक्ति प्रायः कथन (कंप्यूटर विज्ञान) के विपरीत माना जाता है - एक वाक्य-विन्यास इकाई जिसका कोई मूल्य नहीं है (एक निर्देश)।


== उदाहरण ==
== उदाहरण ==


उदाहरण के लिए, <code>2 + 3</code> एक अंकगणितीय और प्रोग्रामिंग अभिव्यक्ति दोनों है, जो <code>5</code>का मूल्यांकन करता है। एक चर एक अभिव्यक्ति है क्योंकि यह मेमोरी में मान को दर्शाता है, इसलिए <code>y + 6</code> भी एक अभिव्यक्ति है। [[रिलेशनल ऑपरेटर]] का एक उदाहरण है <code>4 ≠ 4</code>, जो <code>false</code>का मूल्यांकन करता है।<ref>[https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Expressions Javascript expressions, Mozilla] {{Webarchive|url=https://web.archive.org/web/20120309174344/https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Expressions |date=2012-03-09 }} Accessed July 6, 2009</ref><ref>[https://www.cs.drexel.edu/~rweaver/COURSES/ISTC-2/TOPICS/expr.html Programming in C] {{Webarchive|url=https://web.archive.org/web/20150109162605/https://www.cs.drexel.edu/~rweaver/COURSES/ISTC-2/TOPICS/expr.html |date=2015-01-09 }} Accessed July 6, 2009</ref>
उदाहरण के लिए, <code>2 + 3</code> एक अंकगणितीय और प्रोग्रामिंग अभिव्यक्ति दोनों है, जो <code>5</code>का मूल्यांकन करता है। एक चर एक अभिव्यक्ति है क्योंकि यह मेमोरी में मान को दर्शाता है, इसलिए <code>y + 6</code> भी एक अभिव्यक्ति है। [[रिलेशनल ऑपरेटर]] का एक उदाहरण है <code>4 ≠ 4</code>, जो <code>false</code>का मूल्यांकन करता है।<ref>[https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Expressions Javascript expressions, Mozilla] {{Webarchive|url=https://web.archive.org/web/20120309174344/https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Expressions |date=2012-03-09 }} Accessed July 6, 2009</ref><ref>[https://www.cs.drexel.edu/~rweaver/COURSES/ISTC-2/TOPICS/expr.html Programming in C] {{Webarchive|url=https://web.archive.org/web/20150109162605/https://www.cs.drexel.edu/~rweaver/COURSES/ISTC-2/TOPICS/expr.html |date=2015-01-09 }} Accessed July 6, 2009</ref>


 
== परिणाम प्रकार के रूप में शून्य ==
== परिणाम प्रकार == के रूप में शून्य
[[सी (प्रोग्रामिंग भाषा)|C (प्रोग्रामिंग भाषा)]] और अधिकांश सी-व्युत्पन्न भाषाओं में, [[शून्य प्रकार]] के रिटर्न प्रकार वाले फ़ंक्शन के लिए कॉल एक वैध अभिव्यक्ति है।<ref>
 
[[सी (प्रोग्रामिंग भाषा)]] और अधिकांश सी-व्युत्पन्न भाषाओं में, [[शून्य प्रकार]] के रिटर्न प्रकार वाले फ़ंक्शन के लिए कॉल एक वैध अभिव्यक्ति है।<ref>
[http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf ISO/IEC 9899:1999] section 6.3.2.2, accessed August 31, 2009
[http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf ISO/IEC 9899:1999] section 6.3.2.2, accessed August 31, 2009
</ref>
</ref> प्रकार के शून्य के मान का उपयोग नहीं किया जा सकता है, इसलिए ऐसी अभिव्यक्ति का मान सदैव फेंक दिया जाता है।
प्रकार के शून्य के मान का उपयोग नहीं किया जा सकता है, इसलिए ऐसी अभिव्यक्ति का मान हमेशा फेंक दिया जाता है।


== दुष्प्रभाव और उन्मूलन ==
== दुष्प्रभाव और उन्मूलन ==


कई प्रोग्रामिंग भाषाओं में एक फ़ंक्शन, और इसलिए एक फ़ंक्शन युक्त अभिव्यक्ति का [[साइड इफेक्ट (कंप्यूटर विज्ञान)]] हो सकता है। साइड इफेक्ट वाली अभिव्यक्ति में सामान्य रूप से संदर्भित पारदर्शिता का गुण नहीं होती है। कई भाषाओं में (जैसे C++), अभिव्यक्ति को अभिव्यक्ति [[बयान (प्रोग्रामिंग)|बयान]] [[बयान (प्रोग्रामिंग)|(प्रोग्रामिंग)]] कथन में बदलने के लिए अभिव्यक्ति को अर्धविराम (<code>;</code>)से समाप्त किया जा सकता है। यह कार्यान्वयन को केवल इसके दुष्प्रभावों के लिए अभिव्यक्ति का मूल्यांकन करने और अभिव्यक्ति के परिणाम की उपेक्षा करने के लिए कहता है (उदा। {{code|x+1;}}) जब तक कि यह एक अभिव्यक्ति बयान का एक हिस्सा नहीं है जो साइड-इफेक्ट्स को प्रेरित करता है (उदाहरण के लिए {{code|1=y=x+1;}} या {{code|func1(func2());}}).
कई प्रोग्रामिंग भाषाओं में एक फ़ंक्शन, और इसलिए एक फ़ंक्शन युक्त अभिव्यक्ति का [[साइड इफेक्ट (कंप्यूटर विज्ञान)|दुष्प्रभाव (कंप्यूटर विज्ञान)]] हो सकता है। दुष्प्रभाव वाली अभिव्यक्ति में सामान्य रूप से संदर्भित पारदर्शिता का गुण नहीं होती है। कई भाषाओं में (जैसे C++), अभिव्यक्ति को अभिव्यक्ति [[बयान (प्रोग्रामिंग)|(प्रोग्रामिंग)]] कथन में बदलने के लिए अभिव्यक्ति को अर्धविराम (<code>;</code>)से समाप्त किया जा सकता है। यह कार्यान्वयन को केवल इसके दुष्प्रभावों के लिए अभिव्यक्ति का मूल्यांकन करने और अभिव्यक्ति के परिणाम की उपेक्षा करने के लिए कहता है (उदा। {{code|x+1;}}) जब तक कि यह एक अभिव्यक्ति प्रोग्रामिंग का एक हिस्सा नहीं है जो साइड-इफेक्ट्स को प्रेरित करता है (उदाहरण के लिए {{code|1=y=x+1;}} या {{code|func1(func2());}}).


===चेतावनी ===
===चेतावनी ===
Line 26: Line 23:
ध्यान दें कि दुष्प्रभाव की औपचारिक धारणा चल रहे कार्यक्रम की अमूर्त स्थिति में बदलाव है।
ध्यान दें कि दुष्प्रभाव की औपचारिक धारणा चल रहे कार्यक्रम की अमूर्त स्थिति में बदलाव है।


दुष्प्रभाव का एक अन्य वर्ग संगणक प्रणाली की ठोस स्थिति में परिवर्तन है, जैसे कैश मेमोरी में डेटा लोड करना। जिन भाषाओं को अक्सर "दुष्प्रभाव-मुक्त" के रूप में वर्णित किया जाता है, उनके सामान्य रूप से अभी भी ठोस दुष्प्रभाव होते हैं जिनका शोषण किया जा सकता है, उदाहरण के लिए, साइड-चैनल हमलों में।
दुष्प्रभाव का एक अन्य वर्ग संगणक प्रणाली की ठोस स्थिति में परिवर्तन है, जैसे कैश मेमोरी में डेटा लोड करना। जिन भाषाओं को प्रायः "दुष्प्रभाव-मुक्त" के रूप में वर्णित किया जाता है, उनके सामान्य रूप से अभी भी ठोस दुष्प्रभाव होते हैं जिनका शोषण किया जा सकता है, उदाहरण के लिए, साइड-चैनल हमलों में।


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


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


== यह भी देखें ==
== यह भी देखें ==

Revision as of 12:53, 28 February 2023

कंप्यूटर विज्ञान में, एक अभिव्यक्ति एक प्रोग्रामिंग भाषा में एक सिंटेक्स (प्रोग्रामिंग भाषाएं) इकाई है जिसका मूल्यांकन इसके मूल्य को निर्धारित करने के लिए किया जा सकता है।[1] यह एक या एक से अधिक स्थिरांक (प्रोग्रामिंग), चर (प्रोग्रामिंग), फंक्शन (प्रोग्रामिंग) और ऑपरेटर (प्रोग्रामिंग) का एक संयोजन है जो प्रोग्रामिंग भाषा की व्याख्या करता है (इसके पूर्वता और संघ के विशेष नियमों के अनुसार) और उत्पादन करने के लिए गणना करता है ("वापसी के लिए", एक स्थिति (कंप्यूटर विज्ञान) वातावरण में) एक और मूल्य गणितीय अभिव्यक्तियों के लिए इस प्रक्रिया को मूल्यांकन कहलाती है।

सरल सेटिंग्स में, परिणामी मूल्य सामान्य रूप से विभिन्न आदिम डेटा प्रकार में से एक होता है, जैसे संख्यात्मक, स्ट्रिंग (कंप्यूटर विज्ञान), बूलियन अभिव्यक्ति, जटिल डेटा प्रकार या अन्य प्रकार है।

अभिव्यक्ति प्रायः कथन (कंप्यूटर विज्ञान) के विपरीत माना जाता है - एक वाक्य-विन्यास इकाई जिसका कोई मूल्य नहीं है (एक निर्देश)।

उदाहरण

उदाहरण के लिए, 2 + 3 एक अंकगणितीय और प्रोग्रामिंग अभिव्यक्ति दोनों है, जो 5का मूल्यांकन करता है। एक चर एक अभिव्यक्ति है क्योंकि यह मेमोरी में मान को दर्शाता है, इसलिए y + 6 भी एक अभिव्यक्ति है। रिलेशनल ऑपरेटर का एक उदाहरण है 4 ≠ 4, जो falseका मूल्यांकन करता है।[2][3]

परिणाम प्रकार के रूप में शून्य

C (प्रोग्रामिंग भाषा) और अधिकांश सी-व्युत्पन्न भाषाओं में, शून्य प्रकार के रिटर्न प्रकार वाले फ़ंक्शन के लिए कॉल एक वैध अभिव्यक्ति है।[4] प्रकार के शून्य के मान का उपयोग नहीं किया जा सकता है, इसलिए ऐसी अभिव्यक्ति का मान सदैव फेंक दिया जाता है।

दुष्प्रभाव और उन्मूलन

कई प्रोग्रामिंग भाषाओं में एक फ़ंक्शन, और इसलिए एक फ़ंक्शन युक्त अभिव्यक्ति का दुष्प्रभाव (कंप्यूटर विज्ञान) हो सकता है। दुष्प्रभाव वाली अभिव्यक्ति में सामान्य रूप से संदर्भित पारदर्शिता का गुण नहीं होती है। कई भाषाओं में (जैसे C++), अभिव्यक्ति को अभिव्यक्ति (प्रोग्रामिंग) कथन में बदलने के लिए अभिव्यक्ति को अर्धविराम (;)से समाप्त किया जा सकता है। यह कार्यान्वयन को केवल इसके दुष्प्रभावों के लिए अभिव्यक्ति का मूल्यांकन करने और अभिव्यक्ति के परिणाम की उपेक्षा करने के लिए कहता है (उदा। x+1;) जब तक कि यह एक अभिव्यक्ति प्रोग्रामिंग का एक हिस्सा नहीं है जो साइड-इफेक्ट्स को प्रेरित करता है (उदाहरण के लिए y=x+1; या func1(func2());).

चेतावनी

ध्यान दें कि दुष्प्रभाव की औपचारिक धारणा चल रहे कार्यक्रम की अमूर्त स्थिति में बदलाव है।

दुष्प्रभाव का एक अन्य वर्ग संगणक प्रणाली की ठोस स्थिति में परिवर्तन है, जैसे कैश मेमोरी में डेटा लोड करना। जिन भाषाओं को प्रायः "दुष्प्रभाव-मुक्त" के रूप में वर्णित किया जाता है, उनके सामान्य रूप से अभी भी ठोस दुष्प्रभाव होते हैं जिनका शोषण किया जा सकता है, उदाहरण के लिए, साइड-चैनल हमलों में।

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

यह विशेष प्रोग्रामिंग भाषा विनिर्देश पर निर्भर करता है कि क्या बिना सार दुष्प्रभाव वाली अभिव्यक्ति प्रोसेसिंग वातावरण द्वारा निष्पादन पथ से प्रोग्राम अनुकूलन कर सकती है जिसमें अभिव्यक्ति का मूल्यांकन किया जाता है।

यह भी देखें

संदर्भ

  1. Mitchell, J. (2002). Concepts in Programming Languages. Cambridge: Cambridge University Press, 3.4.1 Statements and Expressions, p. 26
  2. Javascript expressions, Mozilla Archived 2012-03-09 at the Wayback Machine Accessed July 6, 2009
  3. Programming in C Archived 2015-01-09 at the Wayback Machine Accessed July 6, 2009
  4. ISO/IEC 9899:1999 section 6.3.2.2, accessed August 31, 2009


बाहरी संबंध

  • This article is based on material taken from Expression at the Free On-line Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later.