Magic number: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Aggiunto qualche altro Magic Number |
Wikificazione |
||
Riga 1:
{{S|terminologia informatica}}
{{F|terminologia informatica|luglio 2011}}
== 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.▼
È 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.
* 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.
==
* [[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}}
|