Una nuova feature per AWK da Brian Kernighan!

1

In un mondo dove se non viene fatto un aggiornamento ogni mese, che aggiunga nuove funzionalità o vada a correggere dei bug, l’applicazione è giudicata “stale” (stantìa) e addirittura viene rimossa dal suo “App Store”, esiste ancora del software scritto bene, che fa il suo lavoro onestamente, e che non ha praticamente bisogno di essere toccato perchè ben studiato e strutturato ab origine. E’ il caso di AWK, che è sinonimo sia del nome linguaggio di programmazione, sia dei tool che ne permettono l’implementazione, nelle varie declinazioni (nawk, gawk, mawk…). Rimanendo nel contesto del linguaggio, AWK permette di effettuare operazioni su stream di testo, per vari scopi, come la produzione di report, la semplice manipolazione di campi e la trasformazione di dati, supportando espressioni regolari e tipi di dato complessi. Come moltissimi altri tool UNIX scritti nei favolosi anni ’70 è nato per fare una cosa, farla bene, e per essere combinato con altri tool tramite il carattere pipe ‘|’ che permette di portare l’output di un comando all’input di quello successivo. Spesso infatti lo troviamo a lavorare in coppia con sed, un altro strumento che lavora in streaming: uno dei motivi è anche che mentre AWK lavora meglio in orizzontale (sui campi della riga), sed lavora meglio in verticale (sulle varie righe).

AWK, sia come linguaggio e sia come utility, prende il nome dalle iniziali dei suoi creatori: Alfred Aho, Peter J. Weinberger e, ultimo ma non ultimo. Brian Kernighan.

La K di Brian Kernighan, co-autore tra l’altro del libro del 1985, The AWK Programming Language, è anche presente in un altro caposaldo dell’informatica moderna: The C Programming Language, detto anche “K&R” dagli addetti ai lavori, dove la R sta per Dennis Ritchie, il creatore, del linguaggio C, quello in cui è anche scritto il Kernel Linux. Brian Kernighan insegnava il C nei Bell Labs, e convinse Ritchie a scrivere insieme un libro per facilitarne la comprensione e condividere il più possibile la conoscenza. E’ anche l’autore del primissimo “Hello, world”, l’esempio utilizzato in praticamente qualsiasi manuale di programmazione come introduzione al linguaggio stesso. Un curriculum di tutto rispetto.

Ed è di poco fa l’annuncio dell’aggiunta del supporto Unicode ad AWK, per mano dello stesso Kernighan, che ha affermato:

“It’s always been an embarrassment that AWK only worked with ASCII, or maybe 8-bit inputs, but it doesn’t really handle Unicode at all,” Kernighan tells interviewer professor David Brailsford. “A few months ago, I spent some time working with (laughs) an incredibly old program. I have it at this point where it will actually handle UTF-8 input and output so that you can have regular expressions that, you know, pick up Japanese characters, things like that.”

“Il fatto che AWK lavorasse solo in ASCII, o con input a 8 bit, e non supportasse Unicode, è sempre stato imbarazzante”, ha riferito Kernighan al suo intervistatore, il professor David Brailsford. “Qualche mese fa, ho lavorato per un po’ su un programma parecchio vecchio (ride). E a questo punto può gestire input e output UTF-8, e quindi è possibile avere espressioni regolari che possano catturare caratteri giapponesi, cose di questo tipo”.

In questo commit lo storico maintainer della repo “onetrueawk”, Arnold Robbins, riporta la mail ricevuta da Brian Kernighan dove questi asserisce di essere ad un “buon punto”, e che manca solo qualche test.

Aspettiamo quindi trepidanti la merge in master!

Sostenitore di lunga data dell’Open Source, Sysadmin ma anche programmatore, mi appassiona qualsiasi cosa nell’IT che possa permettere un’espressione di creatività. Nostalgico della filosofia dei tempi andati, ma incuriosito dalle potenzialità dei paradigmi moderni.

Una risposta a “Una nuova feature per AWK da Brian Kernighan!”

  1. Avatar JaK
    JaK

    E, se ho letto correttamente l’intervista, la cosa che lo rallenta un po’ è «capire come accidenti funziona Git» 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *