एनओपी (कोड)

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

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

किसी एनओपी को मेमोरी तक नहीं पहुंचना चाहिए, क्योंकि इससे मेमोरी में खराबी या पेज में दुर्दशा हो सकती है।

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

कुछ सीपीयू वास्तुकला के लिए एनओपी निर्देश नीचे सूचीबद्ध हैं:

हार्डवेयर डिज़ाइन के दृष्टिकोण से, बस के अनमैप्ड क्षेत्रों को अक्सर शून्य लौटाने के लिए डिज़ाइन किया जाता है; चूंकि एनओपी स्लाइड व्यवहार अक्सर वांछनीय होता है, यह इसे ऑल-जीरोज़ ऑपकोड के साथ कोडिंग करने में पूर्वाग्रह देता है।

कोड
एक कार्य या प्रोग्रामिंग भाषा कथनों का अनुक्रम एक एनओपी या अशक्त कथन है यदि इसका कोई प्रभाव नहीं है। कुछ संदर्भों में कुछ भाषाओं की प्रोग्रामिंग भाषा वाक्य - विन्यास द्वारा शून्य कथनों की आवश्यकता हो सकती है।

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

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

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

उपरोक्त कोड कार्य गेटसीहर को तब तक कॉल करना जारी रखता है जब तक कि यह एक \n (न्यूलाइन) वर्ण नहीं लौटाता है, अनिवार्य रूप से मानक इनपुट के वर्तमान रीडिंग स्थान को अगली पंक्ति की प्रारम्भ में तेजी से अग्रेषित करता है।

फोरट्रान
फोरट्रान में,  स्टेटमेंट का उपयोग कुछ संदर्भों में किया जाता है जैसे कि डीओ लूप में अंतिम स्टेटमेंट, यदपि इसका उपयोग कहीं भी किया जा सकता है, और इसमें कोई कार्यक्षमता नहीं होती है।

जावास्क्रिप्ट
जावास्क्रिप्ट भाषा में कोई अंतर्निहित एनओपी कथन नहीं है। कई कार्यान्वयन संभव हैं: विकल्प, उन स्थितियों में जहां किसी कार्य की आवश्यकता होती है, ये हैं:
 * उपयोग  खाली बयान या   एनओपी (कोड)#सी_एंड_डेरिवेटिव्स उदाहरणों की तरह ही खाली ब्लॉक स्टेटमेंट;
 * उपयोग  या   अभिव्यक्ति को एक पूर्ण कथन के रूप में (एक अभिव्यक्ति कथन) जब पिछली विधियों को वाक्य - विन्यास द्वारा अनुमति नहीं दी जाती है।
 * उपयोग  अंतर्निहित कार्य, जो किसी भी तर्क को स्वीकार करता है और रिटर्न देता है  ;
 * तृतीय-पक्ष लाइब्रेरी में उपलब्ध एनओपी कार्य का उपयोग करें—नीचे देखें;
 * एक कस्टम एनओपी कार्य को परिभाषित करें, जैसा कि निम्नलिखित उदाहरण में है (ईएस6 एरो कार्य वाक्य - विन्यास का उपयोग करके):

एंगुलरजेएस
कोणीयजेएस फ्रेमवर्क कोणीय.नहीं कार्य प्रदान करता है जो कोई ऑपरेशन नहीं करता है।

जेक्वेरी
जेक्वेरी लाइब्रेरी एक कार्य प्रदान करती है, जो कुछ नहीं करता.

लोदाश
लॉडैश लाइब्रेरी एक कार्य प्रदान करती है, जो अपरिभाषित लौटाता है और कुछ नहीं करता।

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

इसके अलावा, एक ब्लॉक जिसमें सम्मिलित है   कोई कार्रवाई न होने का संकेत देने के लिए प्लेसहोल्डर के रूप में उपयोग किया जा सकता है, भले ही इसे किसी अन्य आरंभ/समाप्ति ब्लॉक के अंदर रखा गया हो।

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

शेल स्क्रिप्टिंग (बैश, ज़ेडएसएच, आदि)
' ' [कोलन] कमांड एक शेल बिल्टिन है जिसका एनओपी (कुछ न करने वाला ऑपरेशन) के समान प्रभाव होता है। यह तकनीकी रूप से एनओपी नहीं है, क्योंकि यह विशेष पैरामीटर $? को बदल देता है। (अंतिम कमांड की निकास स्थिति) से 0. इसे 'सही' में निर्मित शेल का पर्याय माना जा सकता है, और इसकी निकास स्थिति सत्य (0) है।

टेक्स मैक्रो भाषा (सीओएनमूलपाठ, लाटेकस, आदि)
टेक्स टाइपोग्राफ़िकल सिस्टम की मैक्रो भाषा में है  आज्ञा। यह अपने आप में कुछ नहीं करता है, लेकिन इसका उपयोग तत्काल पूर्ववर्ती कमांड को किसी भी बाद के टोकन को पार्स करने से रोकने के लिए किया जा सकता है।

एनओपी प्रोटोकॉल कमांड
टेलनेट जैसे कई प्रोटोकॉल (कंप्यूटिंग) में एक एनओपी कमांड सम्मिलित होता है जिसे क्लाइंट किसी अन्य कार्रवाई का अनुरोध किए बिना सर्वर से प्रतिक्रिया का अनुरोध करने के लिए जारी कर सकता है। इस तरह के कमांड का उपयोग कीपलाइव या सर्वर रिस्पॉन्सिव होने के लिए किया जा सकता है। एक नहीं कमांड निम्नलिखित प्रोटोकॉल का हिस्सा है (यह एक आंशिक सूची है):
 * टेलनेट
 * फाइल ट्रांसफर प्रोटोकॉल
 * सरल डाक स्थानांतरण प्रोटोकॉल
 * एक्स विंडो कोर प्रोटोकॉल
 * डाकघर प्रोटोकॉल
 * नेटवर्क समाचार स्थानांतरण प्रोटोकॉल
 * फिंगर प्रोटोकॉल
 * इंटरनेट संदेश एक्सेस प्रोटोकॉल
 * बिटटोरेंट (प्रोटोकॉल)

ध्यान दें कि सूचीबद्ध अन्य प्रोटोकॉल के विपरीत, आईएमएपी4 नहीं कमांड का एक विशिष्ट उद्देश्य है - यह सर्वर को क्लाइंट को कोई भी लंबित अधिसूचना भेजने की अनुमति देता है।

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

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

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

यह भी देखें

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