जावा 8 के संदर्भ में "चीनी", "डेसुगर" शब्द क्या हैं?


107

मैं जावा 8 में 'शुगरिंग' और 'डीसर्जिंग' के बारे में अधिक बार सुनता हूं, इन शब्दों का क्या मतलब है? क्या वे वैचारिक या वाक्यगत हैं।

कुछ उदाहरण:

डिफ़ॉल्ट पुनरावृत्ति लूप जावा के लिए resugaring

संकलन में वाक्यगत शर्करा के बारे में अवलोकन।

जवाबों:


136

चीनी , प्रोग्रामिंग में, आमतौर पर उन मीठे को संदर्भित करता है परिवर्धन , जिनमें अधिकतर शॉर्टकट होते हैं, जो कुछ निर्माणों को टाइप करना और पढ़ना आसान बनाते हैं (बाद वाला, व्यवहार में, आपके कार्यक्रम के जीवन चक्र के दौरान सबसे महत्वपूर्ण)।

विकिपीडिया में वाक्य रचना चीनी की एक परिभाषा है लेकिन आपको ध्यान देना चाहिए कि सभी चीनी नहीं है, संक्षेप में, वाक्यात्मक (सभी हालिया मीठे परिवर्धन सिर्फ संकलक परिवर्तन नहीं थे)।

कुछ उदाहरण निम्नलिखित हैं :

  • उपसर्ग और उपसर्ग वृद्धि वेतन परिचालक ( i++और ++i)। उनका एकमात्र उद्देश्य अतिरिक्त बयान लिखने से बचना है। वे शुद्ध चीनी हैं।
  • +=, |=, &=, आदि चीनी का एक ही तरह के बने होते हैं।
  • आदिम प्रकार और वस्तुओं के बीच निहित रूपांतरण चीनी भी है।
  • प्रकार का अनुमान चीनी भी है।
  • लैम्ब्डा एक्सप्रेशन, जावा 8 के साथ आ रहा है, कुछ अन्य प्रकार की चीनी है (यह सिर्फ एक नहीं है )

जावा को व्यापक रूप से पर्याप्त रूप से संक्षिप्त नहीं होने के रूप में देखा जाता है, खासकर आधुनिक भाषाओं की तुलना में। इसीलिए जो परिवर्धन कोड को पढ़ने में तेज बनाने में मदद करते हैं उनका स्वागत है।

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

यह कहा जा रहा है, desugaring या तो संदर्भित करता है

  • वह प्रक्रिया जिसके द्वारा आप एक भाषा में अनावश्यक सभी को हटा देते हैं
  • वह प्रक्रिया जिसके द्वारा एक कोड प्रोसेसर को पता चलता है कि शक्कर वाले कथन के पीछे क्या है (उदाहरण के लिए इसमें प्रकार का अनुमान शामिल है)

6
+1 आप डिसुगर भाग के बारे में भी उल्लेख कर सकते हैं क्योंकि ओपी ने जो उत्तर दिया है वह पूरा होगा! :)
राहुल त्रिपाठी

6
@ अन्यायपूर्ण विचार करें कि आपके कार्यक्रम कितने पतले होंगे, जब आप उन सभी इंटरफेसों को हटाने में सक्षम होंगे जिन्हें आप केवल एक फ़ंक्शन पास करने में सक्षम होने के लिए बनाते हैं।
डेसिम सेग्रुट

42
"सिंथेटिक चीनी अर्धविराम के कैंसर का कारण बनती है।" - एलन पर्लीस
स्टुअर्ट मार्क्स

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

3
@ अन्याय इस सवाल पर बहुत ध्यान गया। यह उन मामलों में दुर्लभ नहीं है, जिनमें प्रवेश टिप्पणियों को हटा दें जो रचनात्मक नहीं लगते हैं। मुझे नहीं लगता कि आपकी टिप्पणी को हटाना पड़ा, लेकिन यह बहुत कुछ नहीं लाया।
डेनिस सेगुरेट

17

"डिसुगरिंग" जावा 8 में एक बहुत ही विशिष्ट अर्थ प्रतीत होता है। यह प्रतीत होता है कि विभिन्न तरीकों को व्यक्त करने के लिए एक कैम्ब्रिज शब्द एक वास्तविक ठोस विधि कॉल के लिए बाध्य हो सकता है।

"लैम्ब्डा एक्सप्रेशंस के अनुवाद" पर इस दस्तावेज़ को लगता है कि यदि आप बारीकियों में रुचि रखते हैं, तो इसका वास्तविक विवरण क्या है।

दस्तावेज़ से एक महत्वपूर्ण वाक्यांश:

लैम्बदास को बाईटेकोड में अनुवादित करने का पहला चरण एक विधि में लैम्बडा बॉडी को उतारा जा रहा है।


6

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

  • प्रत्येक छोरों के लिए छोरों के लिए सी शैली के लिए "desugared" हैं
  • कथनों को एक वाक्य के लिए "निराश" किया जाता है
  • आंतरिक वर्गों को एक स्वसंपूर्ण वर्ग के रूप में दर्शाया जाता है

आप यह भी जांच सकते हैं कि स्ट्रिंग स्विच, टाइप इरेज़र, के साथ क्या होता है ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.