2013-08-13 3 views
6

मैंने एसबीसीएल और क्लोजर दोनों की कोशिश की है और पाया है कि मुझे क्लोजर के सिंटैक्स पसंद हैं लेकिन यह मेरे लिए एसबीसीएल की तुलना में बहुत धीमी है। क्या एसबीसीएल पर क्लोजर का कोई कार्यान्वयन है या क्या यह संभव होगा?क्या यह संभव होगा कि एसबीसीएल (या अन्य तेज लिस्प) पर क्लोजर (या क्लोजर सिंटैक्स) लागू करना?


मुझे https://github.com/ayrnieu/disclojure मिला जो मुझे प्रबुद्ध कर सकता है। :-)

+0

रन समय पर धीमा या शुरू करने के लिए धीमी गति से? रनटाइम की गति तुलनीय होनी चाहिए, हालांकि स्टार्टअप समय एक ज्ञात मुद्दा है। – noisesmith

+0

आप कौन से क्लोजर चल रहे हैं? शायद आप क्लोजर की तुलना में एसबीसीएल में तेजी से ऐसा कुछ उदाहरण में संपादित कर सकते हैं? – Sylwester

+0

छोटे कार्यक्रमों के एक विविध सेट के लिए, एसबीसीएल कुछ शर्तों के तहत दूसरों पर क्लोजर बेहतर करता है: [बेंचमार्क गेम] देखें (http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?test=all&lang = clojure और lang2 = SBCL और डेटा = u64q)। मैं व्यक्तिगत रूप से सोचता हूं कि एसबीसीएल एक अविश्वसनीय कार्यान्वयन है। मेरे मुख्य आवेदन के लिए किसी भी अन्य आम लिस्प से तेज। क्लोजर को बंद करने की कोशिश नहीं की है। सीएल के सिंटैक्टिक क्विर्क पसंद नहीं करने के लिए किसी को दोष नहीं दे सकता। – Mars

उत्तर

8

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

  • JVM
  • जावास्क्रिप्ट/ECMAScript

आम तौर पर स्थिर के लिए:

  • CLR/.net

यह वर्तमान में स्थिर के लिए हैऔर मैं प्रयोगात्मक के बारे में पता बनाता है के लिए:

  • अजगर (योजना के माध्यम से)
  • सी
  • योजना
  • आईओएस

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

1

यह संभव है लेकिन इसकी संभावना नहीं है कि आप बहुत तेजी से प्राप्त करेंगे, फिर यह JVM पर है।

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

जेवीएम पर तेजी से क्लोजर बनाना कठिन लेकिन व्यावहारिक है, एसबीसीएल के लिए एक बंदरगाह संभवतः बेहतर शर्त है।

2

जबकि पिछले उत्तरों ने विभिन्न भाषाओं पर क्लोजर की मेजबानी की कठिनाइयों को बताया, वहां एक प्रोग्रामिंग भाषा है जो मुझे लगता है कि यह देखने के लिए दिलचस्प है: Shen। इसे 45 primitive instructions, के न्यूनतम सेट के साथ डिज़ाइन किया गया है ताकि विभिन्न भाषाओं में पोर्ट करना आसान हो। यह वर्तमान में सीएलआईएसपी, एसबीसीएल, क्लोजर, स्कीम, रूबी, पायथन, जावा और जावास्क्रिप्ट के तहत चलता है। ऐसा लगता है कि यह एमएल और लिस्प का मिश्रण है, हालांकि मैंने इसके साथ प्रोग्राम नहीं किया है।

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