क्या जावास्क्रिप्ट एक कार्यात्मक भाषा है

| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

कार्यात्मक शैली प्रोग्रामिंग शुद्ध गणित कार्यों, अपरिवर्तनीय डेटा, तर्क प्रवाह और डेटा प्रविष्टि पर केंद्रित है। कार्यात्मक प्रोग्रामिंग भाषाएं ऑब्जेक्ट-ओरिएंटेड के विपरीत होती हैं, जो डेटा बदलने और राज्यों को बदलने पर ध्यान केंद्रित करती हैं।

कार्यात्मक प्रोग्रामिंग भाषाएं हर जगह हैं और अधिकांश इंटरनेट उपयोग उन्हें। वास्तव में, मैं अभी इस लेख को लिखने के लिए एक कार्यात्मक प्रोग्रामिंग भाषा का उपयोग कर रहा हूं।

यह सीखना कि एक कार्यात्मक प्रोग्रामिंग भाषा क्या है और इसके पेशेवरों और विपक्षों को जानना कंप्यूटिंग या प्रोग्रामिंग में शामिल किसी भी व्यक्ति के लिए सहायक है।

आइए इस प्रोग्रामिंग प्रतिमान (और सामान्य रूप से प्रतिमान) को परिभाषित करने के लिए कुछ समय दें, फिर कार्यात्मक प्रोग्रामिंग के कुछ पेशेवरों और विपक्षों को देखें।

प्रोग्रामिंग प्रतिमान क्या है?

h2>

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

प्रोग्रामिंग प्रतिमान दर्ज करें, जो प्रोग्रामिंग भाषाओं को वर्गीकृत करने का एक साधन है ‚Äã‚Äãby डेटा के प्रबंधन के लिए उनका केंद्रीय सिद्धांत या कार्यप्रणाली। परिभाषित सिद्धांतों का एक सेट होने से भाषाएं एक प्रतिमान के लिए योग्य होती हैं। कई प्रोग्रामिंग प्रतिमान हैं, जिनमें से कई ओवरलैप या अन्य प्रतिमान शामिल हैं। दो मुख्य प्रतिमान कार्यात्मक और वस्तु उन्मुख हैं, लेकिन इन दो प्रतिमानों द्वारा विचार नहीं किए गए डेटा से निपटने के कई अन्य तरीके हैं।

कार्यात्मक प्रोग्रामिंग क्या है?

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

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

इस अर्थ में, कार्यात्मक प्रोग्राम एनजी सभी प्रवाह के बारे में है। प्रविष्टियां ऊपर से आती हैं और परिणाम नीचे आते हैं। यह ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के विपरीत है, जो एक बदलती हुई स्टेट मशीन है, जिसमें अद्वितीय और बदलती ऑब्जेक्ट हैं। रहता है।

ट्यूरिंग मशीन के बाद से ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग की तुलना में कार्यात्मक प्रोग्रामिंग कुछ समय के लिए आसपास रही है। दो पीढ़ियों ने, लेकिन हाल ही में JavaScript में वापसी की है, जो प्रतिमान स्वतंत्र है लेकिन एक ऑब्जेक्ट ओरिएंटेड की तुलना में अधिक कार्यात्मक भाषा मानी जाती है।

परिभाषा कार्यात्मक प्रोग्रामिंग के सिद्धांत

कार्यात्मक प्रोग्रामिंग परिभाषा के सिद्धांतों पर आधारित है, जिस पर इस पद्धति का पालन करने वाली सभी भाषाएं आधारित हैं:

कार्यात्मक प्रोग्रामिंग h2>

सभी प्रोग्रामिंग प्रतिमानों की तरह, कार्यात्मक प्रोग्रामिंग के अपने फायदे और नुकसान हैं। आइए कार्यात्मक प्रोग्रामिंग के लिए हमारे सर्वोत्तम उपयोग के मामले को समझने के लिए इन पर एक नज़र डालें।

