Successivo: , Precedente: , Su: Top   [Contenuti][Indice]


Introduzione alla Terza Edizione

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: , Precedente: , Su: Top   [Contenuti][Indice]