नियम के विशिष्ट अर्थ क्या हैं: कार्य, तरीके, प्रक्रियाएं, और सबरूटीन्स?


11

मैं सोच रहा हूं कि कोड के संबंधित भागों को समूहीकृत करने के लिए हम शब्दावली में क्या विशिष्ट अंतर हैं। मैंने कभी-कभी ऐसे शब्दों का इस्तेमाल किया है जो परस्पर रूप से उपयोग किए गए हैं: कई ओओ भाषाएं भी एक विधि को परिभाषित करने के लिए "फ़ंक्शन" का उपयोग करती हैं। (क्यों?)

यदि आप सटीक होना चाहते हैं, तो प्रत्येक के विशिष्ट अर्थ क्या हैं? या यह सिर्फ जो भी प्रत्येक भाषा इसे चुनने का विकल्प चुनती है?


केवल दो भाषाओं के बारे में मुझे पता है कि functionविधियों के लिए उपयोग जावास्क्रिप्ट और PHP हैं। दोनों गैर-विधियों (मुक्त कार्यों) के लिए एक ही कीवर्ड का उपयोग करते हैं, और जावास्क्रिप्ट के मामले में वास्तव में कार्यों और विधियों के बीच कोई अंतर नहीं है, कम से कम भाषा के स्तर पर नहीं।

उदाहरण: में VB.Net Subएक है Functionएक वापसी मान के बिना। में Pythonआप एक समारोह है कि किसी भी वर्ग का हिस्सा नहीं है हो सकता है, इसलिए यह एक तरीका नहीं है। आप फ़ंक्शन को फ़ंक्शन के भीतर भी घोषित कर सकते हैं, और आप ऐसा C # में भी कर सकते हैं। कभी-कभी उनके पास एक ही कारण के लिए अलग-अलग नाम होते हैं जो सेब और अनानास करते हैं: क्योंकि वे अलग हैं।
जॉब

आपने अब तक क्या पाया है जो आपको लगता है कि एक विसंगति है?
जेएफओ

जवाबों:


20
  • सबप्रोग्राम, सबरूटीन
    "सबरूटीन" संभवतः असेंबली भाषा से आता है। कुछ प्रोसेसर में कोड को व्यवस्थित करने और कोड के सामान्य वर्गों का पुन: उपयोग करने के तरीके के रूप में उप-पाठ का समर्थन करने के निर्देश शामिल हैं। उदाहरण के लिए, 6502 प्रोसेसर में जेएसआर (सबरूटीन पर कूद) और आरटीएस (सबरूटीन से वापसी) निर्देश थे। मुझे याद है कि संरचित प्रोग्रामिंग में भी इसका बहुत उपयोग किया जा रहा है, जिसमें एक प्रोग्राम कोड की इकाइयों का एक पदानुक्रम है, जिन्हें कभी-कभी सबरूटीन या उपप्रोग्राम कहा जाता था। IMO, ये कोड की कुछ इकाई के लिए सबसे सामान्य शब्द हैं जिन पर नियंत्रण दिए गए कार्य को पूरा करने के उद्देश्य से अस्थायी रूप से स्थानांतरित किया जाता है।

  • फ़ंक्शन, प्रक्रिया
    ये अक्सर इंटरचेंज के रूप में उपयोग की जाती हैं, लेकिन कुछ भाषाओं में एक अंतर है। पास्कल में, एक फ़ंक्शन एक उपप्रोग्राम है जो एक मान लौटाता है, जबकि एक प्रक्रिया एक उपप्रोग्राम है जो नहीं करता है। सी और संबंधित भाषाओं में, प्रत्येक उपप्रोग्राम में एक वापसी प्रकार होता है (भले ही यह हो void), इसलिए कोई अंतर नहीं है।

  • विधि, सदस्य फ़ंक्शन
    ये एक ही चीज़ के दो नाम हैं - अनिवार्य रूप से एक फ़ंक्शन जो किसी दिए गए वर्ग या ऑब्जेक्ट के साथ जुड़ा हुआ है।

  • ऑपरेटर
    हर भाषा में अंतर्निहित ऑपरेटरों का एक सेट होता है। कुछ भाषाओं में, जैसे कि C ++, ऑपरेटर ऐसे कार्य हैं जिन्हें ओवरराइड किया जा सकता है (अर्थात प्रतिस्थापित) और / या अतिभारित (यानी नए प्रकारों के लिए परिभाषित)।

  • अनाम फ़ंक्शन
    यह बिना किसी नाम के फ़ंक्शन को संदर्भित करता है। अनाम फ़ंक्शंस अनिवार्य रूप से कोड के ब्लॉक होते हैं जिन्हें चर के लिए सौंपा जा सकता है या बाद के उपयोग के लिए मापदंडों के रूप में पारित किया जा सकता है, उदाहरण के लिए एक पूर्ण दिनचर्या के रूप में।

  • क्लोजर, लैम्ब्डा एक्सप्रेशन, ब्लॉक
    ए क्लोजर कोड का एक हिस्सा है जो चर के एक सेट से जुड़ा होता है। मुझे लगता है कि अनाम कार्यों के साथ-साथ संदर्भ भी बंद हो गए।


