2009-06-17 9 views
73

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

क्या कोई ऐसा है जो दूसरों की तुलना में अधिक लोकप्रिय है? क्या उनमें से कोई भी "पूर्ण" है, जैसा कि बेहतर दस्तावेज और समर्थित है? इस बोली के पेशेवरों और विपक्ष क्या हैं?

+1

डुप्लिकेट: http://stackoverflow.com/questions/563356/which-lisp-should-i-learn –

+0

मैंने इससे पहले कि मैंने यह पूछा था, लेकिन इस सवाल की प्रकृति विकसित हुई क्योंकि मैं इसे टाइप कर रहा था। मैं सुनिश्चित करता हूं कि पहिया को पुनर्जीवित न करें। –

+0

तो इस प्रश्न के बीच क्या अंतर है और एक ग्रेग ऊपर उल्लेखित है? –

उत्तर

21

मैं योजना कहूंगा, पूरी तरह से Little Schemer की वजह से, जो कि सबसे मज़ेदार मजेदार लेकिन अभी तक की अत्यधिक कठिन किताबों में से एक है जिसे मैंने कभी पढ़ने की कोशिश की है।

+13

एसआईसीपी मत भूलना! http://mitpress.mit.edu/sicp/। यह एक क्लासिक पढ़ा है। –

+6

_ द लिटिल लिस्पर_ के दो या तीन संस्करण थे, इससे पहले कि छोटे लिमर Schemer_ उन लोगों के अनुवाद के रूप में बाहर आए। –

5

मैं सीएल पसंद करता हूं, क्योंकि मुझे ऑब्जेक्ट उन्मुख प्रोग्रामिंग पसंद है, और सीएलओएस सबसे अच्छी ऑब्जेक्ट सिस्टम है।

+5

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

4

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

यहां अपने प्रारंभिक प्रोग्रामिंग पाठ्यक्रम में Why MIT switched from Scheme to Python पर एक दिलचस्प लेख है।

8

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

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

+0

ऐसा लगता है कि न तो सीएल या योजना "बेहद व्यावहारिक" हैं, जबकि वे वास्तव में काफी व्यावहारिक हैं। विशेष रूप से सीएल मानक * व्यावहारिक विचारों से * जन्म * था। – skypher

+2

प्रोग्रामिंग भाषा परिदृश्य 1 99 4 से बदल गया है, मुझे नहीं पता कि सीएल मानक उस समय से क्या सीखा है उसे समायोजित करने के लिए सीएल मानक बदलने/विकसित करने जा रहा है। दुनिया आगे बढ़ रही है और जहां तक ​​मैं कह सकता हूं कि सीएल अभी भी खड़ा है। मुझे सीएल पसंद है, क्लोजर के पास अपनी शक्ति तक पहुंचने का कोई तरीका है, लेकिन मुझे नहीं लगता कि सीएल कैसे विकसित हो रहा है- यदि आप मानकीकृत भाषाओं का उपयोग करने जा रहे हैं तो एक विकासवादी मार्ग स्पष्ट होना चाहिए। इसके बिना, एक भाषा बहुत व्यावहारिक पसंद _not_ की संभावना है। – dnolen

+3

सीएल विकसित हुआ है और बहुत उपयोगी पुस्तकालयों के माध्यम से विकसित हो रहा है। आज की सभी भाषा "आधुनिक" भाषाओं की तुलना में मूल भाषा 1 99 4 में पहले से ही अधिक शक्तिशाली थी। – Svante

9

मैं SBCL पर सामान्य लिस्प की सिफारिश कर सकता हूं। यह संयोजन तेज, शक्तिशाली, परिपक्व और अच्छी तरह से प्रलेखित है।

2

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

योजना उदाहरण के लिए निरंतरता है, और योजना में उन लोगों के बारे में जानना अच्छा है, भले ही उन्हें आम लिस्प में लागू किया जा सके।

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

62

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

  1. योजना: यहां कुछ संभावनाएं हैं (यह पिछले आप जा रहा है और लंबे समय तक के लिए एक बहुत सीखने रखेंगे।)। शायद सभी बोलीभाषाओं में सबसे साफ है। इसमें कोई संदेह नहीं है कि क्यों The Little Schemer का अनुवाद LISP से योजना में किया गया था। पांचवीं योजना मानक विनिर्देश, R5R2, अपने आप में और एक अद्भुत शिक्षा है; यह सबसे अच्छी भाषा और लाइब्रेरी विनिर्देश हो सकता है जिसे मैंने कभी पढ़ा है, साथ ही कम से कम व्यापक रूप से व्यापक है। PLT Scheme मंच में एक सभ्य दुभाषिया और संकलक शामिल है, स्क्रिप्टिंग के लिए अच्छा है, और इसमें कुछ दृश्य उपकरण भी हैं जो इसे सीखने के लिए उत्कृष्ट बनाते हैं।

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

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

  4. Emacs Lisp। एलआईएसपी के मामले में, यह वहां के बेहतर उदाहरणों में से एक नहीं है। इसकी सबसे बड़ी गलतियों में से एक गतिशील स्कोपिंग है, लेकिन कई अन्य हैं। हालांकि, यदि आप Emacs उपयोगकर्ता हैं, तो यह सबसे शक्तिशाली टूल हो सकता है जिसे आप संपादक के उपयोग को बेहतर बनाने के लिए सीख सकते हैं। Emacs को विस्तारित करने के अलावा, Emacs Lisp सीखने से आप वास्तव में कितना सीखेंगे, मेरे लिए एक खुला प्रश्न है; मुझे नहीं पता कि एमएक्स लिस्प में वास्तव में कितनी रोचक तकनीकों जैसे उच्च-आदेश कार्यों का उपयोग किया जाता है।

+3

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

+0

क्लोजर में पूंछ कॉल अनुकूलन नहीं है, और ऐसा नहीं हो सकता है, क्योंकि JVM बाइटकोड इसका समर्थन नहीं करता है। यह सब एक "पुनरावृत्ति" विशेष रूप है जो वर्तमान कार्य को स्वयं-पुन: पेश करता है। – Svante

+0

स्वेंट: आपकी टीसीओ टिप्पणी के लिए धन्यवाद; मैंने पोस्ट में एक नोट जोड़ा है कि यदि JVM टीसीओ समर्थन जोड़ता है तो 'रिकूर' का उपयोग करने की आवश्यकता दूर हो सकती है। –

0

एलएफई (लिस्प स्वादयुक्त एरलांग) अच्छा होगा। आप Erlang वीएम के शीर्ष पर लिस्प वाक्यविन्यास हो सकता है।

0

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

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