Successivo: , Precedente: , Su: Progetto delle estensioni   [Contenuti][Indice]


C.5.3 Altre scelte progettuali

Per una scelta progettuale arbitraria, le estensioni possono accedere ai valori delle variabili e dei vettori predefiniti (come ARGV e FS), ma non possono modificarli, con la sola eccezione di PROCINFO.

Il motivo di questa scelta è di impedire a una funzione di estensione di alterare il flusso di un programma awk togliendogli il controllo. Mentre una vera funzione di awk può fare quel che vuole, a discrezione del programmatore, una funzione di estensione dovrebbe fornire un servizio, o rendere disponibile un’API C da utilizzare all’interno di awk, senza interferire con le variabili FS o ARGC e ARGV.

Inoltre, diverrebbe facile avviarsi su un sentiero scivoloso. Quante funzionalità di gawk dovrebbero essere disponibili alle estensioni? Devono poter usare getline? Oppure richiamare gsub() o compilare espressioni regolari? Oppure richiamare funzioni interne di awk? (Questo potrebbe creare molta confusione.)

Per evitare questi problemi, gli sviluppatori di gawk hanno scelto di iniziare con le funzionalità più semplici e di base, che sono comunque veramente utili.

Sebbene gawk consenta cose interessanti come l’MPFR, e vettori indicizzati internamente con numeri interi, un’altra decisione è stata quella di non rendere disponibili all’API queste funzionalità, per amor di semplicità e per restare fedeli alla tradizionale semantica di awk. (In effetti, i vettori indicizzati internamente con numeri interi sono talmente trasparenti che non sono neppure documentati!)

In più, tutte le funzioni nell’API controllano che i puntatori ai parametri passati loro in input non siano NULL. Se lo sono, viene emesso un messaggio di errore. (È bene che il codice di estensione verifichi che i puntatori ricevuti da gawk non siano NULL. Ciò non dovrebbe succedere, ma gli sviluppatori di gawk sono solo degli esseri umani, e capita anche a loro di commettere degli errori, di tanto in tanto.)

Col tempo, l’API si svilupperà certamente; gli sviluppatori di gawk si aspettano che questo avvenga in base alle necessità degli utenti. Per ora, l’API disponbile sembra fornire un insieme di funzionalità minimo, eppure potente, per creare estensioni.


Successivo: , Precedente: , Su: Progetto delle estensioni   [Contenuti][Indice]