कार्यों के बजाय , सबरूटीन के साथ शुरू करें । उन्हें बताएं कि एक कार्यक्रम केवल निर्देशों की एक सूची है, कंप्यूटर को कुछ बताने का एक नुस्खा । और यह कि एक के बाद एक निर्देश निष्पादित किए जा रहे हैं (समानांतर में कुछ कदम बनाने की संभावना के साथ, लेकिन बाद में इसके बारे में अधिक)।
कुछ कार्य काफी सामान्य और दोहराव वाले होते हैं, इसलिए यह भयानक होगा यदि हमें हमेशा उन्हें बार-बार लिखना पड़ता है, इसलिए हम उन्हें सिर्फ एक बार लिखते हैं और उसमें से एक "छोटा कार्यक्रम" बनाते हैं - एक सबरूटीन , जिसका पुन: उपयोग किया जा सकता है कार्यक्रम के अन्य भागों। इसे एक से अधिक बार निष्पादित करने में सक्षम होने के लिए, हम इसे अपने कार्यक्रम में एक सार्थक नाम देते हैं । और फिर हम उस नाम का उपयोग कर सकते हैं जब हम इस "छोटे कार्यक्रम" को एक बड़े हिस्से के रूप में निष्पादित करना चाहते हैं, उस नाम से इसे कॉल करके।
कॉलिंग एक सबरूटीन की तरह है एक दानव आहूत कौन जानता है कि कैसे, कि कार्य को करने से नाम है कि दानव की। इसलिए जब हम अपने कार्यक्रम में उस विशेष कार्य को करना चाहते हैं, तो हम "अर्गोथ नाम के दानव को बुलाते हैं" लिखते हैं, और दानव हमें दिखाता है और हमारे लिए वह कार्य करता है जैसा कि हमने उसे करने का निर्देश दिया था, और फिर चले जाते हैं और हम अपना काम जारी रख सकते हैं काम।
कभी-कभी दानव को कुछ अतिरिक्त जानकारी की आवश्यकता होती है, जिसके बिना वह यह तय नहीं कर सकता कि कौन से कार्य करने हैं, या हम वास्तव में उससे क्या चाहते हैं। उदाहरण के लिए, यदि दानव एक महल का निर्माण करने वाला है, तो उसे यह जानने की आवश्यकता हो सकती है कि उसे कहाँ बनना है, या वह कितना बड़ा है , आदि। वे दानव को दिए गए तर्क हैं ... मेरा मतलब है, सबरूटीन, जो अब बन जाता है। लकवा मार गया ।
पैरामीटर उन सूचनाओं के टुकड़े हैं जो कार्य करने के लिए गायब हैं, लेकिन आवश्यक हैं। वे बदल देते हैं कि सबरूटीन थोड़ा-थोड़ा करके क्या कर सकता है। वे नुस्खा में रिक्त स्लॉट की तरह होते हैं जिन्हें हमें निष्पादित करने से पहले भरने की आवश्यकता होती है।
दूसरी ओर तर्क , वास्तविक जानकारी (मूल्य) हैं जो हम इन मापदंडों के लिए आपूर्ति करते हैं।
समानांतर निष्पादन के लिए, हम इसे इस तरह से सोच सकते हैं: कार्यक्रम (निर्देशों की सूची) को निष्पादित करने वाला हमेशा कोई (या कुछ ) होता है। यह या तो एक और इंसान है (क्या आप जानते हैं कि "कंप्यूटर" एक बार एक व्यक्ति के लिए एक नाम था जो गणना कर रहा था?), या एक मशीन। एक कार्यक्रम सिर्फ निर्देशों की एक सूची है, यह अपने आप काम नहीं करता है। कोई न कोई होना चाहिए जो कम्प्यूटेशनल प्रक्रिया को पूरा करेगा(इन कार्यों को सूची से निष्पादित करें)। और कभी-कभी ये क्रियाएं समानांतर में की जा सकती हैं - हम सूची की प्रतियां कई लोगों को वितरित कर सकते हैं और उनमें से प्रत्येक को सूची से कार्यों का एक अलग सेट करने देते हैं, जब तक वे एक दूसरे को बाधित नहीं करते हैं, या डॉन ' t किसी और के काम के परिणामों के लिए इंतजार करना होगा। यही कारण है कि है multithreading आप के लिए;)
फ़ंक्शंस और सबरूटीन्स (जिन्हें प्रक्रिया भी कहा जाता है ) के बीच के अंतर के लिए , सामान्य अंतर यह है कि एक फ़ंक्शन को एक निश्चित मूल्य की गणना करने के लिए बुलाया जा रहा है, जो कि इसके निष्पादन के परिणामस्वरूप लौटता है, जबकि प्रक्रियाओं को केवल मज़े के लिए निष्पादित किया जा रहा है;) AKA उनके "साइड इफेक्ट्स" के लिए - बस सूची से किए गए संचालन के लिए।
लेकिन अगर किसी प्रक्रिया या फ़ंक्शन को कॉल करने पर पहले कुछ परेशानी होती है, तो आप एक और शब्द का उपयोग कर सकते हैं जो एक बार लोकप्रिय था: कूद । एक सबरूटीन में कूद सकता है , जिसका अर्थ है कि आप अभी जो कुछ भी कर रहे हैं उसे निष्पादित करना बंद कर दें, और सूची पर (या किसी अन्य सूची पर) किसी अन्य स्थान पर "कूद" - सबरूटीन - अपने कार्यों को करने के लिए। फिर, जब आप समाप्त कर लेते हैं, तो आप "वापस कूदते हैं" - अर्थात, आप उस जगह पर लौट आते हैं जिसे आपने बाधित किया है, ताकि आप अपने पिछले कार्य के साथ जारी रख सकें। कॉलिंग और जंपिंग में अंतर यह है कि अब आप दानव हैं।
के रूप में तरीकों किसी के द्वारा यहाँ उल्लेख किया है, या तथ्य यह है कि कुछ भाषाओं "फ़ंक्शन नहीं है, केवल तरीकों" - कि काफी सही नहीं है, क्योंकि तरीकों हैं कार्यों! - उनमें से एक विशेष प्रकार : वे ऐसे कार्य हैं जिनका उपयोग किसी वस्तु के अंदर घिरी हुई कुछ सूचनाओं को प्राप्त करने या उन पर काम करने के लिए किया जा रहा है। वे "उन डेटा पर काम करने का एक तरीका" हैं। नाम ऑब्जेक्ट-ओरिएंटेड प्रतिमान से आया है जिसमें डेटा ऑब्जेक्ट्स से संलग्न होते हैं और सीधे संचालित नहीं किए जा सकते हैं, केवल "विधियों" नामक विशेष फ़ंक्शन द्वारा।
एक विधि एक निश्चित अन्य तरीके से विशेष है: यह जानना है कि इसे किस विशेष वस्तु को संचालित किया जाना है / कहा जाना चाहिए ("यह" वस्तु)। इसलिए तरीकों को आमतौर पर एक अतिरिक्त छिपे हुए पैरामीटर से अलंकृत किया जाता है जो उस वस्तु के बारे में जानकारी संग्रहीत करता है जिस पर इसे ("यह" सूचक) कहा गया है। यह उस तरीके को जटिल करता है जिसे फ़ंक्शन को थोड़ा कहा जा रहा है, लेकिन यह एक "कार्यान्वयन विवरण" है जो एक प्रोग्रामर को बहुत परेशान नहीं करना चाहिए, जब तक कि वह जानता है कि वह क्या कर रहा है।