वाक्य का अर्थ क्या है "हम चाहते थे कि इसे संकलित किया जाए ताकि यह सीपीयू को गलत सामान न जलाए।"


10

मैं इस लेख को पढ़ रहा था । इसका निम्नलिखित पैराग्राफ है।

और क्या स्काला तेजी से निकला? खैर, आपकी उपवास की परिभाषा क्या है? जावा के रूप में उपवास के बारे में। यह सी या असेंबली के रूप में तेजी से होने की जरूरत नहीं है। रूबी की तुलना में पायथन काफी तेज नहीं है। हम कम मशीनों के साथ और अधिक करना चाहते थे, ताकि संगामिति का बेहतर लाभ उठाया जा सके; हम चाहते थे कि इसे संकलित किया जाए ताकि यह सीपीयू को गलत सामान न जलाए।

मैं अंतिम वाक्य का अर्थ ढूंढ रहा हूं। कैसे व्याख्या की गई भाषा सीपीयू को "गलत" सामान बनाती है?


3
जेवीएम बाइट कोड के लिए संकलित किसी भी चीज को कॉल करना उपयोग के साथ थोड़ा उदार है।
रिग

जवाबों:


47

अगर कोड कहता है

A = A + 1

संकलित कोड ऐसा करता है

add A, 1

व्याख्या किया गया कोड ऐसा करता है (या कुछ भिन्नता)

look up the location of A in the symbol table
find the value of A
see that 1 is a constant
get its value
add the value of A and the value of 1
look up the location of A in the symbol table
store the new value of A

विचार प्राप्त करें?


3
कभी-कभी अति सरलीकरण वास्तव में करता है चित्र स्पष्ट ;-) बनाने (बस पूरा होने के लिए: कई प्रसिद्ध दुभाषिए का अनुकूलन कुछ , दूर कदम की तो वे दो नमूना "कार्यान्वयन" यहाँ के बीच आधे रास्ते हैं)।
जोकिम सोउर

3
@JoachimSauer: तुम बिल्कुल सही हो। संकलित कोड की तुलना में 10 गति दंड के एक कारक से कम के साथ एक दुभाषिया चलाना अभी भी मुश्किल है। यदि भाषा वह है जो वास्तव में अधीनस्थ संकलित कार्यों में अपना सारा समय व्यतीत करती है, जिसे वैसे भी बुलाया जाना चाहिए, जैसे गणित पुस्तकालय या I / O, व्याख्या करने की लागत कोई समस्या नहीं है।
माइक डनलैवी

1
यह एक अद्भुत विवरण है
जेमी टेलर

13

हम चाहते थे कि इसे संकलित किया जाए ताकि यह सीपीयू को गलत सामान न जलाए।

लगता है जैसे वे संकलित बनाम व्याख्या की बात कर रहे हैं। रूबी ऑन रेल्स (व्याख्या) में शुरू में विकसित होने के बाद स्कैला (संकलित) के लिए ट्विटर के बढ़ते प्रसंस्करण कार्यों की पूरी कहानी के लिए सबसे अधिक संभावना है।

यहाँ संकलित बनाम व्याख्या किए गए कोड की व्याख्या ।

संकलित भाषा के साथ, आपके द्वारा दर्ज किया गया कोड निष्पादन योग्य फ़ाइल के रूप में सहेजे जाने से पहले मशीन-विशिष्ट निर्देशों के एक सेट पर कम हो जाता है। व्याख्या की गई भाषाओं के साथ, कोड उसी प्रारूप में सहेजा जाता है जो आपने दर्ज किया था। संकलित कार्यक्रम आम तौर पर व्याख्या किए गए लोगों की तुलना में तेजी से चलते हैं क्योंकि व्याख्या किए गए कार्यक्रमों को रनटाइम पर मशीन निर्देशों को कम करना चाहिए।


आपको अपना पहला +1 देने में खुशी होगी। P.SE में आपका स्वागत है!
जाइलम

4
(उल्लेखनीय है कि स्काला - जेवीएम पर है - तकनीकी रूप से केवल बाइट-संकलित है)।
जाइलम

नहीं पता था कि स्काला JVM आधारित था। मतलब इसका JIT संकलित। किस मामले में, ट्विटर ने सिर्फ रूबी पर रेल से JRuby तक स्थानांतरित क्यों नहीं किया? आपको लगता है कि संकलित के लाभ के साथ एक आसान प्रवास होगा।
क्रिस्च

3
वे बेहतर संगति मॉडल की तलाश में थे और उनके पास रूबी के कचरा संग्रह के मुद्दे थे। लेख इसका विस्तार से वर्णन करता है।
स्क्रवटैप

9

यहां "गलत सामान" का मतलब ओवरहेड को इंटरप्रेटर से पार्स करने और कोड को प्रोसेस करने में लगता है। यह संकलित बनाम संकलित भाषाओं की धारणा से जुड़ा है। उपयोग में कोड अनुवाद के कई मॉडल हैं, जो मोटे तौर पर निम्नलिखित श्रेणियों में से एक में आते हैं:

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

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


-1 जिस तरह से उत्तर दिया गया है, वह बहुत सरल लगता है। यह जेआईटी ( सिर्फ-इन-टाइम संकलन ) जैसे सामान को पूरी तरह से नजरअंदाज कर देता है - जो इस तरह से होता है कि कैसे स्कैव जेवीएम / सीएलआर पर चलता है
gnat

सच। उत्तर को फिर से लिखा गया, यह इस विषय में बहुत कम जोड़ रहा था।
स्क्रव टीपी

-3

इस मामले में मैंने the wrong stuffगैर-संकलित कोड में टाइप सुरक्षा की कमी का मतलब लिया है।

इस प्रकार, न केवल कोड धीमा की व्याख्या की जाती है, बल्कि यह अधिक छोटी है ...


8
आप मान रहे हैं कि संकलित भाषाएं सुरक्षित हैं और व्याख्या की गई हैं कि नहीं। कई काउंटर उदाहरण हैं उदाहरण के लिए लिस्प को संकलित किया जा सकता है और दृढ़ता से टाइप नहीं किया जाता है, जबकि हास्केल की व्याख्या की जा सकती है और यह बहुत ही सुरक्षित है
Zachary K

1
"अधिक बग्गी" के साथ "सुरक्षित प्रकार नहीं" की बराबरी FUD को उन लोगों द्वारा धकेल दिया जाता है जिनके पास बेचने के लिए उत्पाद हैं।
user16764

1
@ user16764: अगर यह सच है तो यह FUD नहीं है। IME उत्पादों को बेचने के लिए इस विषय पर बकवास करने वाले लोग हैं, जो डायनामिक टाइपिंग और त्रुटियों के बीच लिंक को कम करने की कोशिश करते हैं। ("यह केवल एक प्रकार की त्रुटि है ," आदि)
मेसन व्हीलर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.