magic number: n.

[Unix/C; comune]

1. Nel codice sorgente, qualche costante non intuitiva il cui valore e' significativo per la funzionalita' di un programma e che e' inserita in modo intrinseco nelle righe (hardcoded), invece che espansa da un simbolo impostato da una #define con commento. I magic number in questo senso sono un esempio di brutto stile.

2. Un numero che archivia informazioni critiche usato in un algoritmo o in altri modi complessi. Gli esempi classici di questo sono i numeri usati nelle funzioni di hash o CRC, o i coefficienti in un generatore lineare congruente per numeri pseudo-casuali. Questo significato ora e' vecchio ed e' antecedente al significato piu' comune

3. Dati speciali che si trovano all'inizio di un file binario per indicare il suo tipo o utilita'. Sotto Unix, il sistema e diversi programmi applicativi (specialmente il linker) distinguono fra i diversi tipi di eseguibili cercando un magic number. Per un po' di tempo, questi numeri erano le istruzioni di salto di PDP-11 che saltavano oltre i dati di intestazione fino all'inizio del codice eseguibile; 0407, ad esempio, era l'ottale per ‘salta 16 byte relativi’. Molti altri tipi di file hanno ora dei magic number da qualche parte; alcuni magic number sono, in realta', stringhe, come !<arch> all'inizio di un file di archivio Unix o il %! che indica un file PostScript. Ora solo un wizard conosce il linguaggio per creare dei magic number. Come scegli un magic number per te? Semplice — ne prendi uno a caso. Visto? E' magico!

4. Un input che porta ad una condizione computazionale al limite, dove il comportamento dell'algoritmo diventa incoerente. Gli overflow numerici (particolarmente con tipi di dato con segno) ed errori di runtime (divisioni per zero, stack overflow) sono indicazioni di magic number. L'allarme Y2K e' stato probabilmente il piu famoso magic number non casuale.

IL magic number, d'altro canto, e' 7±2. Vedi The magical number seven, plus or minus two: some limits on our capacity for processing information di George Miller, nel Psychological Review 63:81-97 (1956). Questo documento stabilisce il numero di elementi distinti (come ad esempio le cifre numeriche) che gli umani possono mantenere nella memoria a breve termine. Fra le altre cose, questo influenzo' fortemente la progettazione dell'interfaccia del sistema telefonico.