कार्यात्मक प्रोग्रामिंग के परिचय के लिए स्कीम बनाम हास्केल?


36

मैं C और C # में प्रोग्रामिंग के साथ सहज हूं, और भविष्य में C ++ का पता लगाऊंगा। मुझे एक अलग प्रोग्रामिंग प्रतिमान के रूप में कार्यात्मक प्रोग्रामिंग की खोज करने में रुचि हो सकती है। मैं मज़े के लिए ऐसा कर रहा हूं, मेरी नौकरी में कंप्यूटर प्रोग्रामिंग शामिल नहीं है, और कॉलेज में कंप्यूटर विज्ञान के पाठ्यक्रमों में काफी पहले सिखाया गया कार्यात्मक प्रोग्रामिंग के उपयोग से प्रेरित हूं। लैम्ब्डा कैलकुलस निश्चित रूप से मेरी गणितीय क्षमताओं से परे है, लेकिन मुझे लगता है कि मैं कार्यात्मक प्रोग्रामिंग को संभाल सकता हूं।

हास्केल या स्कीम में से कौन कार्यात्मक प्रोग्रामिंग के लिए एक अच्छा परिचय है? मैं अपने पाठ संपादक के रूप में emacs का उपयोग करता हूं और भविष्य में इसे और अधिक आसानी से कॉन्फ़िगर करने में सक्षम होना चाहूंगा जो कि Emacio Lisp को सीखना होगा। हालाँकि, मेरी समझ यह है कि Emacs Lisp स्कीम से काफी अलग है और कार्यात्मक के विपरीत अधिक प्रक्रियात्मक भी है।

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

किसी भी सुझाव, प्रतिक्रिया या इनपुट की सराहना की।

धन्यवाद।

PS BTW मेरे पास F # की भी पहुंच है क्योंकि मेरे पास विजुअल स्टूडियो 2010 है जो मैं C # विकास के लिए उपयोग करता हूं, लेकिन मुझे नहीं लगता कि भाषा का चयन करने के लिए मेरा मुख्य मानदंड होना चाहिए।


3
मत भूलनाReal World Haskell
वैकल्पिक

15
लघु पक्ष टिप्पणी: लंबोदर कलन एक असाधारण सरल प्रणाली है; इसके बारे में शांत बात यह नहीं है कि यह जटिल है, बल्कि इसके विपरीत है; कि आप इस तरह की एक सरल प्रणाली में अपनी इच्छानुसार सब कुछ व्यक्त कर सकते हैं। एक प्रोग्रामिंग भाषा से शुरू करें; अब बाहर फेंक सब कुछ वैरिएबल संदर्भ, समारोह परिभाषाएँ, और फ़ंक्शन कॉल को छोड़कर। देखा! लैम्ब्डा कैलकुलस।


9
मैं आपको पाँच मिनट में लैंबडा कैलकुलस सिखा सकता हूँ। अब, जो आपने अभी सीखा है उसके परिणामों को समझने में जीवनकाल लगता है। :)

5
मैंने हास्केल को स्कीम के ऊपर मुख्य रूप से इसलिए चुना क्योंकि इसमें इतने सारे छोटे कोष्ठक नहीं हैं!
जॉय एडम्स

जवाबों:


27

मैं OCaml की सिफारिश करूंगा।

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

एक स्कीम, एक ML और एक हास्केल के बीच, मैं ML को चुनूंगा क्योंकि मुझे लगता है कि यह इस परिभाषा के लिए सबसे अधिक प्रासंगिक है। योजना में स्थैतिक टाइपिंग नहीं है (टाइप्ड रैकेट है, लेकिन यह योजना के शुरुआती लोगों के लिए नहीं है), और हास्केल के पास बहुत अधिक अन्य सामान (भिक्षु, आलसी मूल्यांकन ...) है, जबकि दिलचस्प है, महत्वपूर्ण आधार से ध्यान हटा सकते हैं। ।

