मैं सुझाव देता हूं कि क्रिस्टोफ़ ग्रैंड के thread safe blocking queue पर भी देखें; यह 20 से कम लाइनों से है, लेकिन बहुत सारी कार्यक्षमता पैक करता है, और मेरी राय में क्लोजर की समरूपता सुविधाओं, अपरिवर्तनीयता, परमाणुओं और आलसी अनुक्रमों के विशेषज्ञ उपयोग का प्रदर्शन होता है।
पर विचार करें कि जावा विकल्प java.util.concurrent.LinkedBlockingQueue is 842 lines के सूक्ष्म (यकीनन जटिल) कोड टिप्पणी की है, और आप को समझने के लिए Clojure वास्तव में अपने संगामिति वादे को पूरा करता है शुरू, महत्वपूर्ण रूप से अमूर्तता के स्तर को बढ़ाने और लगभग 10-20x कम कोड के साथ एक सही कार्यान्वयन प्रदान करना।
आप यह भी देखेंगे कि जावा कोड पढ़ने के दौरान पेड़ों के लिए जंगल देखना वास्तव में मुश्किल है ... यदि आपको दिया गया तो क्या आप इसे देखकर इसकी शुद्धता सुनिश्चित कर सकते हैं? यह भी ध्यान रखें कि यह कोड डौग ली (तर्कसंगत रूप से जावा कंसुरेंसी पर सबसे प्रमुख विशेषज्ञ) द्वारा लिखा गया था और जावा के लिए अत्यधिक पठनीय है; मुझे बहुत संदेह है कि मैं जावा में इस तरह के पठनीय प्रदर्शन कोड को जल्दी से लिख सकता हूं और इसकी शुद्धता सुनिश्चित कर सकता हूं।
क्लोजर संस्करण में इसकी तुलना करें और एक बार क्लोजर की मूल बातें से परिचित हो जाएं, यह अलग करना और समझना आसान है कि यह कैसे काम करता है ... 20 मिनट के भीतर मैं कार्यान्वयन की हर पंक्ति को समझने में सक्षम था, और इसके बारे में सुनिश्चित हो गया शुद्धता। और अब जब मैं क्लोजर के मुहावरे और एफपी से ज्यादा परिचित हूं, तो मुझे लगता है कि यह अब मुझे 5 मिनट के करीब ले जाएगा। मैं शायद क्लोजर में घंटे या मिनट में "सही" कोड लिखने में सक्षम हूं।
उपरोक्त जावा क्लास के क्रिस्टोफ clojure wrapper भी निर्देशक है क्योंकि यह पहले संस्करण के समान कार्यशील इंटरफ़ेस साझा करता है।
स्रोत
2010-06-01 11:55:06
विशेषताएं समझाते हुए एक अच्छा ब्लॉग: https: //perkss.github।io/#/क्लोजर/ConcurrencyClojure # टेक्स्ट-बॉडी – Matt