Successivo: , Su: Spazi-dei-nomi   [Contenuti][Indice]


15.1 Lo spazio-dei-nomi globale in awk standard

In awk standard, esiste un unico spazio-dei-nomi globale. Ciò significa che tutti i nomi di funzione e i nomi di variabili globali devono essere unici. Per esempio, due differenti file sorgenti di awk, se usati insieme, non possono entrambi definire una funzione avente nome min(), o definire una variabile con lo stesso nome, usata come scalare in programma e come vettore in un altro.

Questa situazione può essere accettabile se i programmi sono di dimensioni piccole, qualche centinaio di righe, o anche qualche migliaio, ma impedisce lo sviluppo di librerie riusabili contenenti funzioni di awk, e può far sì che file di librerie sviluppate in maniera indipendente fra loro possano incidentalmente entrare in conflitto con le variabili globali “private” proprie di un’altra libreria (vedi la sezione Dare un nome a variabili globali in funzioni di libreria).

Molti altri linguaggi di programmazione risolvono questo problema rendendo disponibile qualche tipo di controllo sullo spazio-dei-nomi: un modo per poter stabilire che “questa funzione è nello spazio-dei-nomi xxx, mentre quella funzione è nello spazio-dei-nomi yyy”. (Naturalmente, in realtà c’è ancora un unico spazio-dei-nomi, quello composto da tutti gli spazi-dei-nomi, ma si spera che ci siano solo pochi spazi-dei-nomi in uso da parte di un determinato programma e, quindi, che la probabilità di conflitti sia molto minore). Queste funzionalità sono talore indicate col nome di pacchetti (packages) o moduli (modules).

A partire dalla versione 5.0, gawk fornisce un meccanismo semplice per mettere funzioni e variabili globali in spazi-dei-nomi separati fra loro.