Valore (informatica)
In informatica, un valore può essere un numero una stringa, un array e qualunque altra cosa che può essere utilizzata come se fosse un numero. D'altra parte, etichette, funzioni, tipi di dato, ereditarietà e strutture di controllo non sono, in generale, valori, nonostante la loro definizione varii a seconda dei linguaggi di programmazione. Variabili e funzioni sono la maggior parte delle volte trattate come se fossero valori.
La distinzione tra valore e oggetto è sottile, ma si può affermare che gli oggetti includono una memoria privata a cui si può accedere solo tramite references mentre i valori sono indipendenti dal contenitore e sono solo pubblici. Ad esempio, le reference sono comunemente espresse tramite valori, soprattutto come un puntatore nel C. In C le reference agli oggetti possono essere rappresentate tramite una struttura che contenga un puntatore void la cui struttura bersaglio sia invisibile al codice cliente; il puntatore void so riferisce ad un oggetto.
L'uso del termine è utile per chiarie l'esatto significato di assegnamento, copia, e comparazione degli oggetti. Nel modello a valore, ad esempio, uno stesso oggetto può essere copiato piuttosto che essere referenziato: è trattato in questo caso come se fosse un numero.
In C: L-value e R-value
Alcuni linguaggi utilizzano l'idea di l-value e r-value. L-values sono valori che hanno indirizzi, che significa che sono variabili o references che si riferiscono ad un certo indirizzo. R-value sono sia l-value o non-l-value — un termine utilizzato solo per distinguerli dal l-value. In C, il termine l-value in origine significava qualcosa che avrebbe potuto essere assegnato (nella convenzione da sinistra a destra, si indicava il lato sinistro dell'operatore = ), ma dal momento che è stato aggiunta la parola riservata 'const' al linguaggio, questo comportamento viene oggi denominato un 'l-value modificabile'.
Un l-value è un espressione che designa (si riferisce a) un oggetto. Un l-value non modificabile è indirizzabile, ma non assegnabile. Un l-value modificabile permette all'oggetto riferito di essere sia cambiato che esaminato. Un r-value è un'espressione che non è un l-value, si riferisce a valori di dati che sono immagazzinati in memoria.
In assembly
In assembly un valore può essere virtualmente qualunque tipo di dato di un dato tipo, come ad esempio una stringa, una cifra, una singola lettera.
In questo linguaggio vi è qualcosa conosciuto come "valore immediato", qualcosa di "immediato"; alle volte vi si può riferire come "imm#" dove # è un numero che indica la grandezza del valore immediato, così che imm8 si riferisce ad un valore immediato di un byte. Un valore immediato è un numero, sia scritto in cifre o come stringa "mnemonica 'A'" che equivale a "mnemonico 0x64"; il byte order delle stringhe è diverso a seconda dell'assembly e dell'architettura utilizzata.
Collegamenti esterni
- (EN) Value Object
- (EN) Transfer Object Pattern