Successivo: Introduzione4, Precedente: Top, Su: Top [Contenuti][Indice]
Arnold Robbins e io siamo buoni amici. Ci siamo conosciuti
nel 1990 per un insieme di
circostanze — e per il nostro linguaggio di programmazione preferito, AWK.
Tutto era iniziato un paio d’anni prima.
Avevo appena iniziato un nuovo lavoro e avevo notato un computer Unix scollegato
che giaceva in un angolo.
Nessuno sapeva come usarlo, tanto meno io. Comunque,
qualche giorno più tardi, stava funzionando, con
me come root
e solo e unico utente.
Quel giorno, iniziai la transizione da statistico a programmatore Unix.
In uno dei miei giri per biblioteche e librerie alla ricerca di libri sullo Unix, trovai il libro, dalla copertina grigia, su AWK, noto anche come Alfred V. Aho, Brian W. Kernighan e Peter J. Weinberger, The AWK Programming Language, (Addison-Wesley, 1988). Il semplice paradigma di programmazione di AWK — trovare un’espressione di ricerca nell’input e di conseguenza compiere un’azione — riduceva spesso complesse e tediose manipolazioni di dati a poche righe di codice. Ero entusiasta di cimentarmi nella programmazione in AWK.
Ahimè, l’awk
sul mio computer era una versione limitata del
linguaggio descritto nel libro grigio. Scoprii che il mio computer aveva il
“vecchio awk
” mentre il libro descriveva il “nuovo
awk
.”
Imparai che non era un caso isolato; la vecchia versione si rifiutava di farsi da
parte o di cedere il suo nome. Se un sistema aveva un nuovo awk
,
questo era chiamato invariabilmente nawk
, e pochi sistemi lo avevano.
Il miglior modo per ottenere un nuovo awk
era quello di scaricare via
ftp
il codice sorgente di gawk
da prep.ai.mit.edu
.
gawk
era una versione del nuovo awk
scritta da David Trueman
e Arnold, e disponibile sotto la GNU General Public License.
Per inciso, ora non è
più così difficile trovare un nuovo awk
. gawk
viene
fornito con GNU/Linux, e si possono scaricare i binari e il codice sorgente per
quasi tutti i sistemi; mia moglie usa gawk
nella sua stazione di lavoro VMS.
Il mio sistema Unix non era inizialmente collegato a una presa di corrente; a
maggior ragione non era collegato a una rete. Così, ignaro dell’esistenza di
gawk
e in generale della comunità di Unix, e desiderando un nuovo
awk
, ne scrissi uno mio, chiamato mawk
. Prima di aver
finito, scoprii l’esistenza di gawk
,
ma era troppo tardi per fermarmi, così alla fine inviai un messaggio
a un newsgroup comp.sources
.
Qualche giorno dopo ricevetti un cordiale messaggio di posta elettronica
da Arnold che si presentava.
Propose di scambiarci progetti e algoritmi, e
allegò una bozza dello standard POSIX, che mi permise di
aggiornare mawk
per includere le estensioni al linguaggio
aggiunte dopo la pubblicazione di The AWK Programming Language.
Francamente, se i nostri ruoli fossero stati invertiti, io non sarei stato così disponibile e probabilmente non ci saremmo mai incontrati. Sono felice che l’incontro sia avvenuto. Lui è un vero esperto tra gli esperti di AWK e una persona squisita. Arnold mette a disposizione della Free Software Foundation parti significative della sua esperienza e del suo tempo.
Questo libro è il manuale di riferimento di gawk
, ma sostanzialmente
è un libro sulla programmazione in AWK che
interesserà un vasto pubblico.
È un riferimento completo al linguaggio AWK come definito dalla versione del
1987 di Bell Laboratories e codificato nelle POSIX Utilities
standard del 1992.
D’altra parte, un programmatore AWK alle prime armi può studiare
una quantità di programmi pratici che permettono di apprezzare
la potenza dei concetti di base di AWK:
flusso di controllo guidato dai dati, ricerca di corrispondenze tramite
espressioni regolari e vettori associativi.
Chi desidera qualcosa di nuovo può provare l’interfaccia di gawk
verso i protocolli di rete attraverso i file speciali /inet.
I programmi in questo libro evidenziano come un programma AWK sia generalmente molto più piccolo e veloce da sviluppare di uno equivalente scritto in C. Di conseguenza, è spesso conveniente creare un prototipo di un algoritmo o di un progetto in AWK per arrivare a eseguirlo in breve tempo e scoprire prima i problemi che possono presentarsi. Spesso, l’efficienza di questa versione iniziale interpretata è sufficiente e il prototipo AWK diventa il prodotto finale.
Il nuovo comando pgawk
(profiling gawk
) produce
conteggi sull’esecuzione delle istruzioni del programma.
Recentemente ho fatto un tentativo con un algoritmo che, a fronte di
n
righe di input, produceva il risultato in un tempo
~ C n^2,
mentre in teoria
avrebbe dovuto terminare in un tempo
~ C n log n.
Dopo qualche minuto di attenta lettura
del profilo in awkprof.out, ho ricondotto il problema a
una singola riga di codice. pgawk
è una gradita integrazione
ai miei strumenti di programmatore.
Arnold ha condensato in questo libro oltre un decennio di esperienza nell’uso di
programmi AWK e nello sviluppo di gawk
. Se si vuole usare
AWK o imparare ad usarlo, è consigliabile leggere questo libro.
Michael Brennan
Autore di mawk
Marzo 2001
Successivo: Introduzione4, Precedente: Top, Su: Top [Contenuti][Indice]