SML और OCaml समान रूप से दिलचस्प हैं; मैं OCaml के लिए अधिक अभ्यस्त हूं, और इसमें एक अधिक "व्यावहारिक" भावना है जो अच्छा है (लेकिन अगर आप वास्तव में अपनी आत्मा को खोने के जोखिम के लिए "व्यावहारिक" चाहते हैं, तो आप एफ # भी चुन सकते हैं)।

योजना और हास्केल भी बहुत दिलचस्प भाषाएं हैं। मैक्रोज़ पर स्कीम का जोर दिलचस्प है, लेकिन सीधे कार्यात्मक प्रोग्रामिंग से संबंधित नहीं है (यह दुनिया में उन चीजों में से एक है जो आपको निश्चित रूप से कोशिश करनी चाहिए, साथ ही लॉजिक प्रोग्रामिंग, स्टैक-आधारित भाषाओं और क्षमता-उन्मुख ई)।

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

इसी तरह, एक बार जब आप OCaml को देख चुके होते हैं, और संभवतः हास्केल भी, और फिर भी अधिक सीखना चाहते हैं, तो आपको Coq या Agda को देखना चाहिए। फिर भी कुछ कार्यात्मक प्रोग्रामिंग के लिए पहले परिचय के लिए Coq या Agda की सिफारिश करेंगे ...

अपनी बात स्पष्ट करने के लिए: मुझे लगता है कि OCaml (या SML) को सीखना तब हास्केल आपको सीधे हास्केल सीखने के लिए एक अच्छा कार्यात्मक प्रोग्रामर बना देगा, लेकिन अधिक आसानी से (या कम दर्द वाला)।
इसके अलावा, OCaml और Haskell दोनों में अच्छी चीजें हैं जो उन्हें अलग करती हैं, और दोनों की उन्नत विशेषताओं के बारे में जानना दिलचस्प है । बस हास्केल सीखना उस पहलू में खराब है (बेशक आप हास्केल के बाद OCaml सीख सकते हैं; मुझे लगता है कि यह कम तार्किक है और आपको अधिक निराश कर देगा)।

OCaml सीखने के लिए मैं जेसन हिकी की पुस्तक के मसौदे (PDF) की सिफारिश करूंगा ।

Controvers यह परिभाषा विवादास्पद है। कुछ स्कीम के लोग दावा करेंगे कि स्टैटिक टाइपिंग का कार्यात्मक प्रोग्रामिंग से कोई लेना-देना नहीं है। कुछ हास्केल लोग दावा करेंगे कि उनकी शुद्धता की परिभाषा ("हास्केल क्या करता है, लेकिन अब और नहीं") एक कार्यात्मक भाषा होने के लिए एक साइन क्वालिफिकेशन नॉन कंडीशन है। मैं असहमत होने के लिए सहमत हूं।


3
मुझे OCaml की ओर ले जाने के लिए धन्यवाद, और हाँ मैं अपनी आत्मा को जोखिम में डालकर F # का पता लगाऊंगा। मैं लिनक्स, मैक ओएस एक्स और विंडोज (मुख्य रूप से पूर्व) के लिए विकसित करता हूं, लेकिन एफएसआई सभी तीन प्लेटफार्मों (लिनक्स और मैक ओएस एक्स पर मोनो चलाने) के लिए उपलब्ध है जो मैं पहले से ही करता हूं। तथ्य यह है कि Microsoft का पूरा वजन एक कार्यात्मक प्रोग्रामिंग भाषा के पीछे है (यद्यपि "अशुद्ध" एक), कार्यात्मक प्रोग्रामिंग के प्रशंसकों द्वारा रोने के बजाय स्वागत किया जाना चाहिए।
खतरा

एसएमएल मर चुका है, ऑसम में coq
permeakra

1
एमएल के लिए +1; यह हास्केल की तुलना में अधिक स्पष्ट है।
m3th0dman

मुझे यह SML या OCaml सीखने का एक अच्छा विचार भी लगता है, फिर Haskell (+1)। इन भाषाओं को जानने के बाद, एक और एक (जैसे स्काला) को चुनना बहुत आसान है। इसके अतिरिक्त, डायनेमिक भाषाओं की भावना रखने के लिए स्कीम, कॉमन लिस्प और क्लोजर (इस क्रम में) को देख सकते हैं।
जियोर्जियो

@ हज़ीज़: जब वे अच्छे सॉफ़्टवेयर बनाते हैं, तो Microsoft (या, उस मामले के लिए, ओरेकल, आदि) एक एकाधिकार बना रहता है, जिसमें ग्राहक लॉक-इन, असंगत प्रारूप, असंगत कार्यान्वयन, आदि जैसे सभी बुरे व्यवहार शामिल हैं
GGGRL

26

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

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

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


4
"सिंटैक्स सीखना और पढ़ना बहुत आसान है" बहुत व्यक्तिपरक है।

6
@ सुलु: सच। शायद 'नियमित' एक बेहतर शब्द है। कोई backticks, infixes, पूर्वता, या सहानुभूति मुद्दों --- बस कोष्ठक, बहुत से, मूर्खतापूर्ण कोष्ठक।
होआ लॉन्ग टैम

17

सही उत्तर है, ज़ाहिर है, दोनों! तो यह सिर्फ एक सवाल है कि किस भाषा को पहले निपटाया जाए। मेरी स्थिति आपके समान है। मैं वास्तव में बहुत छोटा सा मजा आया। आप निश्चित रूप से उस के माध्यम से प्राप्त करने के बाद कार्यात्मक प्रोग्रामिंग के बुनियादी निर्माणों को समझेंगे (और आपके जेली के दाग लगाने के लिए एक जगह होगी!)

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

मैं निश्चित रूप से लिटिल स्कीमर से शुरू करने की सलाह देता हूं। यह कम व्यावहारिक है, लेकिन अधिक मौलिक है।


17

फ़ंक्शनल प्रोग्रामिंग के संबंध में मेरे दो सेंट किसी विशेष भाषा पर टिकी हुई नहीं है, बल्कि फ़ंक्शनल प्रोग्रामिंग की मुख्य अवधारणाओं को सीखते हैं। मैंने एक प्रोजेक्ट में हेडफर्स्ट फेंककर फंक्शनल प्रोग्रामिंग सीखी, जिसमें मेरे बॉस ने जोर दिया कि एपीएल में सबका विकास हो। APL एक कार्यात्मक सरणी प्रसंस्करण भाषा है और LISP, Haskell, या किसी भी अन्य मुख्य धारा प्रोग्रामिंग भाषा से जितनी दूर है उतनी ही दूर हो सकती है। वास्तविक भुगतान तब हुआ जब मैंने पाया कि एक बार मैंने कार्यात्मक प्रोग्रामिंग प्रतिमान को "ग्रोक्ड" किया और मानसिक रूप से सीखा कि ऑटो-जादुई रूप से एक समस्या को एक कार्यात्मक कार्यक्रम में कैसे विघटित किया जाता है, मैं वास्तव में हास्केल जैसी अन्य कार्यात्मक भाषाओं के मुहावरेदार पहलुओं से भयभीत नहीं था। ओकेएमएल, स्कीम, स्काला और क्लोजर। मैं'

अगर मुझे पहली कार्यात्मक भाषा चुननी थी, तो मैं शायद हास्केल या स्टील बैंक कॉमन लिस्प (SBCL) चुनूंगा। हास्केल के लिए, मैंने लर्न यू यू हास्केल ... , रियल वर्ल्ड हास्केल , द हास्केल रोड टू लॉजिक, मैथ्स और प्रोग्रामिंग , और पर्ल ऑफ़ फंक्शनल एल्गोरिदम डिज़ाइन पढ़ा । सीएल के लिए, मैं लिस्प की भूमि , आर्टिफिशियल इंटेलिजेंस प्रोग्रामिंग के प्रतिमानों को पढ़ूंगा , और (यदि आप वास्तव में कट्टर हैं तो) लैम्बडा के लिए जाने दें । आप व्यावहारिक कार्यात्मक प्रोग्रामिंग दृष्टिकोणों और अवधारणाओं का व्यापक अवलोकन प्राप्त करने के लिए उन सभी पुस्तकों को मिला सकते हैं और मिलान कर सकते हैं।

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


6

मैं "दोनों को सीखता हूं" बिंदु से सहमत हूं, लेकिन कुछ और बिंदु हैं जो अब तक उल्लेख नहीं किए गए थे। सबसे पहले, यदि आप कार्यात्मक प्रोग्रामिंग के लिए नए हैं और आप हास्केल के साथ जाते हैं, तो आपको एफपी के अलावा कई नई चीजों का सामना करने की आवश्यकता है: आपको यह सीखने की आवश्यकता है कि आलसी वातावरण में कैसे रहना चाहिए, जो काफी प्रयास कर सकता है, और आपको इसकी आवश्यकता है एक "वास्तविक" प्रकार की प्रणाली से निपटने के लिए जो आप सी या सी # में उपयोग करने से बहुत दूर हो सकते हैं।

OTOH, स्कीम, एक विदेशी दिखने वाला वाक्यविन्यास है, लेकिन सीखने के लिए कोई स्थिर प्रकार की प्रणाली नहीं है, और यह एक सख्त भाषा है ताकि चीजें अधिक परिचित हों। इसके अलावा, योजना कार्यान्वयन बहुत निंदनीय है - उदाहरण के लिए, रैकेट एक चरम पर ले जाता है और एक आलसी संस्करण और एक सांख्यिकीय टाइप प्रदान करता है। इसका मतलब है कि आप "आसान" सामान के साथ शुरू कर सकते हैं और एक कार्यात्मक भाषा का उपयोग करके हैंग हो सकते हैं, और बाद में आप खुद को विकसित कर सकते हैं और टाइप किए गए संस्करण और आलसी का उपयोग कर सकते हैं। उन्हें अब आसान होना चाहिए, क्योंकि आपको एक बार में एक ही सुविधा से निपटना है। स्पष्ट होने के लिए, अवधारणाओंकाफी नए होने जा रहे हैं कि सिंटैक्टिक मुद्दा मामूली और ज्यादातर अप्रासंगिक होने जा रहा है। दूसरे शब्दों में, एक बार जब आप नई अवधारणाओं को प्राप्त करना शुरू करते हैं, तो आप पर्याप्त व्यस्त होंगे कि वाक्यविन्यास बस गायब हो जाएगा। (और यदि आप वास्तव में वाक्यविन्यास के बारे में परवाह करते हैं, तो हास्केल का वाक्यविन्यास कुछ ऐसा है जिसे मैं व्यक्तिगत रूप से बहुत सुंदर मानता हूं - लेकिन ऐसा इसलिए है क्योंकि यह आपके औसत C / C # / C ++ वाक्यविन्यास से बहुत दूर है।)

लेकिन यह सब कहने के बाद, मुझे लगता है कि एफ # के लिए भी एक अच्छा बिंदु है - आप कहते हैं कि आप इसे साइड की चीज के रूप में करते हैं, लेकिन जब आप एफपी सीखते हैं तो आप जल्द ही उस सभी अच्छे सामान का उपयोग करना चाहेंगे। F # का उपयोग करने का मतलब है कि आप अधिक "वास्तविक" चीजें कर सकते हैं क्योंकि संभवत: उसी तरह की समस्याओं से निपटना आसान है जो आप अपने दिन के काम से निपटते हैं। आदर्श रूप से, आप उस बिंदु पर पहुंच जाएंगे, जहां आप उस ओवर का उपयोग करने का लाभ देखेंगे, कहते हैं, C # - और इसे किसी प्रोजेक्ट में उपयोग करें। इसलिए जब आप F # का चयन न करने के लिए सही हों, क्योंकि आपके लिए इसे एक्सेस करना आसान है, तो आपको इस पर विचार करना चाहिए क्योंकि वास्तव में उपयोग करने से बेहतर कुछ नहीं हैइन नई अवधारणाओं। इसके विपरीत, यदि आप योजना या हास्केल का उपयोग करते हैं और इसे अपने उद्देश्य के लिए एक खिलौना भाषा मानते हैं (भले ही आप जानते हों कि कुछ लोग इसका उपयोग वास्तविक अनुप्रयोगों के लिए करते हैं), तो आप कभी भी पूरी एफपी चीज़ को गंभीरता से नहीं लेंगे। [लेकिन YMMV, यह ज्यादातर व्यक्तिपरक टिप्पणियों पर आधारित है और एक व्यक्ति से दूसरे व्यक्ति में बहुत भिन्न हो सकता है।]


6

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

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


मुझे ML / OCaml की ओर ले जाने के लिए धन्यवाद, और हाँ मैं "अपनी आत्मा को जोखिम में डालूंगा" और F # का पता लगाऊंगा। मैं लिनक्स, मैक ओएस एक्स और विंडोज (मुख्य रूप से पूर्व) के लिए विकसित करता हूं, लेकिन एफएसआई सभी तीन प्लेटफार्मों (लिनक्स और मैक ओएस एक्स पर मोनो चलाने) के लिए उपलब्ध है जो मैं पहले से ही करता हूं। तथ्य यह है कि Microsoft का पूरा वजन एक कार्यात्मक प्रोग्रामिंग भाषा के पीछे है (यद्यपि "अशुद्ध" एक), कार्यात्मक प्रोग्रामिंग के प्रशंसकों द्वारा रोने के बजाय स्वागत किया जाना चाहिए।
खतरा

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

6

अपने आप को 48 घंटों में एक योजना लिखें (हैस्केल में)

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


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

1
इसके साथ मुख्य समस्या यह है कि यह मॉनेक को पेश किए बिना पारसेक का परिचय देता है।
वैकल्पिक

@alternative parsec में एक मोनाडिक इंटरफ़ेस है, लेकिन इसमें कई अन्य कार्यों का उल्लेख नहीं करने के लिए एक एप्लिकेटिव इंटरफ़ेस भी है। यह नहीं है कि मानसनिक सामान्यीकरण से पहले पारसेक को पेश किया जाना अनुचित है
फिलिप जेएफ

4

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


3
"बहुत अधिक जाँच करता है कि आपका कोड सही है" बहुत गलत है। कोई भी प्रकार की प्रणाली ऐसा नहीं कर सकती है। (जब तक आपका टाइप सिस्टम एक वास्तविक प्रमेय कहावत नहीं है।)
एली बार्ज़िल्ले

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

1
@Eli "बहुत ज्यादा" यहाँ प्रमुख शब्द है। हास्केल में आप इसे लागू करने के बारे में सोचने में अधिक समय बिताते हैं, फिर कार्यान्वयन बहुत आसानी से हो जाता है। फिर आप यह सुनिश्चित करने के लिए इसे टाइप करते हैं कि आपके नक्शे, फोल्ड, आदि, समझदार हैं।
वैकल्पिक

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

@luqui - हां, मैंने इसका इस्तेमाल किया; नहीं, यह अभी भी एक गलत बयान है, अभ्यास और सिद्धांत दोनों में। यह कुछ ऐसा नहीं है जो हास्केल के लिए अद्वितीय है।
एली बारज़िले

1

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


0

यदि यह शुद्ध नहीं है, तो आप एक अनिवार्य भाषा का उपयोग कर सकते हैं, इसलिए हास्केल।


0

आपके प्रश्न के उत्तर में से एक में, मुझे यह लिंक काफी दिलचस्प लगा, क्योंकि यह आपको हास्केल और स्कीम का एक स्वाद देता है।

उस निफ्टी लिंक के अलावा, यहाँ मेरा आपके प्रश्न पर विचार है।

यदि आप एक अनिवार्य प्रोग्रामिंग पृष्ठभूमि से आ रहे हैं, तो आप कार्यात्मक प्रोग्रामिंग सीखने में बहुत प्रयास कर सकते हैं। मैं यह सुनिश्चित करूँगा कि सीखने का अनुभव खाली न हो। वह यह है कि आप इसे अपनी वर्तमान या अगली नौकरी पर लागू कर सकते हैं या यह किसी अन्य तरीके से आपकी मदद करेगा।

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

आपने विंडोज और एफ # का उल्लेख किया है। क्या यह आपकी वर्तमान स्थिति में आपकी मदद करेगा? मैं F # के बारे में कुछ नहीं जानता। क्या यह पर्याप्त है? मैं यह पूछता हूं, क्योंकि IMHO पायथन में कार्यात्मक निर्माण हैं, लेकिन यह क्लॉजेर में प्रोग्रामिंग की तरह नहीं है।

संक्षेप में, एक कार्यात्मक भाषा सीखें जो "वास्तव में" कार्यात्मक है और ऐसा करने में आपकी स्थिति के लिए सबसे अच्छा अर्थ है।


-2

एक रिश्तेदार शुरुआत के दृष्टिकोण से, मेरा सुझाव है कि यदि आप स्कीम के बारे में निर्णय नहीं लेते हैं, तो आप SICP से शुरू नहीं करेंगे। पुस्तक और वीडियो सूक्ष्मता से भरे हुए हैं और किसी को शुरू करने के लिए सहज नहीं हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.