जवाबों:
अनिवार्य प्रोग्रामिंग प्रतिमान के कई उप-प्रतिमान हैं, जैसे प्रक्रियात्मक या वस्तु-उन्मुख प्रोग्रामिंग प्रतिमान।
अनिवार्य प्रोग्रामिंग प्रतिमान में, आप अमूर्तता के विभिन्न डिग्री पर एल्गोरिथ्म चरण-दर-चरण का वर्णन करते हैं।
प्रोग्रामिंग भाषाओं के उदाहरण जो प्रक्रियात्मक प्रतिमान का समर्थन करते हैं:
यह आम तौर पर उन भाषाओं को संदर्भित करता है जो प्रकार के पदानुक्रम को प्रदर्शित करते हैं जो आधार प्रकार से व्युत्पन्न प्रकारों तक दोनों तरीकों और राज्य को विरासत में देते हैं, लेकिन इसमें असामान्य प्रोटोटाइप-आधारित जावास्क्रिप्ट भी शामिल है।
प्रोग्रामिंग भाषाओं के उदाहरण जो OO प्रतिमान का समर्थन करते हैं:
घोषणात्मक प्रोग्रामिंग प्रतिमान के कई उप-प्रतिमान हैं, जैसे कि कार्यात्मक या तर्क प्रोग्रामिंग प्रतिमान।
घोषणात्मक प्रोग्रामिंग प्रतिमान में, आप एक परिणाम या एक लक्ष्य का वर्णन करते हैं, और आप इसे " ब्लैक बॉक्स " के माध्यम से प्राप्त करते हैं । अनिवार्य के विपरीत ।
प्रोग्रामिंग भाषाओं के उदाहरण जो घोषणात्मक प्रोग्रामिंग प्रतिमान का समर्थन करते हैं:
फंक्शनल प्रोग्रामिंग साइड इफेक्ट्स और बिना म्यूट स्टेट्स के फंक्शन्स के अनुप्रयोग पर जोर देता है। ऊपर वर्णित घोषणात्मक प्रणालियां कार्यात्मक प्रोग्रामिंग के कुछ पहलुओं को प्रदर्शित करती हैं।
प्रोग्रामिंग भाषाओं के उदाहरण जो घोषणात्मक कार्यात्मक प्रतिमान का समर्थन करते हैं:
घोषणात्मक प्रोग्रामिंग वह जगह है जहां आप कहते हैं कि आप क्या करना चाहते हैं, यह कैसे करना है। प्रक्रियात्मक प्रोग्रामिंग के साथ, आपको परिणाम प्राप्त करने के लिए सटीक चरणों को निर्दिष्ट करना होगा।
उदाहरण के लिए, एसक्यूएल प्रक्रियात्मक की तुलना में अधिक घोषणात्मक है, क्योंकि प्रश्न परिणाम का उत्पादन करने के लिए कदम निर्दिष्ट नहीं करते हैं।
मैं आपको एक वास्तविक दुनिया का उदाहरण देता हूं: मुझे एक कप चाय चाहिए।
प्रक्रियात्मक:
कथात्मक:
एक प्रक्रियात्मक भाषा में, आप पूरी प्रक्रिया को परिभाषित करते हैं और इसे करने के लिए चरण प्रदान करते हैं। आप बस आदेश प्रदान करते हैं और परिभाषित करते हैं कि प्रक्रिया कैसे दी जाएगी।
एक घोषणात्मक भाषा में, आप बस कमांड या ऑर्डर सेट करते हैं, और इसे सिस्टम पर करते हैं कि उस ऑर्डर को कैसे पूरा करें। आपको बस अपना परिणाम खोदने की आवश्यकता है कि यह कैसे किया जाना चाहिए।
प्रक्रियात्मक प्रोग्रामिंग:
प्रक्रियात्मक प्रोग्रामिंग में, जब कार्यक्रम शुरू होता है, तो यह निर्देशों के एक सेट का अनुसरण करता है। कुछ फ़ाइल या मेमोरी सामग्री के आधार पर निर्देश बदल सकते हैं, लेकिन कुल मिलाकर, यह व्यापक रूप से भिन्न नहीं होता है। कार्यक्रम के लिए इनपुट आम तौर पर वास्तविक समय में उपयोगकर्ता इनपुट से नहीं होता है, बल्कि डेटा के पूर्व-एकत्रित सेट से होता है।
घोषणात्मक प्रोग्रामिंग:
डिक्लेरेटिव ईवेंट संचालित प्रोग्रामिंग में वैकल्पिक क्रियाओं के साथ डेटा के एक निकाय के चारों ओर केंद्रीकृत होता है, जो प्रोग्राम उस पर ले जा सकता है। उदाहरण के लिए, शब्द प्रोसेसर में प्रत्येक "ईवेंट" किसी भी माउस या कीबोर्ड (या फ़ाइल) में परिवर्तन होता है जो डेटा, दस्तावेज़ (ओं) को प्रभावित करता है। उन्हें किसी भी क्रम में प्रदर्शन करने की आवश्यकता नहीं है। इवेंट संचालित प्रोग्रामिंग छोटे कार्यक्रमों (इवेंट हैंडलर) का रूप लेती है, जो सभी डेटा के एक सामान्य सेट पर काम करते हैं, ताकि प्रत्येक छोटा प्रोग्राम उसी डेटा, दस्तावेज़ का इस उदाहरण में उपयोग कर सके।
दो प्रोग्रामिंग भाषाओं के बीच मुख्य अंतर है, प्रक्रियात्मक प्रोग्रामिंग में, हम कंप्यूटर को बताते हैं कि समस्या को कैसे हल किया जाए और घोषित प्रोग्रामिंग में, हम कंप्यूटर को बताते हैं कि हम किस समस्या को हल करना चाहते हैं।
एक टिप्पणी को संबोधित करने के लिए और शायद दोनों के मतभेदों के बीच एक उदाहरण प्रदान करें। अन्सिएबल प्रक्रियात्मक है जहां कठपुतली या टेराफॉर्म जैसी कोई चीज घोषित होती है। उदाहरण के लिए, आप इस तरह के 10 ec2 इंस्टैंस को तैनात करने के लिए एक ansible yaml फाइल बनाते हैं:
-ec2: काउंट: 10 इमेज: ami-058c6e5b73b074cd2 inst_type: t2.micro
यदि आप उस फ़ाइल को दो बार चलाना चाहते हैं, तो आप 20 t2.micro ec2 उदाहरणों के साथ समाप्त करेंगे। यदि आपने टेराफॉर्म जैसी घोषणात्मक भाषा में समकक्ष लिखा है और इसे दो बार चलाया है तो आपके पास केवल 10 t2.micro इंस्टेंसेस होंगे जो आप इसे कितनी बार चलाते हैं। घोषणा की भाषाएं अंतिम स्थिति बताती हैं। प्रक्रियात्मक भाषाएं वही करती हैं जो आप इसे वर्तमान या अतीत की स्थिति के संबंध में बताते हैं।
तो YAML घोषणात्मक प्रोग्रामिंग भाषा है? क्योंकि हम परिभाषित करते हैं कि वास्तविक तर्क लिखने के बजाय हम क्या चाहते हैं।
मैं यह इसलिए पूछ रहा हूं क्योंकि अगर किसी को भी पता चल जाता है कि एंसेबल जो कॉन्फ़िगरेशन प्रबंधन उपकरण है, तो वह YAML का उपयोग करता है लेकिन यह अभी भी प्रक्रियात्मक भाषा की श्रेणी में आता है।
प्रक्रियात्मक दृष्टिकोण में आप परिणाम प्राप्त करने के लिए अपने निर्देश को कूटबद्ध करते हैं। घोषणात्मक दृष्टिकोण में आप परिभाषित करते हैं कि समस्या को हल करने के ज्ञान के रूप में क्या हल किया जाना चाहिए। दोनों दृष्टिकोणों में मेरे द्वारा कार्यान्वित प्रक्रियात्मक या घोषणात्मक दृष्टिकोण पर एक नज़र डालें ।
जैसा कि आप उदाहरण में देखेंगे, घोषणात्मक दृष्टिकोण में, आपको समस्या को हल करने के लिए HOW को निर्देश देने की आवश्यकता नहीं है।