कौन सा आम लिस्प कार्यान्वयन का उपयोग करने के लिए? [बन्द है]


45

कॉमन लिस्प में विकास शुरू करने के साथ एक तत्काल समस्या लगती है: एक कार्यान्वयन का चयन करना। सीएल कार्यान्वयन पर विचार करते समय किसी को क्या ध्यान रखना चाहिए, और कितना वजन सहन करना चाहिए?

क्या यह एएनएसआई मानक के अनुरूप होना चाहिए? क्या इसे SLIME द्वारा समर्थित किया जाना चाहिए? क्या कुछ कार्यान्वयनों में अच्छे पुस्तकालयों, प्रलेखन आदि का अभाव है?


दिलचस्प सवाल: मैं अभी "प्रैक्टिकल कॉमन लिस्प" पढ़ रहा हूं और मैं सीएलआईएसपी में अपने उदाहरणों की कोशिश करता हूं, लेकिन मुझे लगता है कि कोई भी कार्यान्वयन मानक के अनुरूप है: कॉमन लिस्प मुझे बहुत परिपक्व और स्थिर भाषा लगती है।
जियोर्जियो

जवाबों:


25

यह आपकी विशिष्ट आवश्यकताओं, और विशेष कार्यान्वयन के स्ट्रेंथ और कमजोरियों पर निर्भर करता है। उस ने कहा, यहाँ विभिन्न कार्यान्वयनों के बारे में सोचते समय मेरे दिमाग में सबसे पहले आता है:

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

CLISP एक अपेक्षाकृत छोटा, बाइट-संकलन कार्यान्वयन है जो स्क्रिप्टिंग के लिए दिलचस्प हो सकता है।

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

यदि आप JVM पर तैनाती करना चाहते हैं, तो ABCL है।

एम्बेडेड उपयोग के लिए, ईसीएल।

Allegro में AllegroGraph, AllegroStore, दृश्य GUI बिल्डर का उपयोग करने के लिए एक सरल और बहुत कुछ है, लेकिन हर कोई अपनी लाइसेंस शर्तों को पसंद नहीं करता है।

LispWorks, एक अच्छा क्रॉस-प्लेटफ़ॉर्म GUI टूलकिट और लाइसेंसिंग शर्तों के साथ अंतिम-उपयोगकर्ता अनुप्रयोग प्रोग्रामिंग के लिए खुद को बहुत अच्छी तरह से उधार देने लगता है जो कि छोटी टीमों और एकल प्रोग्रामर को Allegro की तुलना में बेहतर फिट कर सकता है। (कम से कम यह वही है जो मैं पसंद करूंगा।)

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

क्या यह ASNI मानक के अनुरूप होना चाहिए?

यदि यह नहीं होता तो यह सीएल कार्यान्वयन नहीं होता। (बेशक, व्यवहार में कुछ विचलन हो सकता है, लेकिन अनुरूपता कम से कम लक्ष्य होना चाहिए।)

क्या इसे SLIME द्वारा समर्थित किया जाना चाहिए?

ज़रूर - अगर आप SLIME का उपयोग करते हैं। (मेरी राय में, यह इस समय उपलब्ध सबसे अच्छा लिस्प वातावरण है, लेकिन प्रत्येक अपने स्वयं के लिए।)

क्या कुछ कार्यान्वयनों में अच्छे पुस्तकालयों, प्रलेखन आदि का अभाव है?

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


22

डैन वेनरेब (दुर्भाग्य से पिछले साल उनका निधन हो गया) ने एक अवलोकन लिखा:

लिस्प सर्वेक्षण

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

  • नि: शुल्क, नो-कॉस्ट, सी-आधारित (इस प्रकार व्यापक रूप से चित्रित): ईसीएल , सीएलआईएसपी

  • मुफ्त, नो-कॉस्ट, जेवीएम-आधारित: एबीसीएल

  • नि: शुल्क, नो-कॉस्ट, व्यापक देशी कार्यान्वयन: SBCL , CCL , CMUCL

  • मालिकाना, वाणिज्यिक, बहुत व्यापक मूल कार्यान्वयन, जीयूआई-आधारित ऐप के लिए उत्कृष्ट समर्थन: एलेग्रो सीएल , लिस्पवर्क्स

OS / प्लेटफ़ॉर्म द्वारा:

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