Pro

  • पठनीयता - चूंकि हमने लगभग सब कुछ एक फ़ंक्शन स्तर पर रखा है, इसलिए हमारा कोड पढ़ना आसान है। आप जो देखते हैं वही आपको मिलता है, राज्य अप्रत्याशित रूप से नहीं बदलते हैं, और अधिकांश डेटा अपरिवर्तनीय है। हमारे चरों की जांच करने, या एक अजीब त्रुटि फेंकने, या अन्य कार्यों के लिए हमारे कोड को बदलने के लिए खोज करने की कोई आवश्यकता नहीं है। हमारे सभी कोड कार्यात्मक प्रोग्रामिंग के साथ हमारे सामने हैं।
  • स्थिरता - चूंकि हमने अपने कोड की इतनी सख्ती से जाँच की है, कोई समाप्ति समस्या नहीं है, कोई जंगली या आवारा चर नहीं है, और कोई दुष्प्रभाव नहीं है। सब कुछ अपेक्षा के अनुरूप होता है क्योंकि कोड को इसी तरह से डिज़ाइन किया गया है। एक अप्रत्याशित राज्य मशीन होने के बजाय जिसमें बहुत सारे चलने वाले हिस्से होते हैं या पूरी तरह से समझने के लिए, कार्यात्मक प्रोग्रामिंग बाउंस डेटा की तुलना में स्थिर वस्तुओं की तरह अधिक होती है क्योंकि यह डाउनस्ट्रीम अपना रास्ता बनाती है।
  • निर्माण में आसान < / मजबूत> - क्योंकि कार्यात्मक प्रोग्रामिंग इतनी स्थिर है, उस पर निर्माण करना आसान है, भरोसा रखें कि आपकी नींव सुरक्षित है। एब्स्ट्रैक्शन के उच्च स्तर तक पहुंचना भी आसान है, ऐसे फंक्शन्स पर फंक्शन्स जो आपको अपने अधिकांश रूटीन कोड को व्यवस्थित करने देते हैं, जैसे कि पुनरावृत्त प्रोग्राम और कोड, और आपके कोड को छोटा और अधिक स्थिर बनाते हैं।
  • < मजबूत>डीबग करना आसान है - चूंकि कोड पठनीय है, कोड के माध्यम से डेटा प्रवाह का एक स्पष्ट मार्ग है और हमारे कार्य पवित्र और शुद्ध हैं, डिबगिंग बहुत सरल है। यदि कोई अवस्था या परिवर्तनशीलता नहीं होती तो आप आवारा कीड़ों, दुष्प्रभावों और अप्रत्याशित अवस्थाओं का पीछा करने में कम समय व्यतीत करेंगे।
  • क्या नहीं, कैसे पर ध्यान दें - कार्यात्मक प्रोग्रामिंग छत्र के नीचे आती है घोषणात्मक प्रतिमान, जिसका अर्थ है कि जब प्रोग्रामिंग उस पर ध्यान केंद्रित करती है जो आप करना चाहते हैं, जबकि वह कार्य इस तरह से ध्यान रखेंगे

माइनस

  • कम पठनीय -. कार्यात्मक प्रोग्रामिंग जैसे कुछ कारणों से, इसे आसानी से पढ़ा जा सकता है, इसे पढ़ना भी मुश्किल हो सकता है। अमूर्त होवरिंग टावर बनाने के लिए अधिकांश कार्यात्मक प्रोग्रामिंग कार्यों का आसानी से दुरुपयोग किया जा सकता है, जहां एक छोटी लाइन में वॉल्यूम हो सकते हैं और आपको यह पता लगाने के लिए कार्यों के ढेर के माध्यम से खोदना होगा कि यह वास्तव में क्या करता है।
  • मुश्किल सीखने के लिए - वस्तु-उन्मुख प्रोग्रामिंग की तुलना में कार्यात्मक प्रोग्रामिंग अधिक अकादमिक और कठोर है। इसके लिए बीजगणित, लैम्ब्डा कैलकुलस और श्रेणी सिद्धांत की बेहतर समझ की भी आवश्यकता होती है, जिस पर बहुत कुछ आधारित होता है। कार्यात्मक प्रोग्रामिंग के लिए कम सुलभ शिक्षण सामग्री मौजूद है और कार्यात्मक प्रोग्रामिंग के लिए हमारे द्वारा उपयोग किए जाने वाले तर्क की तुलना में एक अलग प्रकार के तर्क की आवश्यकता होती है।
  • खासकर जब बदलते राज्य होने से प्रोग्रामिंग बहुत आसान हो जाती है। कार्यात्मक प्रोग्रामिंग अक्सर एक लंबी सड़क होती है, इसलिए एकल फ़ंक्शन लिखना आसान होता है, एक पूरा प्रोग्राम बनाना मुश्किल होता है। power , क्योंकि एक मान को बदलने के लिए आपको हर बार परिणाम प्राप्त करने के लिए नई जानकारी बनाने या फ़ंक्शन निष्पादित करने की आवश्यकता होती है
  • इनपुट / आउटपुट -। IO साइड इफेक्ट्स, कार्यात्मक प्रोग्रामिंग पर निर्भर करता है जिसका उद्देश्य बचना है। हालांकि आईओ को कार्यात्मक कार्यक्रमों में एकीकृत किया जा सकता है, यह स्वभाव से अनाज के खिलाफ जाता है और विशेष ध्यान देने की आवश्यकता होती है।