4
सभी भाषाएं बिल्ट-इन ऑपरेटरों के साथ नहीं आती हैं। कुछ, जैसे स्कीम और हास्केल, बस आपको '+' या '>> =' जैसे नामों से कार्यों को परिभाषित करने की अनुमति देता है। इसके अलावा, आपको संभवतः कुछ भाषाओं (जैसे स्कीम), "फ़ंक्शन" से तात्पर्य संदर्भात्मक पारदर्शिता से है। अन्यथा, महान जवाब।
तिखन जेल्विस

अब तक मैं याद कर सकता हूं कि "ऑपरेटरों" का उपयोग ज्यादातर 2 तर्कों वाले कार्यों के लिए किया गया था। वे इन्फिक्स (तर्कों के बीच ऑपरेटर:) थे 2 + 2। 1-arg जैसे ++arg(उपसर्ग) या arg++( उपसर्ग) जैसे छोटे अपवाद हैं । हालाँकि, मैंने कई पोस्टफ़िक्स ऑपरेटरों को नहीं देखा है ..
Darek Nzadza

-1

यह भाषाओं पर निर्भर करता है कि आप उनके साथ क्या कर सकते हैं

  • क्या आपको एक भेद की आवश्यकता है
  • क्या सिंटैक्स में कोई अंतर है, या क्या यह केवल सुविधा है, जब कोड के बारे में बात की जाती है

AFAIK, बेसिक में, यदि आप कुछ कहते हैं, जो कुछ भी नहीं लौटाता है, लेकिन साइड इफेक्ट के साथ एक काम करता है, जैसे मुद्रण, फ़ाइल लिखना या वैश्विक चर बदलना, इसे एक प्रक्रिया कहा जाता था।

यदि यह कुछ देता है, तो इसे एक फ़ंक्शन कहा जाता था।

जावा जैसी ओओपी-भाषा में मैं शायद ही कभी 'फ़ंक्शन' शब्द से मिलता था, लेकिन 'विधि', और यह सिखाया गया था कि फ़ंक्शंस ऐसी चीजें हैं जो वैश्विक हैं और सभी को बुलाया जा सकता है।

कार्यात्मक और ओओपी-भाषा स्कैला में, एक विधि को फ़ंक्शन नहीं कहा जाता है, लेकिन आप इस तरह की चीज़ को किसी अन्य विधि से पारित कर सकते हैं, और फिर यह एक फ़ंक्शन बन जाता है।

एक सबरूटीन एक रूटीन है, जिसे मेरी समझ में एक और रूटीन कहा जाता है।

सारांश में, मुझे नहीं लगता कि सभी भाषाओं और अधिक प्रतिमानों पर एक संक्षिप्त परिभाषा है। आपको विशिष्ट संस्कृति पर विचार करना होगा, आप इसमें हैं, यदि आप इन शब्दों का उपयोग करते हैं - तो शायद आपको पहले अपनी परिभाषा प्रस्तुत करनी चाहिए।


-1

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.