यह शब्द विधानसभा भाषा से आया है। मैं व्युत्पत्ति को सत्यापित नहीं कर सकता, लेकिन मेरा अनुमान है कि नाम अनुभाग के अन्य उपयोग से आता है। जबकि .dataअनुभाग उन चरों को दर्शाता है जो निष्पादन के दौरान बदल सकते हैं, .textअनुभाग में डेटा होता है जो निष्पादन के दौरान नहीं बदलता है, यदि आवश्यक हो तो इसे ROM में डाल दिया जा सकता है। यह कोड के लिए उपयोगी बनाता है, हाँ, लेकिन यह पाठ के उन तारों के लिए भी उपयोगी बनाता है जो बदलते नहीं हैं। शायद यही से यह शब्द आया है।
प्रथम श्रेणी के कार्यों के बारे में ग्रिफिन की टिप्पणी को संबोधित करने के लिए, निम्न अजगर 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'])
उस निष्पादन योग्य कोड को ROM में डाला जा सकता है। यह कार्यक्रम के पूरे निष्पादन में कभी नहीं बदलता है, चाहे आप कितनी बार कॉल करें counter()। क्या करता है परिवर्तन है selfसूचक और उसके सदस्य चर। उन में डाला जाना चाहिए .data। जब आप return increment, आप वास्तव में एक वृद्धि समारोह वस्तु का एक नया उदाहरण लौटा रहे हैं। आप हर बार गतिशील रूप से नए निष्पादन योग्य कोड नहीं बना रहे हैं। कोड अपने आप में अपरिवर्तनीय है, भले ही इसके लिए सूचक न हो।
एकमात्र कोड जिसे अनुभाग में संग्रहीत किया जाना चाहिए, .dataवह उस द्वारा उत्पन्न होता है eval(), क्योंकि यह प्रोग्राम के प्रारंभ में कंपाइलर या JIT कंपाइलर को नहीं जानता है। हालांकि, यहां तक कि कोड अपरिवर्तनीय है। यदि आप स्ट्रिंग eval()बदलते हैं और फिर से कॉल करते हैं, तो आप पिछली बार आपके द्वारा कॉल किए गए कोड को नहीं बदल रहे हैं, आप कोड का eval()एक नया सेट बना रहे हैं।
हालांकि प्रोग्रामिंग मॉडल इसे इस तरह का महसूस करवा सकता है जैसे कि कोड उत्परिवर्तनीय है, प्रोसेसर निर्देश स्तर पर वास्तविक आत्म संशोधित कोड खतरनाक है और शायद ही कभी प्रक्रिया संदर्भ स्विचिंग जैसे ओएस वूडू विषयों के बाहर पाया जाता है।
.textएक विधानसभा निर्देश है। असेम्बली पाठ है।