শব্দটি সমাবেশ ভাষা থেকে এসেছে। আমি ব্যুৎপত্তিটি যাচাই করতে পারি না, তবে আমার ধারণা এই নামটি বিভাগটির অন্য ব্যবহার থেকে আসে। যেখানে .dataঅধ্যায় ভেরিয়েবল যে মৃত্যুদন্ড চলাকালীন পরিবর্তন করতে পারেন উল্লেখ করে, .textঅধ্যায় ডেটা আছে যা সম্পাদনের সময় পরিবর্তন হবে না, যার ফলে প্রয়োজনে এটা রম পুরা করা রয়েছে। এটি কোডের জন্য এটি হ্যাঁ কার্যকর করে তোলে, তবে পরিবর্তিত হয় না এমন পাঠ্যের স্ট্রিংয়ের জন্যও এটি দরকারী করে তোলে। শব্দটি এসেছে যেখানে সম্ভবত।
প্রথম শ্রেণীর ফাংশন সম্পর্কে গ্রিফিনের মন্তব্যকে সম্বোধন করতে, নীচের অজগর 3 কোডটি বিবেচনা করুন:
def counter():
x = 0
def increment(y):
nonlocal x
x += y
print(x)
return increment
আপনি যে কোডটি প্রকৃতপক্ষে সম্পাদন করেন তা incrementঅভ্যন্তরীণভাবে এমন কিছু দেখতে শুরু করে:
self.func_dict['x'] += y
print(self.func_dict['x'])
এই এক্সিকিউটেবল কোডটি রমে রাখা যেতে পারে। প্রোগ্রামটি কার্যকর করার সময় এটি কখনই পরিবর্তন হয় না, আপনি যতবার কল করুন না counter()। কি করে পরিবর্তন selfপয়েন্টার এবং সদস্য ভেরিয়েবল। সেগুলি অবশ্যই intoোকাতে হবে .data। যখন আপনি return increment, আপনি আসলে একটি ইনক্রিমেন্ট ফাংশন অবজেক্টের একটি নতুন উদাহরণ ফিরে আসছেন। আপনি প্রতিটি সময় ডায়নামিকভাবে নতুন এক্সিকিউটেবল কোড তৈরি করছেন না। কোডটি নিজেই অপরিবর্তনীয় যদিও এর পয়েন্টারটি নেই।
বিভাগে কেবলমাত্র কোডটি অবশ্যই সংরক্ষণ করতে হবে .dataযা উত্পন্ন হয় eval(), কারণ এটি প্রোগ্রামের শুরুতে সংকলক বা জেআইটি সংকলকটির জানা ছিল না। যাইহোক, এমনকি যে কোড অপরিবর্তনীয়। আপনি যদি স্ট্রিং পরিবর্তন করেন এবং eval()আবার কল করেন, আপনি আগের বার কল করার সময় থেকে কোড পরিবর্তন করছেন না eval(), আপনি একটি সম্পূর্ণ নতুন কোড সেট তৈরি করছেন।
যদিও প্রোগ্রামিং মডেলটি এ জাতীয় অনুভূতিটিকে কোডের মতো পরিবর্তন করতে পারে তবে প্রসেসরের নির্দেশ স্তরে প্রকৃত স্ব-সংশোধনকারী কোড বিপজ্জনক এবং প্রক্রিয়া প্রসঙ্গে স্যুইচিংয়ের মতো ওএস ভুডু বিষয়ের বাইরে খুব কমই পাওয়া যায়।
.textএকটি সমাবেশ নির্দেশ। সমাবেশ পাঠ্য।