smalltalk तरर शुरुआती बंधन बनाम देर से बाध्यकारी: तुलनात्मक लाभ और नुकसान क्या हैं?




रिकार्डियन तुलनात्मक लागत सिद्धांत (5)

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

जावास्क्रिप्ट, jquery, jsext, actionscript, php, java, ror और asp.net के साथ वेब अनुप्रयोगों को कार्यान्वित करने के आधार पर मेरा व्यक्तिगत अनुभव (जो कि व्यापक या आधिकारिक तौर पर पर्याप्त नहीं है) देर से बाइंडिंग और ब्लोट के बीच सकारात्मक संबंध का सुझाव देते हैं कमी। शुरुआती बाध्यकारी मुझे यकीन है कि कुछ प्रकार की त्रुटियों को रोकने और रोकने में मदद करता है, लेकिन इसलिए सामान्य में स्वत: पूर्णता और एक अच्छा IDE, और अच्छी प्रोग्रामिंग प्रथाएं हैं। इसलिए मैं अपने जोखिम-परिहार की ओर से मेरे तर्कसंगत परिप्रेक्ष्य को पुनर्स्थापित करने से पहले देर से बाध्यकारी पक्ष के लिए अपने आप को पकड़ना पड़ता है।

लेकिन मेरे पास वास्तव में समझदारी नहीं है कि कंट्रोलॉफ़ को कैसे संतुलित किया जाए।


परंपरागत रूप से प्रारंभिक बंधन का बड़ा लाभ प्रदर्शन के लिए होता है: एक देर से बाध्यकारी भाषा को रनटाइम पर अपने सभी डेटा के बारे में प्रकार की जानकारी लेनी होती है, और समय संकलन में कुछ अनुकूलन करने का अवसर खो देता है। यह अंतर काफी कम महत्वपूर्ण हो गया है, हालांकि, कंप्यूटर के रूप में तेजी से हो जाता है, और वीएम को मक्खी पर अनुकूलन के बारे में अधिक समझने लगता है।


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


संकलन के समय संकलन को संकलन के दौरान किया जाता है, जिसे प्रारंभिक बाध्यकारी कहा जाता है

गतिशील बाइंडिंग जिसमें फ़ंक्शन को निष्पादन के दौरान निष्पादन के दौरान किया जाने वाला फ़ंक्शन शामिल होता है जिसे देर से बाध्यकारी कहा जाता है


मुझे लगता है कि अनुचित युग्मन से बचने के लिए बेहतर तरीके / पैटर्न हैं, जैसे कि नियंत्रण के विपरीत, निर्भरता इंजेक्शन, कारखानों, ...

लेकिन, मुझे पसंद है "उपयोग करने में आसान" देर से बंधन के संस्करण स्वतंत्रता
महज प्रयोग करें

var excel = CreateObject("Excel.Application");

और देर से बाध्यकारी पता चलेगा, किस प्रकार का एक्सेल। आवेदन, और इसे कहाँ से प्राप्त करें ...


शुरुआती बाध्यकारी बनाम स्वर्गीय बाध्यकारी वास्तव में भाषा वास्तुकला का एक कार्य है। शुरुआती बाध्यकारी का मतलब है कि कोड बनाया जा सकता है जहां एक मशीन निर्देश बस एक पते पर कूदता है और वहां से क्रियान्वित करना शुरू करता है (संभवतः एक लुकअप तालिका के माध्यम से)। देर से बंधन के लिए प्रत्येक प्रवेश के लिए देखा जाने वाला प्रतीक और प्रकार संदर्भ (आमतौर पर एक हैश तालिका लुकअप) की आवश्यकता होती है, जो भाषा को धीमा कर देती है।

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

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

कोड अनुकूलन की काफी विविधता के लिए प्रारंभिक बाध्यकारी भी आवश्यक है।

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