कार्यात्मक प्रोग्रामिंग भाषाएं ‚Äã‚Äã

कार्यात्मक प्रोग्रामिंग वस्तु-उन्मुख प्रोग्रामिंग की तुलना में काफी पुरानी है और हाल के वर्षों में इस सूची में भाषाओं में वापसी की है।

  • जावास्क्रिप्ट

    मजबूत> - जबकि जावास्क्रिप्ट एक विशुद्ध रूप से कार्यात्मक भाषा है, इसमें इस तथ्य की कई कार्यात्मक प्रोग्रामिंग विशेषताएं हैं, प्रोग्रामर ने पहले कार्यात्मक प्रोग्रामिंग का अधिक बार उपयोग किया है क्योंकि यह हो सकता है। वस्तु उन्मुख भाषाओं की तुलना में कुछ स्क्रिप्टिंग स्थितियों में अधिक उपयोगी और स्थिर ‚Äã
  • Clojure -. यह काफी बोलचाल का नाम नहीं है जो जावास्क्रिप्ट है, लेकिन एल के शीर्ष पर निर्मित एक ठोस कार्यात्मक प्रोग्रामिंग भाषा है एसआईपी, जो 1950 के आसपास से है। इसका मतलब है कि तुम। अर्थात्;। इसकी जड़ों तक कार्यात्मक है यह जावा प्लेटफॉर्म पर चलता है और इसे बाइटकोड जेवीएम
  • हास्केल - संकलित किया गया है। हास्केल एक और विशुद्ध रूप से कार्यात्मक भाषा है और इसे शिक्षाविदों के बजाय वास्तविक दुनिया की समस्याओं को हल करने के लिए डिज़ाइन किया गया है। यह लिस्प जितना पुराना नहीं है; 90 के दशक में बनाया गया था। इसका उपयोग कुछ लोकप्रिय परियोजनाओं के लिए किया गया है, जैसे कि xmonad विंडो मैनेजर।

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

<इनपुट प्रकार =" छिपा हुआ "नाम =" ck_source "value =" करियरकर्म-वेब "> < इनपुट टाइप = "हिडन" नाम = "सीके_मीडियम" वैल्यू = "ब्लॉग"> <इनपुट टाइप = "हिडन" नाम = "सीके_कैंपेन" वैल्यू = "एफटी-एक्सप्रेस-डब्ल्यूजीटी-ब्लॉग"> <इनपुट टाइप = "हिडन" नाम = " प्रवाह" मान = "एसएफटी"> <बटन प्रकार = "सबमिट" आईडी = "सबमिट 4" वर्ग = "बीटीएन बीटीएन-सफलता बीटीएन-ब्लॉक बटन-एजेक्स-फॉर्म" शैली = "पृष्ठभूमि-रंग: # ff9d38! जरूरी; सीमा रंग: # ff9d38; अस्पष्टता: 1; सफेद रंग; चौड़ाई: 100%; फोंट की मोटाई: बोल्ड; फ़ॉन्ट आकार: 13px; "> एक मैच प्राप्त करें
<स्क्रिप्ट प्रकार = "पाठ / जावास्क्रिप्ट"> jQuery (`# contactForm2`)। सबमिट करें (फ़ंक्शन (ईवेंट) {var फ़ोन = jQuery (`# msg_phone`)। वैल (); फ़ोन = फ़ोन। बदलें (// $ /, ``) .replace (`+ (`, ``) .replace ( `) +`, ``) .replace (``, ``) .replace (`+ -`, ` `) .replace (` - `,` `) .replace (` (`,` `) .replace (`) `,` `) .replace (`.`,` `); फोन = फोन। रिप्लेस (` `,` `); फोन = फोन। रिप्लेस (` `,` `); वर अन्यफोन = फोन। सबस्ट्रिंग (2); अगर (अन्य फोन। विभाजित (``) .e बहुत (चार => चार === अन्य फोन [0])) {jQuery (`# त्रुटि_फोन`)। दिखाएँ (); झूठा रिटर्न; } और { var phoneField = jQuery (`# msg_phone`); phoneField.removeAttr ("अधिकतम लंबाई"); phoneField.removeAttr ("स्कीमा"); phoneField.val (फ़ोन); सच लौटाता है; }})