NULL: differenze tra le versioni

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Riga 1: Riga 1:
{{nota disambigua|descrizione=il fotografo statunitense|titolo=Harold Miller Null}}
{{nota disambigua|descrizione=il fotografo statunitense|titolo=Harold Miller Null}}


In diversi contesti dell'[[informatica]] e della [[matematica]], la parola [[lingua tedesca|tedesca]] '''''null''''' o anche meno frequentemente '''''nil''''' viene usata per indicare un particolare elemento di un [[insieme]] che svolge, in qualche senso, una funzione simile a quella dello [[zero]] matematico. Il termine deriva dal [[lingua latina|latino]] ''nullus'' e viene talvolta reso in [[lingua italiana|italiano]] con '''nullo'''; in altre occasioni, con riferimento esplicito alla [[sintassi]] di specifici [[linguaggi formali]] (per esempio [[linguaggio di programmazione|linguaggi di programmazione]]), il termine viene anche riportato come '''NULL''', con tutte le lettere maiuscole.
In diversi contesti dell'[[informatica]] e della [[matematica]], la parola [[lingua tedesca|tedesca]] '''''null<ref name="MDN" />''''' o anche meno frequentemente '''''nil''''' viene usata per indicare un particolare elemento di un [[insieme]] che svolge, in qualche senso, una funzione simile a quella dello [[zero]] matematico. Il termine deriva dal [[lingua latina|latino]] ''nullus'' e viene talvolta reso in [[lingua italiana|italiano]] con '''nullo'''; in altre occasioni, con riferimento esplicito alla [[sintassi]] di specifici [[linguaggi formali]] (per esempio [[linguaggio di programmazione|linguaggi di programmazione]]), il termine viene anche riportato come '''NULL''', con tutte le lettere maiuscole.


== Dallo zero al null ==
== Dallo zero al null ==
Riga 15: Riga 15:
In [[programmazione (informatica)|programmazione]], ''NULL'' o ''null'' è un valore speciale dei tipi [[puntatore (programmazione)|puntatore]] (o riferimento), che rappresentano (a diversi [[livello di astrazione|livelli di astrazione]]) [[indirizzi di memoria]] di [[struttura dati|strutture dati]]. In questo contesto, il valore speciale "null" viene usato per indicare che il puntatore non contiene l'[[indirizzo di memoria]] di alcuna [[struttura dati]]. Spesso, il valore di null coincide con lo 0 numerico, poiché l'indirizzo di memoria "0" è un indirizzo inaccessibile in quasi tutti i [[sistema operativo|sistemi operativi]]. Tuttavia, alcuni linguaggi di programmazione adottano convenzioni diverse e molti lasciano alle implementazioni di [[compilatore|compilatori]] o [[interprete (informatica)|interpreti]] la libertà di fare coincidere o meno i due valori. In quest'ultimo caso, al programmatore si suggerisce di ''distinguere'' comunque lo zero dal null che sarà rappresentato tipicamente da una [[Parola chiave (programmazione)|parola chiave]] del linguaggio o da una macro come il <code>NULL</code> del [[linguaggio C|C]], al fine di preservare la [[portabilità]] del [[codice sorgente]].
In [[programmazione (informatica)|programmazione]], ''NULL'' o ''null'' è un valore speciale dei tipi [[puntatore (programmazione)|puntatore]] (o riferimento), che rappresentano (a diversi [[livello di astrazione|livelli di astrazione]]) [[indirizzi di memoria]] di [[struttura dati|strutture dati]]. In questo contesto, il valore speciale "null" viene usato per indicare che il puntatore non contiene l'[[indirizzo di memoria]] di alcuna [[struttura dati]]. Spesso, il valore di null coincide con lo 0 numerico, poiché l'indirizzo di memoria "0" è un indirizzo inaccessibile in quasi tutti i [[sistema operativo|sistemi operativi]]. Tuttavia, alcuni linguaggi di programmazione adottano convenzioni diverse e molti lasciano alle implementazioni di [[compilatore|compilatori]] o [[interprete (informatica)|interpreti]] la libertà di fare coincidere o meno i due valori. In quest'ultimo caso, al programmatore si suggerisce di ''distinguere'' comunque lo zero dal null che sarà rappresentato tipicamente da una [[Parola chiave (programmazione)|parola chiave]] del linguaggio o da una macro come il <code>NULL</code> del [[linguaggio C|C]], al fine di preservare la [[portabilità]] del [[codice sorgente]].


