La poetica della programmazione

di Janice J. Heiss
3 dicembre 2002

Richard Gabriel è un brillante ingegnere che lavora per Sun Microsystem, dove indaga l'architettura, il disegno e l'implementazione di grandi sistemi, come anche lo sviluppo delle tecnologie per costruire tali strutture. è autore di vari libri, tra cui: Writers' Workshops and the Work of Making Things, Patterns of Software e Performance and Evaluation of Lisp Systems. Ha ricevuto il dottorato in scienze informatiche a Stanford nel 1981 ed è tornato a scuola per fare un master di Belle Arti in poesia nel 1998 presso l'università Warren Wilson. Inoltre sta lavorando sul programma per un master di Belle Arti in disegno del software. Recentemente ci siamo incontrati con lui perché ci tracciasse la connessione tra creatività, software e poesia.

Domanda

Sta promovuendo un Master di Belle Arti in software, simile ai master di scrittura creativa. Lei dice che: "Le tradizioni della scienza informatica e dell'ingegneria del software hanno cercato di ridurre tutti gli aspetti della creazione del software a una disciplina di ingegneria pura, quando è evidente che non è così. Il master in Belle Arti sarebbe un buon inizio per correggere l'errore." Ci spieghi la filosofia che c'è dietro la proposta.

Risposta

Scrivere un software dovrebbe essere trattato come un'attività creativa. Basta pensarci: Il software interessante da programmare è quel software che non è già stato scritto prima. In molte altre discipline ingegneristiche si tratta di costruire cose che sono già state costruite. La gente si chiederà: "Perche? non possiamo costruire un software così come si costruisce un ponte?" La risposta è che abbiamo costruito ponti per migliaia di anni e li abbiamo migliorati in modo incrementale: ogni ponte assomiglia a un ponte che è già stato costruito. Qualcuno dice: "Costruiamo un ponte su questo fiume. Il fiume è largo tot, profondo tot, il ponte dovrà sopportare un carico di tot. Ci passeranno auto, pedoni o treni, quindi sarà più o meno come quest'altro." Sanno che categoria di ponte vogliono costruire e quindi possono completare la fase di disegno velocemente. Non devono re-inventare la ruota.

Ma con il software, anche con linguaggi come Java 2 Enterprise Edition o l'implementazione Java (o quasi qualsiasi API che definiamo), stiamo sviluppando, se non la prima, al massimo la settima o ottava versione. Facciamo software da solo cinquant'anni e quasi sempre creiamo qualcosa nuovo. Se guardiamo agli sviluppatori e a quello che producono, se guardiamo il loro codice sorgente, i programmi che realizzano e i design che creano, ci rendiamo conto che c'è molta varietà. Alcune persone sono davvero brave e altre non tanto.

Quindi, siccome possiamo programmare meglio o peggio e siccome molto di quello che facciamo è creativo (dato che non sappiamo esattamente quello che scriveremo quando stiamo appena iniziando), la mia opinione è che dovremmo formare gli sviluppatori allo stesso modo in cui si formano i poeti e gli artisti. La gente dirà: "Questo è da pazzi." Ma come vengono formate le persone quando, ad esempio, studiano poesia? Studiano le grandi opere. Facciamo lo stesso nelle discipline dell'ingegneria informatica? No. Non leggiamo il codice sorgente dei capolavori del software. Non studiamo l'architettura dei capolavori del software. Non guardiamo il loro design. Non studiamo la vita dei grandi designer di software. Non studiamo la letteratura delle cose che proveremo a costruire.

Secondo, il master in Belle Arti genera un contesto nel quale si crea mentre si riflette sulla propria creazione. Per esempio, si scrivono poesie mentre si leggono e criticano altre poesie; durante il lavoro ci sono mentori che controllano l'operato degli allievi, aiutando a pensare a quello che si fa e collaborando alla revisione della creazione; poi si passa ai workshop di scrittura e si continua l'intero processo scrivendo molti, moltissimi poemi, tutto sotto la supervisione del mentore, in un contesto critico. Con il software non facciamo la stessa cosa.

