2011-01-07 14 views

उत्तर

6

कुछ परिदृश्य जहाँ मैं Clojure का प्रयोग करेंगे:

  • आप एक नया, अत्यधिक समवर्ती आवेदन मज़बूती से पैमाने पर करने की जरूरत है कि निर्माण कर रहे हैं। मेरी राय में, क्लोजर की समवर्ती विशेषताएं (एसटीएम, अपरिवर्तनीय-दर-डिफ़ॉल्ट, लॉक फ्री एमवीसीसी) वर्तमान में प्रमुख भाषा का सर्वोत्तम है। Rick Hickey's excellent video पहचान और राज्य के बारे में एक महसूस करने का एक शानदार तरीका है।

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

  • आप एक कार्यात्मक प्रोग्रामिंग भाषा उपयोग करना चाहते हैं Clojure बहुत अच्छी है (यह काफी के रूप में नहीं "शुद्ध" है हास्केल के रूप में है, लेकिन सभी प्रमुख विशेषताएं है - प्रथम श्रेणी काम करता है, उच्च आदेश समारोह रचना, अचल स्थिति, आलस्य)

  • आप एक क्षेत्र है जहां कोड हेरफेर के लिए एक प्रमुख आवश्यकता है में काम करते हैं (compilers, DSLs, प्राकृतिक भाषा संसाधन, आनुवंशिक प्रोग्रामिंग), जहां लिस्प दर्शन आप अत्यंत उत्पादक होने के लिए सक्षम बनाता है "कोड डेटा है" । यह सामान्य रूप से homoiconic LISP आधारित भाषाओं के लिए एक मीठा स्थान है।

2

डेविन का जिक्र करने वाले बिल्कुल अपरिवर्तनीय गैर-उत्तर प्रदान करने के जोखिम पर: मैंने क्लोजर चुना क्योंकि मुझे कार्यात्मक प्रोग्रामिंग शैली पसंद है और क्लोजर मुझे जेवीएम पर ऐसा करने देता है और कई मौजूदा कोड के साथ इंटरऑप करता है जेवीएम पर चलता है।

तो सवाल तब बन जाता है: क्यों कार्यात्मक प्रोग्रामिंग?

अपरिवर्तनीय स्थिति - दुष्प्रभावों की कमी, आसान परीक्षण, समवर्तीता के लिए बेहतर समर्थन (और, भविष्य में, समांतरता)।

छोटे, कार्यात्मक घटकों जिन्हें आसानी से पुन: उपयोग किया जा सकता है और बड़े, लचीली प्रणालियों के निर्माण के लिए बनाया जा सकता है।

1

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

+0

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

+0

में लेने और/या क्रॉस-ट्रेन डेवलपर्स को लेने के लिए एक बहुत ही आसान भाषा हां, यह सच है कि भाषा का एक छोटा वाक्यविन्यास है और सीखना आसान है।मुझे लगता है कि क्लोजर को रूबी के रेल के समकक्ष एक हत्यारा ढांचा मिल जाता है या क्लोजर का उपयोग करके आईबीएम जैसी परियोजनाएं करते हैं, तो यह बहुत तेजी से बढ़ेगा और अधिक बड़ी कंपनियों में उगाया जाएगा। – Zubair

+2

आप क्लोजर को हमेशा "समवर्ती समवर्ती प्रोग्रामिंग के लिए जावा लाइब्रेरी" के रूप में पेश कर सकते हैं .... :-) – mikera

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