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