Magic number: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
TheFax (discussione | contributi)
Aggiunto qualche altro Magic Number
Niculinux (discussione | contributi)
Wikificazione
Riga 1:
{{S|terminologia informatica}}
{{F|terminologia informatica|luglio 2011}}
In [[informatica]], parlando diUn '''magic number''', siin possono[[informatica]] identifica una [[Stringa (informatica)|stringa]] di testo, intendereutilizzata duecon differenti significati:finalità.
 
== Cenni storici ==
{{...}}
 
== Caratteristiche ==
Esso indicherebbe:
 
* una sequenza di [[bit]], normalmente posta prima della sequenza di [[dati]], che serve per definire il formato in cui i dati sono memorizzati.
* un numero o una [[Stringa (informatica)|stringa]] ripetuta più volte nel [[codice sorgente]] di un [[programma (informatica)|programma]] a cui non è attribuito un significato esplicito.
 
Il secondo uso del termine è prettamente dispregiativo: inserire nel codice delle [[costante|costanti]] (siano esse numeriche o di tipo stringa) senza dare loro un significato esplicito porta ad avere codice poco leggibile.
== Indicatore di formato ==
 
È buona norma dare a tali costanti un nome ed un significato esplicito, possibilmente all'inizio del codice, e utilizzare sempre tale definizione. I problemi legati all'uso di magic number sono:
* difficoltà di lettura e, quindi, di manutenzione del codice: una stringa o un intero inserito all'interno del programma senza una denominazione parlante, sono difficili da interpretare.
* possibile inconsistenza del codice: se la costante è ripetuta n volte, la sua variazione richiede n sostituzioni. Se una di esse salta si dà origine a [[bug]].
 
 
== Utilizzo ==
I magic number sono nati negli ambienti [[Unix]] per identificare il formato dei [[file binario|file binari]] e per la gestione dei dati nella [[memoria (informatica)|memoria]]. Oggi la maggior parte dei formati del file hanno un magic number, costituito da un numero di [[byte]] variabile (solitamente da 2 a 10). Viene anche utilizzato nei [[protocollo di rete|protocolli di rete]], per identificare il protocollo o errori nella [[trasmissione (telecomunicazioni)|trasmissione]] dei dati.
 
Line 11 ⟶ 25:
Ancora oggi, i sistemi operativi Microsoft non utilizzano il magic number per dedurre il formato di appartenenza di un determinato file, ma appunto le estensioni. I magic number possono comunque essere utili per definirne la versione.
 
=== Esempi di utilizzo in informatica ===
* I file immagine [[Graphics Interchange Format|GIF]], per esempio, cominciano sempre con la [[Stringa (informatica)|stringa]] [[ASCII]] GIF87a o GIF89a che definisce lo standard al quale il file aderisce.
* Le classi [[Java (linguaggio)|Java]] compilate hanno il magic number <code>CAFEBABE</code>, espresso in notazione [[esadecimale]]. {{Citazione necessaria|Probabilmente è un altro riferimento al [[Java (caffè)|caffè]] che di Java è simbolo e nome e all'ipotetica cameriera che lo serve.}}
Line 24 ⟶ 38:
Da notare che questi marcatori sono davvero utili ai software di recupero dei dati (per esempio [[TestDisk]], per citarne uno) in quanto attraverso di essi riescono ad identificare la presenza di un dato tipo di file, o di struttura, anche se il [[File System]] è danneggiato.
 
== CostantiVoci senza nomecorrelate ==
* [[Shabang]]]]
Il secondo uso del termine è prettamente dispregiativo: inserire nel codice delle [[costante|costanti]] (siano esse numeriche o di tipo stringa) senza dare loro un significato esplicito porta ad avere codice poco leggibile.
* [[Unix like]]
 
È buona norma dare a tali costanti un nome ed un significato esplicito, possibilmente all'inizio del codice, e utilizzare sempre tale definizione. I problemi legati all'uso di magic number sono:
* difficoltà di lettura e, quindi, di manutenzione del codice: una stringa o un intero inserito all'interno del programma senza una denominazione parlante, sono difficili da interpretare.
* possibile inconsistenza del codice: se la costante è ripetuta n volte, la sua variazione richiede n sostituzioni. Se una di esse salta si dà origine a [[bug]].
 
{{Portale|informatica}}