Il termine deriva dal linguaggio assembly. Non riesco a verificare l'etimologia, ma la mia ipotesi è che il nome derivi dall'altro uso della sezione. Considerando che la .data
sezione indica le variabili che possono cambiare nel corso dell'esecuzione, la .text
sezione contiene dati che non cambiano durante l'esecuzione, consentendo di inserirli nella ROM se necessario. Ciò lo rende utile per il codice, sì, ma anche per le stringhe di testo che non cambiano. È probabilmente da lì che viene il termine.
Per rispondere al commento di Griffin sulle funzioni di prima classe, considera il seguente codice python 3:
def counter():
x = 0
def increment(y):
nonlocal x
x += y
print(x)
return increment
Il codice che effettivamente esegui increment
finisce per apparire internamente qualcosa del tipo:
self.func_dict['x'] += y
print(self.func_dict['x'])
Quel codice eseguibile può essere inserito nella ROM. Non cambia mai durante l'esecuzione del programma, non importa quante volte si chiama counter()
. Ciò che cambia è il self
puntatore e le sue variabili membro. Quelli devono essere messi dentro .data
. Quando si return increment
restituisce effettivamente una nuova istanza di un oggetto funzione di incremento. Non stai creando dinamicamente ogni volta nuovo codice eseguibile. Il codice stesso è immutabile anche se il puntatore non lo è.
L'unico codice che deve essere memorizzato nella .data
sezione è quello generato da eval()
, perché non è noto al compilatore o al compilatore JIT all'avvio del programma. Tuttavia, anche quel codice è immutabile. Se cambi la stringa e chiami di eval()
nuovo, non stai cambiando il codice dalla volta precedente che hai chiamato eval()
, stai creando un nuovo set di codice.
Sebbene il modello di programmazione possa far sembrare che il codice sia mutabile, l'effettivo codice di auto-modifica a livello di istruzione del processore è pericoloso e raramente si trova al di fuori degli argomenti voodoo del sistema operativo come il cambio di contesto di processo.
.text
è una direttiva di assemblaggio. L'Assemblea è un testo.