15

मैं जल्दी और देर से बाध्यकारी के बीच के अंतर को समझने की कोशिश कर रहा था, और इस प्रक्रिया में एहसास हुआ कि बाध्यकारी की अवधारणा मेरे लिए घबराहट है। I सोचें मैं समझता हूं कि यह डेटा-ए-ए-वर्ड-ऑफ-मेमोरी टाइप-ए-ए-सेट-ऑफ-लैंग्वेज-फीचर्स से जुड़ा हुआ है, लेकिन मुझे यकीन नहीं है कि ये सही अवधारणाएं हैं। साथ ही, यह समझने में लोगों को बेहतर प्रोग्रामर बनने में गहराई से मदद कैसे मिलती है?शुरुआती प्रश्न: बाध्यकारी क्या है?

कृपया ध्यान दें: यह प्रश्न "देर से वी। प्रारंभिक बाध्यकारी" या "2 के बीच व्यापार-बंद क्या हैं" नहीं है। वे पहले से मौजूद हैं।

धन्यवाद,

JDelage

+0

यह भी ध्यान में रखना होगा कि बाध्यकारी बनाम क्या है जो लिंक कर रहा है। जैसे एडा उन लोगों के लिए अलग-अलग कदमों का उपयोग करता है, जबकि सी उन्हें विलय/भ्रमित करता है। – ndim

उत्तर

1

सामान्य रूप से बाध्यकारी कुछ मूल्य के साथ एक नाम जोड़ रहा है। मान को डेटा नहीं होना चाहिए, लेकिन ऐसा कुछ भी हो सकता है जिसका नाम हो, उदा। एक समारोह या एक वर्ग।

तालमेल का सवाल है:

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

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

सामान्य प्रवृत्ति की ओर बाद में, बंधन, क्योंकि तेजी से प्रोसेसर और बेहतर तकनीक (जैसे JIT संकलन) के साथ यह अधिक बार संभव हो जाता है।

4

इसके सरलतम पर, बाध्यकारी स्मृति में एक पते के साथ एक कार्यक्रम के भीतर एक प्रतीक का संघ है।

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

2

"बाइंडिंग" मूल रूप से कह रहा है "यह फ़ंक्शन/संपत्ति का नाम इस कोड के अनुरूप है"।

1

आप डेटा बाइंडिंग के बारे में अधिक बात कर रहे हैं, तो मैं काफी अच्छी तरह से उनके Data Binding Overview कार्यों में माइक्रोसॉफ्ट द्वारा इस्तेमाल किया परिभाषा कहेंगे:

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

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

2

कंपाइलर्स के संदर्भ में, बाध्यकारी वह चरण है जहां पता संदर्भ वास्तविक पूर्ण पते में बदल दिए जाते हैं।

जब कार्यक्रम संकलित, हरेक प्रतीक का पता (चर, समारोह) है प्रतीक नाम के साथ एक रिश्तेदार वस्तु मॉड्यूल की शुरुआत से ऑफसेट के रूप में उदाहरण के लिए प्रतीक तालिका में संग्रहीत किया जाता है, एक साथ। प्रतीकों का नाम आवश्यक है क्योंकि प्रतीकों को किसी अन्य ऑब्जेक्ट मॉड्यूल से बुलाया जा सकता है।

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

हालांकि, पीसी: एस जैसे वर्कस्टेशन में, प्रोग्राम किसी भी पते पर लोड किया जा सकता है, इसलिए पता लिंक समय पर ज्ञात नहीं है। इसलिए, अतिरिक्त स्थानान्तरण जानकारी प्रोग्राम फ़ाइल में संग्रहीत की जाती है ताकि लोडर लोड समय पर पते को बाध्य कर सके।

बाध्यकारी स्थानान्तरण जानकारी का उपयोग करके लोड समय पर किया जाता है। जब पता चलाना है कि कार्यक्रम कहां जा रहा है, तो लोडर रिश्तेदार पते को प्रतिस्थापन जानकारी का उपयोग करके पूर्ण पते के साथ बदल देता है जो बताता है कि कोड में परिवर्तनों को कहां करने की आवश्यकता है।

गतिशील वस्तुओं/चर के लिए, बाध्यकारी रनटाइम पर किया जा सकता है। (मुझे लगता है कि यह आमतौर पर देर से बाध्यकारी कहा जाता है।)

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

संबंधित मुद्दे