Nomi

I nomi sono sequenze di caratteri usate per denotare qualcos’altro; nei linguaggi di programmazione i nomi sono spesso degli identificatori (sequenze alfanumeriche).

Un nome si deve riferire ad un oggetto denotabile, che può essere:

Binding

L’associazione fra nome ed oggetto denotato si chiama binding. Un binding può essere statico o dinamico.

Ambiente

L’ambiente è un insieme di associazioni nomi-oggetti esistenti a run-time in uno specifico punto del programma al momento dell’esecuzione. Lo stesso nome potrebbe infatti denotare oggetti diversi in punti diversi del programma.

La dichiarazione è il meccanismo con cui si crea un’associazione in ambiente.

Un’altra caratteristica degli ambienti è l’aliasing, ovvero quando nomi diversi denotano lo stesso oggetto, gli esempi più classici sono i passaggi per riferimento e i puntatori.

Blocchi

Nei linguaggi moderni l’ambiente è strutturato in blocchi: un blocco è una regione del programma (identificata da un simbolo di inizio e uno di fine) che può contenere informazioni locali a quella regione.

Il vantaggio dei blocchi è che consentono un’agile gestione locale dei nomi pur mantenendo un certo livello di chiarezza e libertà.

La caratteristica fondamentale dei blocchi è che l’unico modo per sovrapporli è annidandoli: non può esistere una condizione in cui un blocco A contiene un blocco B che termina dopo che è terminato il blocco A.