2009-07-22 21 views
11

मैंने अपने संपूर्ण जीवन की प्रोग्रामिंग में और पिछले 6 साल मैं लगभग विशेष रूप से जावा साथ काम किया है के लिए रुचि रखते रहे हैं। मैंने अभी अपने विश्वविद्यालय के अध्ययन के साथ समाप्त किया है और एक कंपनी के लिए जावा डेवलपर के रूप में नौकरी है।कार्यात्मक प्रोग्रामिंग लागू किया

इन सभी वर्षों के प्रोग्रामिंग एक शौक और एक पसंदीदा पिछला समय रहा है, लेकिन इस अर्थ में थोड़ा नकारात्मक प्रभाव पड़ा कि मैं जावा के इतने आदी हो गया कि मैंने कभी भी प्रोग्रामिंग भाषा के रूप में इसे आगे बढ़ाया नहीं। मैंने नियमित अभिव्यक्तियों, एसक्यूएल सीखकर चीजों के बारे में अपने ज्ञान का विस्तार करने की कोशिश की और कुछ एक्सएमएल का अध्ययन किया, लेकिन मैं इसे एक नई भाषा के साथ पर्याप्त रूप से शामिल नहीं कर सकता था ताकि यह सीख सके कि इसे सही तरीके से कैसे इस्तेमाल किया जाए क्योंकि वे सभी अपने मूल पर समान दिखते हैं , मुझे परेशान हर नई भाषा के सीखने की वक्र मिली। मुझे लगा जैसे मुझे पूरी प्रक्रिया को समाप्त करने के लिए सही तरीके से जाना था, मैंने शुरू किया क्योंकि मुझे लगा कि अन्य अनिवार्य भाषाओं में मुझे पेशकश करने के लिए और कुछ नहीं था (मुझे पता है कि यह कथन एक लड़ाई शुरू कर सकता है, यह मेरा इरादा नहीं है)।

इसलिए मैं एक बिंदु पर फैसला किया कार्यात्मक प्रोग्रामिंग का जादुई दुनिया का पता लगाने के। मैंने हास्केल पर एक पुस्तक पढ़ना शुरू कर दिया और इसे अकादमिक दृष्टिकोण से वास्तव में दिलचस्प पाया (मैंने गणित में महारत हासिल की) लेकिन मुझे भाषा सीखने के लिए पर्याप्त रूप से जाने के लिए व्यावहारिक अनुप्रयोग नहीं मिल सका।

तो अब जावा मेरे दिन का मुख्य हिस्सा है क्योंकि मुझे इसमें कोड पर भुगतान मिल रहा है (और जब मैं बस एक शौक था तब मैंने इसका आनंद लिया) मुझे अपने क्षितिज को विस्तारित करने की आवश्यकता महसूस हुई और फिर कार्यात्मक प्रोग्रामिंग एक अच्छा विचार की तरह लग रहा है।

मैंने सोचा कि मैं स्कैला से शुरू करूंगा क्योंकि मैं जावा साक्षर हूं (संक्रमण को आसान बनाते हैं और एक दूसरे से बात कर सकते हैं) और इसलिए मेरा प्रश्न है: आपके अनुभव में एक कार्यात्मक भाषा सीखना "सही बात"? क्या कोई वास्तविक जीवन अनुप्रयोग है जहां यह प्रतिमान जानना आसान हो सकता है? न केवल व्यक्तिगत मनोरंजन के लिए बल्कि यह उद्योग में "समर्थक" होगा?

+2

यदि आप एक कार्यात्मक भाषा सीखना चाहते हैं जो JVM पर चलता है और जावा से "बात" कर सकता है, तो क्लोजर का उपयोग क्यों न करें? यह लिस्प के करीब है और मुझे लगता है कि लिस्प एक कार्यात्मक भाषा का एक प्रमुख उदाहरण है। हालांकि स्कैला और क्लोजर दोनों कार्यात्मक प्रोग्रामिंग का समर्थन करते हैं, जब मैं JVM पर कार्यात्मक प्रोग्रामिंग के बारे में सोचता हूं, तो मैं क्लोजर के बारे में सोचता हूं। –

उत्तर

7

