क्या कोई स्काला, ग्रूवी और क्लोजर के बीच के प्रमुख अंतरों को समझा सकता है। मैं इनमें से प्रत्येक संकलन को JVM पर चलाने के लिए जानता हूं, लेकिन मैं उनके बीच एक साधारण तुलना करना चाहूंगा।
क्या कोई स्काला, ग्रूवी और क्लोजर के बीच के प्रमुख अंतरों को समझा सकता है। मैं इनमें से प्रत्येक संकलन को JVM पर चलाने के लिए जानता हूं, लेकिन मैं उनके बीच एक साधारण तुलना करना चाहूंगा।
जवाबों:
ग्रूवी एक गतिशील रूप से टाइप की जाने वाली भाषा है, जिसका सिंटैक्स जावा के बहुत करीब है, जिसमें कई सिंटैक्स सुधार हैं जो लाइटर कोड और कम बॉयलरप्लेट की अनुमति देता है। यह एक दुभाषिया के साथ-साथ संकलित होने के माध्यम से चल सकता है, जो तेजी से प्रोटोटाइप, स्क्रिप्ट, और गतिशील भाषाओं को सीखने के लिए एक नया वाक्यविन्यास सीखने के बिना अच्छा लगता है (यह मानते हुए कि आप जावा जानते हैं)। ग्रूवी 2.0 के रूप में, इसमें स्थैतिक संकलन के लिए भी समर्थन बढ़ रहा है । ग्रूवी क्लोजर का समर्थन करता है और कुछ हद तक कार्यात्मक शैली में प्रोग्रामिंग के लिए समर्थन करता है, हालांकि यह अभी भी कार्यात्मक प्रोग्रामिंग की पारंपरिक परिभाषा से काफी दूर है।
क्लॉजुर , लिस्प की एक बोली है जिसमें सॉफ्टवेयर ट्रांजेक्शनल मेमोरी जैसी कुछ उन्नत सुविधाएँ हैं । यदि आप लिस्प को पसंद करते हैं और जेवीएम के तहत कुछ इस तरह का उपयोग करना चाहते हैं, तो क्लोजर आपके लिए है। यह संभवतः जेवीएम पर चलने वाली सबसे कार्यात्मक भाषा है , और निश्चित रूप से सबसे प्रसिद्ध है। साथ ही, इसमें अन्य लिस्प बोलियों की तुलना में अपरिवर्तनीयता पर अधिक जोर दिया गया है , जो इसे कार्यात्मक भाषा के प्रति उत्साही लोगों के दिल के करीब ले जाती है।
स्काला पूरी तरह से ऑब्जेक्ट ओरिएंटेड भाषा है, जावा से अधिक, गैर-शोध भाषाओं पर उपलब्ध सबसे उन्नत प्रकार की प्रणालियों में से एक है, और निश्चित रूप से जेवीएम पर सबसे उन्नत प्रकार की प्रणाली है। यह ऑब्जेक्ट ओरिएंटेशन से समझौता किए बिना, कार्यात्मक भाषाओं की कई अवधारणाओं और विशेषताओं को भी जोड़ता है, लेकिन कार्यात्मक भाषा विशेषताओं पर इसका समझौता बाद के कुछ उत्साही लोगों को प्रभावित करता है।
ग्रूवी को ग्रिल्स में अच्छी स्वीकृति और एक लोकप्रिय वेब ढांचा है। यह ग्रैड बिल्ड सिस्टम को भी अधिकार देता है, जो मावेन का एक लोकप्रिय विकल्प बन रहा है। मुझे व्यक्तिगत रूप से लगता है कि यह सीमित उपयोगिता वाली भाषा है, विशेष रूप से जेथॉन और जेरीबी दूसरों की तुलना में जेवीएम-भूमि पर अतिक्रमण करना शुरू करते हैं।
क्लोजर, यहां तक कि कुछ बहुत ही दिलचस्प सुविधाओं पर छूट, जेवीएम पर एक लिस्प बोली होने के नाते एक मजबूत अपील है। यह अपनी लोकप्रियता को सीमित कर सकता है, प्रदान किया जा सकता है, लेकिन मुझे उम्मीद है कि इसके पास लंबे समय तक वफादार समुदाय रहेगा।
स्काला जावा के साथ सीधे प्रतिस्पर्धा कर सकता है, और इसे लगभग सभी पहलुओं पर अपने पैसे के लिए एक रन दे सकता है। बेशक, यह लोकप्रियता में प्रतिस्पर्धा नहीं कर सकता है, और एक मजबूत कॉर्पोरेट समर्थन की कमी कॉर्पोरेट वातावरण पर इसकी स्वीकृति में बाधा बन सकती है। यह जावा की तुलना में बहुत अधिक गतिशील भाषा है, इस अर्थ में कि भाषा कैसे विकसित होती है। भाषा के नजरिए से, यह अच्छी बात है। उन उपयोगकर्ताओं के दृष्टिकोण से, जिनके पास कोड की हजारों पंक्तियां होने की योजना है, ऐसा नहीं है।
अंतिम प्रकटीकरण के रूप में, मैं स्काला से बहुत परिचित हूं, और केवल अन्य दो से परिचित हूं।
स्काला फ़नल के रूप में जानी जाने वाली एक शुद्ध कार्यात्मक भाषा से विकसित हुई और लगभग सभी जावा के वाक्यविन्यास के एक साफ-सुथरे कमरे के कार्यान्वयन का प्रतिनिधित्व करती है, जिसमें केवल एक स्पष्ट सुधार किया जा सकता है या जहां यह भाषा की कार्यात्मक प्रकृति से समझौता करेगा। इस तरह के मतभेदों में स्थिर तरीकों के बजाय सिंगलटन ऑब्जेक्ट्स शामिल हैं, और प्रकार का अनुमान।
इसका अधिकांश हिस्सा पिज़्ज़ा भाषा के साथ मार्टिन ओडस्की के पूर्व काम पर आधारित था । OO / FP का एकीकरण केवल नज़दीकियों से परे जाता है और इसने भाषा को पोस्ट-फंक्शनल के रूप में वर्णित किया है।
इसके बावजूद, यह कई मायनों में जावा के सबसे करीब है। मुख्य रूप से OO समर्थन और स्थिर टाइपिंग के संयोजन के कारण, लेकिन यह भी भाषा डिजाइन में स्पष्ट लक्ष्य के कारण कि यह जावा के साथ बहुत कसकर एकीकृत होना चाहिए।
ग्रूवी स्पष्ट रूप से जावा की दो सबसे बड़ी आलोचनाओं से निपटता है
यह शायद है वाक्य रचना विशेष रूप से पटकथा syle कार्यक्रमों लिखने के लिए - अमीर कार्यात्मक निर्माणों Clojure और स्काला प्रदान कि से कुछ नहीं की पेशकश, लेकिन अभी भी एक निश्चित विकासवादी सुधार की पेशकश जावा के सबसे करीब,।
ग्रूवी के पास तीन भाषाओं का सबसे मजबूत वाणिज्यिक समर्थन है, जो ज्यादातर स्प्रिंग्स स्रोत के माध्यम से है।
क्लोजर LISP परिवार में एक कार्यात्मक भाषा है, यह गतिशील रूप से टाइप किया गया है।
STM सपोर्ट जैसे फीचर्स इसे कुछ बेहतरीन आउट-ऑफ-द-बॉक्स कंजर्वेशन सपोर्ट देते हैं, जबकि स्काला को इसे डुप्लिकेट करने के लिए अक्का जैसी 3-पार्टी लाइब्रेरी की आवश्यकता होती है ।
सिंथेटिक रूप से, यह विशिष्ट जावा कोड से तीन भाषाओं का सबसे दूर भी है।
मुझे यह भी बताना होगा कि मैं स्काला से सबसे अधिक परिचित हूँ :)
मेरे पास कभी क्लोजर के साथ खेलने का समय नहीं था। लेकिन स्काला बनाम ग्रूवी के लिए, यह जेम्स स्ट्रेचन - ग्रूवी निर्माता का शब्द है
"हालांकि मेरी टिप हालांकि जेवैक के दीर्घकालिक प्रतिस्थापन के लिए स्काला है। मैं इससे बहुत प्रभावित हूं! मैं ईमानदारी से कह सकता हूं कि अगर किसी ने मुझे मार्टिन ओडस्की, लेक्स स्पून और बिल वेनर्स द्वारा 2003 में स्कैला पुस्तक में प्रोग्रामिंग दिखाया था। "शायद ग्रूवी ने कभी नहीं बनाया है।"
आप पूरी कहानी यहां पढ़ सकते हैं
वे अलग-अलग हो सकते हैं जहां से वे आ रहे हैं या जो डेवलपर्स वे मुख्य रूप से लक्षित कर रहे हैं।
ग्रूवी जावा के स्क्रिप्टिंग संस्करण की तरह एक सा है। बड़े आर्किटेक्चर द्वारा समर्थित फुर्तीली अनुप्रयोगों के निर्माण के लिए लंबे समय तक जावा प्रोग्रामर घर पर महसूस करते हैं। ग्रिल्स पर ग्रूवी है, जैसा कि नाम रेल ढांचे के समान है। उन लोगों के लिए जो हर समय जावा की वाचालता से परेशान नहीं होना चाहते हैं।
स्काला एक ऑब्जेक्ट ओरिएंटेड और फंक्शनल प्रोग्रामिंग लैंग्वेज है और रूबी या पायथन प्रोग्रामर इस के अधिक करीब महसूस कर सकते हैं। यह इन प्रोग्रामिंग भाषाओं में पाए जाने वाले बहुत से सामान्य अच्छे विचारों को रोजगार देता है।
क्लोजर लिस्प प्रोग्रामिंग भाषा की एक बोली है इसलिए लिस्प, स्कीम या हास्केल डेवलपर्स इस भाषा के साथ विकास करते समय घर पर महसूस कर सकते हैं।
मैं स्कॉट डेविस, कॉपीराइट 2008 द्वारा प्रैग्मेटिक प्रोग्रामर्स की किताब "ग्रूवी रेसिपीज: ग्रॉसिंग ऑफ द जावा" पढ़ रहा हूं और उसी साल अप्रैल में छपी है।
यह थोड़ा पुराना है लेकिन पुस्तक यह स्पष्ट करती है कि ग्रूवी सचमुच जावा का एक विस्तार है। मैं जावा कोड लिख सकता हूं जो बिल्कुल जावा की तरह कार्य करता है और फ़ाइल का नाम बदलकर * .groovy करता है और यह ठीक काम करता है। पुस्तक के अनुसार, यदि मैं अपेक्षित पुस्तकालयों को शामिल करता हूं तो रिवर्स सच है। अब तक, प्रयोग इसे सहन करने के लिए लगता है।
जाहिर है, वाक्यविन्यास पूरी तरह से अलग है (ग्रूवी जावा के सबसे करीब है), लेकिन मुझे लगता है कि वह नहीं है जो आप के लिए पूछ रहे हैं।
यदि आप उन्हें जावा एप्लिकेशन को स्क्रिप्ट करने के लिए उपयोग करने में रुचि रखते हैं, तो स्काला शायद एक अच्छा विकल्प नहीं है, क्योंकि जावा से इसका मूल्यांकन करने का कोई आसान तरीका नहीं है , जबकि ग्रूवी विशेष रूप से उस उद्देश्य के लिए अनुकूल है।
eval
आवश्यकता नहीं है।