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