In altri casi ''null'' viene utilizzato per descrivere un valore "sconosciuto", "indefinito" o assente di una [[variabile (informatica)|variabile]]<ref name="MDN">{{cita web|url=https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/null|titolo=null - JavaScript|sito=MDN|accesso=March 4, 2016}}</ref>. In [[SQL]], per esempio, un certo campo potrebbe assumere un valore "definito", oppure il valore speciale NULL, che indica che tale valore non è conosciuto<ref name="w3schools-sql">{{cita web|url=https://www.w3schools.com/sql/sql_null_values.asp|titolo=SQL NULL Values - IS NULL and IS NOT NULL|sito=[[W3Schools|w3schools.com]]|accesso=March 4, 2016|lingua=en}}</ref>. Vi è un dibattito a livello accademico fra chi sostiene che NULL dovrebbe indicare un valore sconosciuto e chi sostiene che dovrebbe indicare l'assenza di un valore. In pratica quando si legge il valore corrente di una colonna a 0 si può avere un <code>NULL</code> che significa ''"il valore del campo non è noto"'', ma che può essere anche interpretato come ''"il campo è vuoto"''; quando invece viene valutata una qualsiasi espressione che coinvolge anche un solo campo <code>NULL</code> ciò che si ottiene alla fine è ancora <code>NULL</code>, indipendentemente dal tipo di espressione e questo ben si associa col significato di ''indefinito'' (es.: la somma di un numero qualsiasi con un numero indefinito dà sempre un risultato indefinito).
In altri casi ''null'' viene utilizzato per descrivere un valore "sconosciuto", "indefinito" o assente di una [[variabile (informatica)|variabile]]<ref name="MDN">{{cita web|url=https://www.scaler.com/topics/sql/null-value-in-sql/|titolo=null - SQL|sito=MDN|accesso=March 4, 2022}}</ref>. In [[SQL]], per esempio, un certo campo potrebbe assumere un valore "definito", oppure il valore speciale NULL, che indica che tale valore non è conosciuto<ref name="w3schools-sql">{{cita web|url=https://www.w3schools.com/sql/sql_null_values.asp|titolo=SQL NULL Values - IS NULL and IS NOT NULL|sito=[[W3Schools|w3schools.com]]|accesso=March 4, 2016|lingua=en}}</ref>. Vi è un dibattito a livello accademico fra chi sostiene che NULL dovrebbe indicare un valore sconosciuto e chi sostiene che dovrebbe indicare l'assenza di un valore. In pratica quando si legge il valore corrente di una colonna a 0 si può avere un <code>NULL</code> che significa ''"il valore del campo non è noto"'', ma che può essere anche interpretato come ''"il campo è vuoto"''; quando invece viene valutata una qualsiasi espressione che coinvolge anche un solo campo <code>NULL</code> ciò che si ottiene alla fine è ancora <code>NULL</code>, indipendentemente dal tipo di espressione e questo ben si associa col significato di ''indefinito'' (es.: la somma di un numero qualsiasi con un numero indefinito dà sempre un risultato indefinito).


Nel tempo, per ovviare ai problemi nati a causa dei puntatori nulli che non venivano gestiti in modo corretto, sono nati vari linguaggi che implementano la [[Void safety|void safety o null safety]] per ovviare a questo problema. Questi linguaggi infatti prevedono dei meccanismi che permettono al compilatore già a [[compile-time]] di notare quando un oggetto è null e impedire che venga acceduto in modo non sicuro. Portando a una notevole riduzione dei bug dovuti a questa problematica.
Nel tempo, per ovviare ai problemi nati a causa dei puntatori nulli che non venivano gestiti in modo corretto, sono nati vari linguaggi che implementano la [[Void safety|void safety o null safety]] per ovviare a questo problema. Questi linguaggi infatti prevedono dei meccanismi che permettono al compilatore già a [[compile-time]] di notare quando un oggetto è null e impedire che venga acceduto in modo non sicuro. Portando a una notevole riduzione dei bug dovuti a questa problematica.

Versione delle 12:06, 21 set 2022

Disambiguazione – Se stai cercando il fotografo statunitense, vedi Harold Miller Null.

In diversi contesti dell'informatica e della matematica, la parola tedesca null[1] o anche meno frequentemente nil viene usata per indicare un particolare elemento di un insieme che svolge, in qualche senso, una funzione simile a quella dello zero matematico. Il termine deriva dal latino nullus e viene talvolta reso in italiano con nullo; in altre occasioni, con riferimento esplicito alla sintassi di specifici linguaggi formali (per esempio linguaggi di programmazione), il termine viene anche riportato come NULL, con tutte le lettere maiuscole.

Dallo zero al null

Lo stesso argomento in dettaglio: Zero.

Nei sistemi di numerazione convenzionali, la cifra zero ha la caratteristica eccezionale di non rappresentare alcun valore di quantità; lo si può descrivere come una "cifra vuota".

Storicamente, la necessità di disporre di uno zero nacque nei sistema di numerazione posizionali; lo zero ha infatti la funzione peculiare (rispetto alle altre cifre) di agire solo sul sistema delle posizioni. Nel numero "300", per esempio, i due zeri finali influiscono solo sulla posizione del "3" (consentendo di interpretarlo come 3 centinaia), ma non rappresentano quantità parziali significative per la valutazione del numero complessivo; diversamente accade, per esempio, per i due "1" finali di "311".

In modo analogo, il "null" compare in molti linguaggi formali laddove è necessario un valore per riempire una certa "posizione" (in senso ampio) ma in realtà la posizione deve essere riempita con un valore "vuoto", un puro segnaposto che non descrive nessun valore significativo o utilizzabile. (In tedesco e in norvegese, tra l'altro, la parola "null" significa "zero").

Il null in programmazione

In programmazione, NULL o null è un valore speciale dei tipi puntatore (o riferimento), che rappresentano (a diversi livelli di astrazione) indirizzi di memoria di strutture dati. In questo contesto, il valore speciale "null" viene usato per indicare che il puntatore non contiene l'indirizzo di memoria di alcuna struttura dati. Spesso, il valore di null coincide con lo 0 numerico, poiché l'indirizzo di memoria "0" è un indirizzo inaccessibile in quasi tutti i sistemi operativi. Tuttavia, alcuni linguaggi di programmazione adottano convenzioni diverse e molti lasciano alle implementazioni di compilatori o interpreti la libertà di fare coincidere o meno i due valori. In quest'ultimo caso, al programmatore si suggerisce di distinguere comunque lo zero dal null che sarà rappresentato tipicamente da una parola chiave del linguaggio o da una macro come il NULL del C, al fine di preservare la portabilità del codice sorgente.

In altri casi null viene utilizzato per descrivere un valore "sconosciuto", "indefinito" o assente di una variabile[1]. In SQL, per esempio, un certo campo potrebbe assumere un valore "definito", oppure il valore speciale NULL, che indica che tale valore non è conosciuto[2]. Vi è un dibattito a livello accademico fra chi sostiene che NULL dovrebbe indicare un valore sconosciuto e chi sostiene che dovrebbe indicare l'assenza di un valore. In pratica quando si legge il valore corrente di una colonna a 0 si può avere un NULL che significa "il valore del campo non è noto", ma che può essere anche interpretato come "il campo è vuoto"; quando invece viene valutata una qualsiasi espressione che coinvolge anche un solo campo NULL ciò che si ottiene alla fine è ancora NULL, indipendentemente dal tipo di espressione e questo ben si associa col significato di indefinito (es.: la somma di un numero qualsiasi con un numero indefinito dà sempre un risultato indefinito).

Nel tempo, per ovviare ai problemi nati a causa dei puntatori nulli che non venivano gestiti in modo corretto, sono nati vari linguaggi che implementano la void safety o null safety per ovviare a questo problema. Questi linguaggi infatti prevedono dei meccanismi che permettono al compilatore già a compile-time di notare quando un oggetto è null e impedire che venga acceduto in modo non sicuro. Portando a una notevole riduzione dei bug dovuti a questa problematica.

Altri significati in informatica

Altri esempi di uso della parola "null" nel senso generale di "nullo" o "vuoto" sono i seguenti:

  • /dev/null è un dispositivo virtuale di input/output nei sistemi di tipo UNIX. Questo dispositivo non fornisce input e scarta l'eventuale output (ovvero non fa "nulla"). Il dispositivo NUL è l'equivalente per i sistemi operativi DOS e Microsoft Windows.
  • Nella codifica ASCII dei caratteri, NUL è il carattere con codice 0: non ha una rappresentazione grafica e non può essere prodotto da una tastiera. Spesso viene utilizzato come terminatore di stringa. Nella codifica Unicode, che estende l'ASCII, il NUL è ancora 0, in genere rappresentato nella forma esadecimale "0x0000".

Note

  1. ^ a b null - SQL, su MDN. URL consultato il March 4, 2022.
  2. ^ (EN) SQL NULL Values - IS NULL and IS NOT NULL, su w3schools.com. URL consultato il March 4, 2016.