HeadlinesBriefing HeadlinesBriefing.com

অবজেক্ট ম্যাপ, শেপ ও হিডেন ক্লাস ব্যাখ্যা

Hacker News •
×

Python, Ruby ও JavaScript-এর মতো অনেক ডায়নামিকভাবে টাইপ করা ভাষায় অবজেক্টগুলো দেখতে অ্যাট্রিবিউটের নাম থেকে মানের মানচিত্রের মতো। এই নমনীয়তার কারণে রানটাইম নির্মাতারা অ্যাট্রিবিউটগুলোকে হ্যাশ টেবিল দিয়ে মডেল করতে উৎসাহিত হন, যা স্বাভাবিক মনে হয় কারণ হ্যাশ টেবিল নামকে মানের সঙ্গে যুক্ত করতে ভালো।

তবে হ্যাশ টেবিল পদ্ধতির কিছু সীমাবদ্ধতা আছে। খুব সাধারণ একটি অপারেশনের জন্য হ্যাশিং ও প্রোবিং ধীর। হ্যাশ টেবিল আরেকটি পরোক্ষ স্তরও যোগ করে, যার ফলে অবজেক্ট থেকে আলাদা একটি স্টোরেজ কাঠামোতে যেতে হয়। ফলে a.b-এর মতো সাধারণ অ্যাট্রিবিউট অ্যাক্সেসেও শত বা হাজারো CPU নির্দেশ লাগতে পারে, যার মধ্যে একাধিক নির্ভরশীল মেমোরি লোড থাকে। অ্যাট্রিবিউট প্রায়ই অ্যাক্সেস করা হয়, তাই সেগুলো সরাসরি অবজেক্টের ভেতরে সংরক্ষণ করা অনেক বেশি কার্যকর হতো।

এই সমস্যার সমাধানে রানটাইম ম্যাপ, লেআউট, শেপ বা হিডেন ক্লাস নামে পরিচিত কাঠামো ব্যবহার করে। এগুলো অ্যাট্রিবিউট পড়া, লেখা ও সংরক্ষণের কাজ অপটিমাইজ করে। অনেক প্রোডাকশন রানটাইমে জটিল, ডোমেইন-নির্দিষ্ট ব্যতিক্রম থাকে, আর অনেক ব্লগ পোস্ট কেবল উচ্চ-স্তরের সারসংক্ষেপ দেয়, বাস্তবায়নের বিস্তারিত নয়।

লেখক CF Bolz-Tereick-এর A Simple Object Model-এর ওপর ভিত্তি করেছেন, যা Python-কে যুক্তিসংগত নির্ভুলতায় মডেল করে। ক্লাস ও মেথডের কাজকর্ম না ধরে লেখক ইনস্ট্যান্স অ্যাট্রিবিউট ও ম্যাপ অংশে মনোযোগ দিয়েছেন এবং ৫০০ লাইনের কম কোডে একটি সরল, পরিষ্কার ম্যাপ সিস্টেম তৈরি করেছেন, যা পাঠক একবারে মনে রাখতে পারেন।

উৎস: Hacker News · সারাংশ: HeadlinesBriefing