एक कार्यात्मक भाषा सीखना एक बड़ा प्लस है, भले ही आप इसे अपने दिन के काम में कभी भी इस्तेमाल न करें या नहीं। निम्नलिखित पर विचार करें:

  1. सफल समवर्ती प्रोग्रामिंग के लिए सबसे बड़ी सिफारिशों में से एक अपने थ्रेड वस्तुओं में परिवर्तनशील राज्य से बचने के लिए जब भी संभव है। कार्यात्मक प्रोग्रामिंग आपको यह कैसे सिखाता है।
  2. अधिकतर कार्यात्मक प्रोग्रामर, एक बार जब वे नॉन-इंस्बस्टेंटियल लर्निंग वक्र प्राप्त करते हैं, तो दावा करें कि उनकी तकनीकें उन्हें मानक अनिवार्य भाषाओं में कहीं अधिक उत्पादक बनाती हैं। उनका कोड अधिक बग-मुक्त है, और आकार का एक अंश अन्य भाषाओं की तरह है। जब आप अंततः नियमित अभिव्यक्तियों को समझते हैं तो उत्पादकता को बढ़ावा देने के बारे में सोचें। अब इसे स्टेरॉयड पर रखें। यह क्या एफपी महसूस कर सकता है।
  3. कार्यात्मक तकनीकें अनिवार्य रूप से अनिवार्य प्रोग्रामिंग में अपना रास्ता बना रही हैं। जावा में बंद करें, और जावास्क्रिप्ट, और जल्द ही (शायद, अगर हम भाग्यशाली हैं) जावा में बंद करें। यह बहुत संभावना है कि दोनों दुनिया जल्द ही एक साथ आएंगे।
  4. अंत में, नौकरी के साक्षात्कार में, एक कार्यात्मक भाषा जानना आपको अपने औसत जे 2 ईई/.NET क्लोन से बाहर निकलने में मदद करेगा। यह आपको एक स्व-स्टार्टर, एक अनुशासित शिक्षार्थी, और एक भावुक प्रोग्रामर के रूप में चिह्नित करता है - चाहे आप वास्तव में इनमें से किसी भी चीज हैं या नहीं। बस एक और स्लेदरिंग स्कैला फैनबॉय न बनें, इस बारे में जल्द से जल्द बॉस को डांटते हुए कि वह सबसे अच्छी प्रोग्रामिंग तकनीकों पर कैसे खो रहा है ... आपको विचार मिलता है। एक संभावित नियोक्ता का अपमान करना कभी अच्छा नहीं होता है।

मेरे लिए, हास्केल का अध्ययन करने से प्रोग्रामिंग को बहुत अधिक मजेदार बना दिया गया है। यह आपके लिए भी वही कर सकता है। सौभाग्य!

1

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

किसी उद्योग परिप्रेक्ष्य से, यदि आप एक कार्यात्मक भाषा जैसे हास्केल या ऑब्जेक्टिव कैमल में अच्छा कोड लिख सकते हैं, तो आप अचानक बहुत कम संख्या में पदों की मांग में रहेंगे। यह स्पष्ट नहीं है कि कोई समझदार व्यक्ति इसे 'समर्थक' मानता है, लेकिन निश्चित रूप से कुछ बहुत ही रोचक कंपनियां हैं जिनके पास केवल कार्यात्मक प्रोग्रामर के लिए खुलेपन हैं।

8

मेरी राय कार्यात्मक प्रोग्रामिंग सीखने में यह न केवल एक अच्छा विचार है, क्योंकि यह आप एक बेहतर प्रोग्रामर बनाता है (लगता है जो मैं मानता हूँ, ज़ाहिर है), लेकिन क्योंकि ऐसा लगता है कि यह एक निकट भविष्य में बहुत लोकप्रिय हो जाएगा।

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

आप अगले संदर्भ के लिए देखने के लिए चाहते हो सकता है

बफ़, मुझे उम्मीद है कि यह बहुत ऊब नहीं था, ;-)

+0

एक दिलचस्प विचार, धन्यवाद। –

1

हां, यह सही समझ में आता है, और उत्पादन में होने वाले कुछ सामान्य कार्यों में तुरंत उपयोगी होता है (भले ही आप उन्हें जावा में लिखते हैं)। उदाहरण के लिए, यदि आपको कभी भी एक पार्सर (उदाहरण के लिए, डीएसएल के लिए) लिखने की आवश्यकता होगी, तो आप पाएंगे कि ऐसा करने के लिए कार्यात्मक तकनीकों का उपयोग करने से अधिक क्लीनर और अधिक संक्षिप्त कोड होता है।

2

कार्यात्मक प्रोग्रामिंग वित्तीय क्षेत्र में घुसपैठ कर रही है। जो वास्तव में आश्चर्यजनक नहीं है, अगर आप मानते हैं कि वित्तीय विश्लेषकों ने एक्सेल में वर्षों से "प्रोग्रामिंग" किया है, और यह अनिवार्य रूप से एक कार्यात्मक प्रतिमान (अधिक सटीक, कार्यात्मक प्रतिक्रियाशील) है।

तो, हाँ, कार्यात्मक प्रोग्रामिंग को जानना कुछ दरवाजे खोल सकता है ओओ नहीं कर सकता, और ऐसी नौकरियां बहुत दिलचस्प हो सकती हैं।

जावा प्रोग्रामर के रूप में सख्ती से बोलते हुए, आप उन तकनीकों को सीखेंगे जिन्हें आप जावा में रोज़ाना नियोजित कर सकते हैं (हालांकि आप बेहतर संग्रह लाइब्रेरी चाहते हैं)।तकनीक जो आपके द्वारा कोड किए गए बगों की मात्रा को कम कर देगी, मल्टीथ्रेड और मल्टीटास्क को आसान बनाती है, और अपने कोड को कार्यान्वयन के यांत्रिकी के मुकाबले लागू होने वाले व्यावसायिक नियमों के करीब लाती है।

अब, विशेष रूप से स्कैला सीखने के अन्य कारण हैं। उपर्युक्त, मेरे कारण हैं कि आप कार्यात्मक प्रोग्रामिंग सीखना चाह सकते हैं।

संबंधित मुद्दे