आप सादगी और स्वच्छता, आकर्षक सुविधाओं और एक मंच के बीच एक संतुलन की तलाश करना चाहते हैं जो आपको दिलचस्प और उपयोगी सॉफ़्टवेयर (खुद को) लिखने के साथ-साथ एक शिक्षण उपकरण के रूप में भी काम करने की अनुमति देगा। (यह अंतिम आपको लंबे समय तक बनाए रखेगा और सीखता रहेगा।) यहां कुछ संभावनाएं हैं:
योजना।संभवतः सभी बोलियों में सबसे स्वच्छ। यह कोई संदेह नहीं है कि लिटिल स्कीमर का लिस से स्कीम में अनुवाद क्यों किया गया था। पांचवीं योजना मानक विनिर्देश, R5RS , अपने आप में एक अद्भुत शिक्षा है; यह सबसे अच्छी भाषा और लाइब्रेरी विनिर्देश हो सकता है, जिसे मैंने कभी पढ़ा है, साथ ही सबसे छोटा जो कि काफी व्यापक है। PLT योजना (अब रैकेट) मंच, एक काफी सभ्य दुभाषिया और संकलक शामिल पटकथा के लिए अच्छा है, और भी कुछ दृश्य उपकरण है कि यह सीखने के लिए उत्कृष्ट बनाने के है।
आम लिस्प। संभवतः सबसे पोर्टेबल और व्यापक संस्करण, यह सबसे अधिक संभावना है कि आप क्या चाहते हैं यदि आप वाणिज्यिक सॉफ्टवेयर जैसी चीजें लिखना चाहते हैं। मानक व्यापक पुस्तकालयों को परिभाषित करता है, और कई और परे उपलब्ध हैं, इसमें CLOS है , जो संभवतः आपको किसी भी OO भाषा की तुलना में OO के बारे में अधिक सिखाएगा, और कुछ संकलक बहुत अच्छे हैं। नुकसान में कुछ मौसा शामिल हैं, जिनके पास स्कीम नहीं है (जैसे कि वेरिएबल्स के लिए एक अलग नामस्थान होना, जो कार्यों को संदर्भित करता है), स्वच्छ और सरल नहीं होना (जैसा कि कुछ भी है जो एक्सटेंशन होना आवश्यक है और समझौता करना आवश्यक है) वास्तविक दुनिया में बड़े अनुप्रयोगों के लिए), हाइजेनिक मैक्रो नहीं है, और योजना की तुलना में बहुत कम पुनरावृत्ति पर जोर दिया गया है।
Clojure।यह जेवीएम पर चलता है, जो इसे जावा डेवलपर्स के लिए एक पैर दे सकता है। यह कुछ मौसा है (उदाहरण के लिए, आपको टेल कॉल ऑप्टिमाइज़ेशन के लिए स्पष्ट रूप से पूछना चाहिए, हालांकि यह एक दिन बदल सकता है यदि TCO को JVM में जोड़ा जाता है)। मैक्रो, जबकि हाइजेनिक नहीं है, आपके पास वैरिएबल कैप्चर से बचने में मदद करने के लिए कुछ विशेषताएं हैं, इसलिए यदि आप वास्तव में सीएल की तुलना में ऐसा कर रहे हैं, तो आप वैरिएबल को कैप्चर कर सकते हैं। आपको सभी जावा पुस्तकालयों तक आसान पहुँच मिल गई है; यह शायद "वास्तविक दुनिया" कोड के लिए एक अच्छी बात है, और सीखने के मामले में काफी व्यर्थ है। इसे एसटीएम के लिए लगातार डेटा संरचनाओं और समर्थन के लिए पुस्तकालयों का एक सेट मिला है, जो इसे समवर्ती दृष्टिकोण से बहुत दिलचस्प बनाता है; अगर यह आपकी सबसे अच्छी शर्त है तो आप ' समवर्ती और समानांतर प्रोग्रामिंग से निपटने के नए तरीकों के बारे में अधिक जानने में रुचि रखते हैं। ऐसा प्रतीत होता है जैसे कि क्लोज़र बड़े, उत्पादन अनुप्रयोगों के लिए जावा के रूप में उपयोग करने योग्य है, इस अर्थ में कि यह "बदसूरत सामान" करने की क्षमता रखता है जो आप उत्पादन ऐप में करते हैं जो आप नहीं करते हैं और नहीं करते हैं जब आप सीख रहे हैं।
Emacs लिस्प। एक LISP के संदर्भ में, यह बेहतर उदाहरणों में से एक नहीं है। इसका सबसे बड़ा दोष गतिशील स्कूपिंग है, लेकिन कई अन्य हैं। हालाँकि, यदि आप एक Emacs उपयोगकर्ता हैं, तो यह सबसे शक्तिशाली उपकरण हो सकता है जिसे आप संपादक के उपयोग में सुधार करना सीख सकते हैं। आप वास्तव में Emacs सीखने से कितना कुछ सीखेंगे, Emacs को कैसे आगे बढ़ाया जाए, यह मेरे लिए एक खुला प्रश्न है; मुझे नहीं पता कि एमएसीएस लिस्प में उच्च-क्रम के कार्यों जैसे कितनी दिलचस्प तकनीक का उपयोग वास्तव में किया जाता है।
2018 अपडेट
इस पोस्ट को लिखे हुए लगभग एक दशक हो चुका है और भाषाओं का लिस्प परिवार अब सामान्य प्रोग्राम चेतना में महत्वपूर्ण कर्षण प्राप्त कर रहा है। इसमें से अधिकांश क्लोजर से संबंधित प्रतीत होती है जो न केवल अपने आप में लिस्प की एक अलग से बोली बन गई है, अपने स्वयं के कई अच्छे विचारों को पेश करती है, लेकिन अब एक समान-समरूप संस्करण है जो जावास्क्रिप्ट को लक्षित करता है और कई अन्य लिस्प को प्रेरित करता है। अन्य प्लेटफार्मों को लक्षित करना। उदाहरण के लिए, Hy ने CPython AST और bytecode को निशाना बनाया, पहला लक्ष्य Python के साथ अंतर्संचालनीयता का था, लेकिन "संदेह में होने पर" Clojure विचारों का उपयोग करना। (हालांकि नवीनतम कमिट्स से, बाद वाला थोड़ा बदल सकता है।)
आपकी निर्णय लेने की प्रक्रिया में जो बड़ा बदलाव आता है, वह यह है कि आपको लिसप्स या लिस्प जैसी भाषाओं के लिए भी उपलब्ध होना चाहिए और उन भाषाओं या प्लेटफ़ॉर्मों के लिए उपलब्ध हैं, जिनका आप पहले से उपयोग करते हैं, यह पर्ल , रूबी , एरलैंग , गो या भी हैं माइक्रोकंट्रोलर पर सी ++ ।