आज हम कार्यात्मक प्रोग्रामिंग पर बात करेंगे। विशेष रूप से, हम घोषणात्मक और अनिवार्य प्रोग्रामिंग के बीच के अंतर को देखेंगे।

सबसे पहले, आइए जल्दी से शर्तों पर गौर करें। फिर हम इन प्रोग्रामिंग शैलियों की तुलना करेंगे और देखेंगे कि वे जावा में कैसे दिखाई देते हैं और क्या भाषा उनके सुखद सह-अस्तित्व का समर्थन करती है।

कार्यात्मक प्रोग्रामिंग एक प्रतिमान है जहां कार्यों को गणितीय कार्यों के रूप में समझा जाता है, न कि सबरूटीन्स के रूप में, जैसा कि प्रक्रियात्मक प्रोग्रामिंग में होता है । अर्थात्, इन दो प्रतिमानों में "फ़ंक्शन" शब्द की अलग-अलग व्याख्या की गई है। इसे याद रखें और उन्हें भ्रमित न करें। जावा आपको भ्रमित नहीं होने देता है, क्योंकि उपप्रोग्राम को "विधियों" के रूप में संदर्भित किया जाता है, जबकि फ़ंक्शन गणितीय कार्यों (भी: लैम्ब्डा फ़ंक्शंस या विधि संदर्भ) को संदर्भित करता है।

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

कार्यात्मक प्रोग्रामिंग के पेशेवरों

  • बेहतर कोड विश्वसनीयता
  • सुविधाजनक इकाई परीक्षण
  • संकलन के दौरान कोड अनुकूलन के अवसर
  • समवर्ती के अवसर

कार्यात्मक प्रोग्रामिंग के विपक्ष

कार्यात्मक प्रोग्रामिंग के नुकसान इन सभी सुविधाओं से उत्पन्न होते हैं:

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

  • गैर-सख्त मूल्यांकन का मतलब है कि फ़ंक्शन कॉल का क्रम अप्रत्याशित है, जो संचालन के क्रम के महत्वपूर्ण होने पर I/O समस्याएं पैदा करता है।

कार्यात्मक प्रोग्रामिंग की हमारी त्वरित समीक्षा समाप्त होती है। अब प्रोग्रामिंग शैलियों पर चलते हैं।

अनिवार्य प्रोग्रामिंग एक प्रोग्रामिंग प्रतिमान है जो निम्नलिखित विशेषताओं की विशेषता है:

  • कार्यक्रम के स्रोत कोड में निर्देश (कथन) होते हैं।

  • निर्देशों का क्रमिक रूप से पालन किया जाना चाहिए।

  • पिछले निर्देशों को क्रियान्वित करने से उत्पन्न डेटा को बाद के निर्देशों द्वारा मेमोरी से पढ़ा जा सकता है।

  • एक निर्देश को क्रियान्वित करने से प्राप्त डेटा को मेमोरी में लिखा जा सकता है।

यहाँ अनिवार्य भाषाओं की मुख्य विशेषताएं हैं:

  • बूलियन चर का उपयोग।
  • असाइनमेंट ऑपरेटर का उपयोग।
  • यौगिक भावों का प्रयोग।
  • सबरूटीन्स का उपयोग।

एक अनिवार्य कार्यक्रम प्राकृतिक भाषाओं में अनिवार्य मनोदशा में व्यक्त किए गए आदेशों की तरह है। दूसरे शब्दों में, एक अनिवार्य कार्यक्रम आदेशों का एक क्रम है।

अनिवार्य प्रोग्रामिंग भाषाओं में C और C++ शामिल हैं।

घोषणात्मक प्रोग्रामिंग एक प्रोग्रामिंग प्रतिमान है जिसमें किसी समस्या का समाधान निर्दिष्ट किया जाता है। अर्थात्, अंतिम परिणाम वर्णित है, इसे प्राप्त करने का तरीका नहीं। HTML एक घोषणात्मक भाषा का एक उदाहरण है। इस भाषा में टैग लिखते समय, हम यह नहीं सोचते कि पेज पर तत्व कैसे बनाए जाएंगे। हम केवल वर्णन करते हैं कि पेज कैसा दिखना चाहिए।

एक अन्य घोषणात्मक प्रोग्रामिंग भाषा SQL है।

आइए वास्तविक जीवन के उदाहरण पर विचार करके प्रोग्रामिंग की दो शैलियों की तुलना करें : हम किसी व्यक्ति को कैसे समझाते हैं कि किसी निश्चित स्थान पर कैसे पहुंचा जाए?

इस स्थिति की कल्पना करें: एक आदमी सड़क पर हमारे पास आता है और पूछता है, "मैं संग्रहालय कैसे जाऊं?"

एक अनिवार्य दृष्टिकोण के साथ, हम उसे एल्गोरिथम प्रदान करेंगे कि वहाँ कैसे पैदल पहुँचा जाए:

  • यहीं घूमो
  • एक सीधी रेखा में 2 ब्लॉक चलें
  • दाईं तरफ मुड़ो

घोषणात्मक दृष्टिकोण के साथ, हम बस पता देंगे, और फिर व्यक्ति अपने आप सही जगह पर पहुंच जाएगा।

जावा वर्तमान में एक बहु-प्रतिमान प्रोग्रामिंग भाषा है । बहु-प्रतिमान का अर्थ है कि भाषा कई प्रतिमानों का समर्थन करती है।

अपने लंबे विकास के दौरान, भाषा ने अपने वस्तु-उन्मुख मॉडल का विस्तार किया है ताकि इसके उपयोगकर्ताओं के पास अलग-अलग उपकरण हों और वे अपने विशिष्ट कार्य के लिए सर्वश्रेष्ठ उपकरण चुन सकें।

नतीजतन, जावा वर्तमान में अनिवार्य दृष्टिकोण (जैसे विधि कॉल के लिए कोड लिखना) और घोषणात्मक दृष्टिकोण (जैसे रनटाइम पर उपलब्ध एनोटेशन) दोनों का समर्थन करता है।

आइए संक्षेप करते हैं:

  • विभिन्न प्रोग्रामिंग प्रतिमान हैं।

  • घोषणात्मक और अनिवार्य दृष्टिकोण हैं।

  • आपको वह चुनना चाहिए जो कार्य के लिए सबसे उपयुक्त हो।

  • जावा एक बहु-प्रतिमान भाषा है जो दोनों दृष्टिकोणों का समर्थन करती है।