<- Server Side Java - parte 2 - Indice Generale - Copertina - Indice -> |
Di tutto un po'
Tao e Open SourceAlcuni anni fa ho scritto un articolo intitolato "Lo Zen e l'arte della stabilità dei personal computer" che tentava, in maniera non tecnica, di dare una risposta a chi poneva interrogativi sull'instablità dei PC. Questo nuovo scritto, ha caratteristiche similari nella sua natura non tecnica e nella filosofia di base, ed affronta i punti di contatto fra il Tao e l'informatica in generale (e l' Open Source in particolare). |
E' doverosa una premessa: se cercate un articolo tecnico o siete troppo presi dal vostro lavoro saltate pure a piè pari la lettura di questo articolo: non vi porterà nulla e vi farà perdere del tempo prezioso.
Per tutti gli altri questo articolo può essere una lettura atipica, con la quale non ho la presunzione, o la speranza, di insegnare qualcosa di nuovo ma spero comunque di fare tornare a tutti un pezzo di sorriso.
Penso che a tutti coloro che hanno a che fare con l'informatica sia capitata, prima o poi, almeno una giornata nera. Ma veramente nera!
L'idea di base per questo articolo nasce da una di queste giornate. Alcuni utenti avevano involontariamente distrutto mesi di lavoro di alcuni sistemisti (compreso il sottoscritto).
Una volta rientrato dal lavoro non avevo, di conseguenza, molta voglia di passare la serata leggendo riviste di informatica. Avendo appena terminato la lettura di un libro non avevo nuove letture disponibili, così sono andato recuperare una lettura non ancora conclusa: un vecchio libro di Bruce Lee intitolato "The Tao of Jet Kune Doo".
Il giorno dopo, ripensando ad alcuni passi letti, mi sono reso conto che non avevo mai approfondito il significato della parola Tao usandola in senso generico (ed errato); quindi ho curiosato su Wikipedia e su qualche altro sito per saperne almeno un po di più.
Man mano che procedevo nella lettura delle definizioni, di Tao e Taoismo, trovavo dei precetti, dei principi e delle definizioni che potevano essere calati nel contesto dell'informatica. Devo subito spiegare che la pagina che potete trovare oggi su wikipedia è diversa da quella da me letta per la prima volta un anno e mezzo fa, e che, io stesso, ne ho, nel tempo, stampate almeno tre revisioni completamente diverse fra di loro nella forma anche se, sostanzialmente, di uguali contenuti. Tali diverse revisioni in alcuni casi hanno cancellato quelle espressioni che più mi avevano colpito, per cui cercherò di riportarle partendo sia dal materiale che troverete in rete, sia da quanto avevo stampato, sia da altre fonti che nel frattempo ho consultato.
La traduzione letterale di Tao non é univoca. A questa parola vengono attribuiti molti significati in quanto é una parola in cinese antico che può essere tradotta più o meno come "La Via", "Il percorso" o "La ricerca". Quasi unanimamente si concorda che la destinazione di tale percorso é la saggezza; si tratta quindi di un percorso, un cammino, in cui la cosa più importante non è la destinazione ma il cammino stesso inteso come crescita fisica e spirituale.
Quando si desidera entrare in un progetto open source spesso viene richiesto di iniziare sottoponendo delle piccole patch, per poi passare ad una partecipazione sempre più attiva nel progetto, tale processo è appunto un percorso di crescita che, al di là del valore del progetto stesso, assume valore in quanto ci richiede di progredire superando i nostri limiti. Non si tratta di un analogia con quanto esposto per il Tao si tratta proprio dello stesso percorso e tale affermazione sarà più chiara proseguendo nella lettura.
Nella filosofia taoista tradizionale cinese, il Tao ha come funzione fondamentale quella di rappresentare l'universo nella sua totalità ed i suoi precetti sono poi stati riversati nel buddismo e nella filosofia zen.
Alcuni dei precetti fondamentali asseriscono che:
Un'altra definizione che mi ha colpito è la seguente:
- "La ricerca del Tao è la ricerca dell'essenziale..."
Non so voi ma a me questa frase, che in molti passi è riportata in senso assoluto così com'è, ha fatto venire subito in mente l'acronimo KISS che stà per Keep It Simple, Stupid, ossia "mantienilo semplice, stupido" che è anche uno dei concetti base dell'extreme programming e che viene riportato anche da Eric S. Raymond nel suo "The Cathedral and the Bazaar" nel passo che segue:
"La perfezione (nel design) si ottiene non quando non c'è nient'altro da aggiungere, bensì quando non c'è più niente da togliere.
Quando il codice diventa migliore e più semplice, allora vuol dire che va bene".
Voglio far notare, in proposito, che codice semplice non vuole dire codice banale. Chi programma da molto tempo sà benissimo che il codice semplice è difficile da ottenere ed è tutt'altro che banale.
Chi pensa che i miei paragoni siano azzardati sappia che non sono una novità o una mia invenzione e che l'informatica e Tao sono spesso stati accomunati in passato. Voglio citare ad esempio "The Art of Unix Programming" sempre di Eric Raymond. Questo libro, che è un testo sacro per molti programmatori, in origine si intitolava "The Tao of Unix Programming" e il suo contenuto è infarcito di riferimenti alla filosofia zen tanto che il sesto capitolo ha un paragrafo intitolato "The Zen of Transparency" ed esalta il minimalismo di una programmazione chiara e trasparente nell'ottica di ottenere un facile debug successivo. Minimalismo che ci riconduce fra l'altro all'essenzialità di cui si diceva sopra.
In lingua italiana trovate, invece, uno scritto più specifico intitolato Zen e arte della programmazione ove ritrovate, accanto ad una buona introduzione generale, un analisi di alcuni frammenti di codice dal punto di vista della filosofia Zen. E' interessante notare come un buon codice sia riconoscibile da fattori quali ritmo e equilibrio, termini che è molto difficile incontrare in libri di testo di programmazione canonici.
Un'altra fonte illustre è Larry Wall, l'inventore del Perl che in Open Sources afferma che il "Perl ha il Tao" per via della sua sintassi, concetto ripreso anche nell'articolo "The great Tao of Perl" di vilk.
In questo caso i paragoni sono, a mio parere, un po' forzati e mostrano (ancora una volta) l'ecletismo di Larry Wall che è famoso tanto quanto la sua abilità di programmatore.
Un'altro paragone fra i due mondi viene da un bellissimo articolo di Chen Nan Yang intitolato "Il Taoismo dell'Open Source". In tale scritto si evidenzia che il potere del movimento open source è come quello delle gocce d'acqua. Una singola goccia non fa nulla ma migliaia di gocce scavano la roccia e contribuiscono, alla fine del loro percorso, a formare il mare la cui potenza è immensa se paragonata alla goccia iniziale.
Allo stesso modo il contributo di migliaia di programmatori volontari è in grado di erodere il potere delle industrie del software proprietario (la roccia) e di creare un "mare" di programmi (immagine, a dir poco, poetica).
Una fra le cose che mi è piaciuto notare durante queste letture è che il Taijitu, il simbolo del Tao (o meglio dello Yin e Yang) è un simbolo duale che rappresenta "la dualità, l'opposizione e combinazione dei due principi base dell'universo Yin e Yang è riscontrabile in ogni elemento della natura: maschio e femmina, luce e oscurità, attività e passività, movimento e staticità". Un simbolo binario quindi e pertanto facilmente riconducibile al mondo informatico.
Una simile rassomiglianza con i linguaggi binari si può notare anche nei trigrammi che spesso accompagnano tale simbolo o meglio ancora negli esagrammi del Libro dei mutamenti meglio noto a noi come I Ching. Tali esagrammi sono infatti composti esclusivamente da linee intere o spezzate e costituiscono una specie di indice in linguaggio binario per la consultazione dell'oracolo.
Concludo questa carellata di perle con un commento tratto dal libro "Lo Zen e la cerimonia del te":
"La prima cosa che uno nota nell'apprendimento della 'via del te' è che nulla viene fatto arbitrariamente; sembra esserci una regola per ciascun movimento della mano o del piede [...] lo studente è forzato a divenire cosciente di ogni movimento che esegue e del posizionamento di ciascun utensile."
Rileggendo questo passo mi sono ritrovato a sorridere mentre pensavo che un simile rigore farebbe molto bene anche nell'informatica.
Aspetto vostri commenti e le vostre opinioni su queste riflessioni; penso che su questo argomento ci potrebbe essere ancora molto da dire...
Wikipedia: Taoismo
Extreme programming simple rule
Tao Te Ching (Il libro della via e della virtu) di Lao Tse
The art of Unix Programming di Eric S.
"The great Tao of Perl" di vilk
"Il Taoismo dell'Open Source" di Chen Nan Yang
I Ching (Il libro dei mutamenti)
Zen e arte della programmazione
Lo Zen e la cerimonia del te di Kazuko Okakura (1957) ISBN 88-07-81450-1
The Tao of Jet Kune Doo by Linda Lee (1975) ISBN 0897500482
L'autoreRudi Giacomini Pilon, programmatore dall'età di 14 anni, ex progettista elettronico, ex hardwarista e sistemista presso un Microsoft Solution Provider, ex esperto di reti e programmatore in una concessionaria IBM, incontra Linux nel 1994 e da allora vede pinguini ovunque. Dal 1999 è responsabile EDP in una SpA ove affronta l'informatica a 538 gradi (360 erano pochi). |
<- Server Side Java - parte 2 - Indice Generale - Copertina - Indice -> |