2011-08-05 12 views
10

मैं विभिन्न जेवीएम भाषाओं के बारे में बहुत कुछ सुन रहा हूं, फिर भी वाष्पवेयर मोड में, जो किसी भी तरह से संशोधन को लागू करने का प्रस्ताव करता है। मेरे पास यह घबराहट आधा याद है (या पूरी तरह कल्पना की गई है, जो नहीं जानता) ने सोचा कि कहीं मैंने पढ़ा है कि किसी भी तरह से स्कैला ने जेवीएम के प्रकार के मिटाए जाने का लाभ उठाया है ताकि वह चीजों को करने में सक्षम न हो। जो वास्तव में मुझे समझ में नहीं आता है क्योंकि सीएलआर के साथ-साथ जेवीएम पर स्कैला लागू किया गया है, इसलिए यदि संशोधन ने सीएलआर कार्यान्वयन में कुछ प्रकार की सीमा उत्पन्न की है (जब तक सीएलआर पर स्कैला सिर्फ संशोधन को अनदेखा नहीं कर रहा है) ।स्कैला के लिए एरर टाइप करने के कोई फायदे हैं?

तो, क्या स्कैला के लिए मिरर टाइप करने के लिए कोई अच्छी तरफ है, या एक अप्रत्याशित अच्छी चीज का संशोधन है?

+0

यदि केवल सबसे सर्वव्यापी JVM भाषा का पालन किया जाता है। :( –

+2

"जब तक सीएलआर पर स्कैला सिर्फ संशोधन को अनदेखा नहीं कर रहा है" ... यह करता है। – soc

उत्तर

13

Ola Bini's blog देखें। जैसा कि हम सभी जानते हैं, जावा का उपयोग-साइट कॉन्वर्सिस है, जहां भी आपको लगता है कि भिन्नता उचित है, वहां छोटे प्रश्न चिह्न होने के द्वारा लागू किया गया है। स्कैला में डिज़ाइन-साइट कॉन्वर्सिस है, जिसे क्लास डिज़ाइनर द्वारा कार्यान्वित किया गया है। वह कहता है:

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

...

यह सब क्या मतलब है कि आप JVM को reified जेनरिक जोड़ना चाहते हैं, तो आप बहुत कुछ है कि कार्यान्वयन दोनों सभी स्थैतिक भाषाओं कि में नवाचार करने के लिए चाहते हैं उसे शामिल कर सकते हैं होना चाहिए जेनरिक्स के अपने संस्करण, और सभी गतिशील भाषाओं जो अच्छा कार्यान्वयन और जावा पुस्तकालयों के साथ एक अच्छी इंटरफेसिंग सुविधा बनाना चाहते हैं। क्योंकि यदि आप संशोधित जेनरिक जोड़ते हैं जो इन मानदंडों को पूरा नहीं करता है, तो आप नवाचार को बाधित करेंगे और इसे को बहु भाषा VM के रूप में JVM का उपयोग करने के लिए कठिन बना देंगे।

अर्थात हम JVM में जेनरिक reified था, सबसे अधिक संभावना उन reified जेनरिक नहीं हम वास्तव में स्काला के बारे में जैसी सुविधाओं के लिए उपयुक्त होगा, और हम कुछ करने से इनकी के साथ फंस रहे होते।

+0

ग्रेट उत्तर, धन्यवाद! – soc

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