Python, Ruby और JavaScript जैसी डायनामिकली टाइप की गई कई भाषाओं में ऑब्जेक्ट्स ऐसे दिखते हैं जैसे एट्रिब्यूट नामों को उनकी वैल्यू से मैप किया गया हो। इस लचीलेपन के कारण रनटाइम बनाने वाले लोग एट्रिब्यूट्स को हैश टेबल से मॉडल करते हैं, जो स्वाभाविक लगता है क्योंकि हैश टेबल नामों को वैल्यू से जोड़ने में अच्छी होती हैं।
हालांकि, हैश टेबल दृष्टिकोण की कुछ कमियां हैं। हैशिंग और प्रोबिंग एक बहुत आम ऑपरेशन के लिए धीमी होती हैं। हैश टेबल एक अतिरिक्त इनडायरेक्शन भी जोड़ती है, जिससे ऑब्जेक्ट से एक अलग स्टोरेज स्ट्रक्चर तक जाना पड़ता है। नतीजतन, a.b जैसी सरल एट्रिब्यूट एक्सेस में सैकड़ों या हजारों CPU निर्देश लग सकते हैं, जिनमें कई निर्भर मेमोरी लोड शामिल होते हैं। चूंकि एट्रिब्यूट्स बार-बार एक्सेस होते हैं, इसलिए उन्हें ऑब्जेक्ट में ही इनलाइन स्टोर करना कहीं ज्यादा कुशल होगा।
इसे हल करने के लिए रनटाइम ऐसी संरचनाओं का उपयोग करते हैं जिन्हें मैप, लेआउट, शेप या हिडन क्लासेस कहा जाता है। ये एट्रिब्यूट्स को पढ़ने, लिखने और संग्रहीत करने का काम अनुकूलित करते हैं। कई प्रोडक्शन रनटाइम में जटिल, डोमेन-विशिष्ट एज केस होते हैं, और कई ब्लॉग पोस्ट केवल उच्च-स्तरीय सिंहावलोकन देते हैं, इम्प्लीमेंटेशन के विवरण नहीं।
लेखक CF Bolz-Tereick के A Simple Object Model पर आधारित है, जो Python को उचित सटीकता के साथ मॉडल करता है। क्लास और मेथड की व्यवस्था पर चर्चा करने के बजाय, लेखक इंस्टेंस एट्रिब्यूट्स और मैप वाले हिस्से पर ध्यान केंद्रित करता है, और 500 से कम लाइनों का एक सरल, साफ मैप सिस्टम निकालता है जिसे पाठक एक साथ अपने दिमाग में रख सके।
स्रोत: Hacker News · HeadlinesBriefing द्वारा सारांशित