Parlavo al signor Mark Strand, uno dei primi poeti che mi ha insegnato, e mi disse, più o meno, che la qualità di un artista dipende dalla quantità di poesie scritte durante la propria vita. Circa due anni e mezzo fa, ho iniziato a scrivere una poesia al giorno e sono migliorato da quando ho iniziato. Avrò scritto circa mille poesie fino ad ora, quasi tutte negli ultimi due anni.

Bisogna comparare questo con il numero di programmi che una persona scrive prima di essere considerato sviluppatore o ingegnere. Arriva a 1000? No, probabilmente saranno 50. L'idea del master di Belle Arti in software è che se si vuole diventare bravi nello scrivere programmi, bisogna fare pratica, è necessario possedere una letteratura e un contesto critico. è possibile che l'anno prossimo saremo in grado di iniziare un corso di questo tipo in una grande università che non posso nominare ora. Probabilmente si chiamerà "Master in arte del software"

D.

Ha scritto una poesia chiamata "Modelli Non-normalizzati" (Unnormalized Models) che tratta di software, con un tocco personale nella parte centrale. Ecco l'inizio della poesia:

Unnormalized Models

This is the recipe for this.
Random fields,
exponential models,
motivated from (turn
your head
and say natural language
processing
[...]

Modelli Non-normalizzati

Questa è la sua ricetta.
Spazi aleatori,
modelli esponenziali,
motivati da (gira
la testa
e dì elaborazione del linguaggio
naturale
[...]

R.

"Unnormalized Models" è una specie di poesia incontrata. Molto è preso dall'abstract di un seminario a cui ho assistito su alcuni tipi di ragionamento nei sistemi di intelligenza artificiale. Nella parte centrale, tra le parentesi, prende una svolta attraverso l'uso di dissociazione o associazione.

D.

Scrivere poesie ha influenzato la sua forma di scrivere codice?

R.

Scrivere codice mi sembra molto simile a scrivere poesie. Quando scrivo una poesia sento che il centro dei miei pensieri si concentra in una zona particolare [del cervello - n.d.r.] e quando scrivo codice sento che il centro dei miei pensieri è nello stesso tipo di posto. è lo stesso modo di concentrarsi. Cerco alternative, mi chiedo: "bene, ora come re-invento il codice, quale è il modo più facile di fare questo".

Penso a cose come la semplicità: "quanto facile sarà per altre persone leggerlo in seguito? Quanto si avvicina al design generale che avevo in mente? Quanto si adatta all'architettura?"; Se stessi scrivendo un poema lungo, con molte parti penserei: "Ok, come sta questo pezzo con gli altri? Come sta nell'immagine generale?" Quando scrivo codice faccio cose simili e se leggi il codice di programmatori talentuosi, c'è della bellezza dentro. Trovi molta attenzione alla compressione, utilizzano il linguaggio di programmazione sottostante in una maniera facile da penetrare. Sì, scrivere codice e poesia sono simili.

Ho sritto un intervento chiamato "Impulsi e pratica (Triggers and Practice)". Nella scrittura un impulso è qualcosa che ti entra in testa e ti fa iniziare a scrivere una poesia, una storia o qualsiasi altra cosa tu possa voler scrivere. L'impulso potrebbe essere una scena, una frase, un'immagine che ti viene in mente o semplicemente un ricordo. Il poeta Richard Hugo sosteneva che qualsiasi scritto è creativo, giacchè non si sa quello che apparirà sulla pagina fino a che non la scrivi. Tutta la scrittura si basa sull'impulso a scrivere e al quale si risponde.

Seleziona un tema


Opzioni lingua

Questo sito è in italiano, altre lingue presto

Scegli un'immagine