Il Tao della Programmazione

Creato da Geoffrey James

Trascritto da Duke Hillard

Trasmesso da Anupam Trivedi, Sajitha Tampi, and Meghshyam Jagannath

Portato in HTML e sistemato da Kragen Sittler

Tradotto da Devil Master

Ultima modifica 2012-01-18 o precedente



Tabella dei Contenuti

  1. Il Vuoto Silenzioso
  2. Gli Antichi Maestri
  3. Progettazione
  4. Scrittura
  5. Manutenzione
  6. Management
  7. Saggezza Corporativa
  8. Hardware e Software
  9. Epilogo

Libro 1 - Il Vuoto Silenzioso

Cos� parl� il maestro programmatore:

``Quando avrete imparato a estrarre il codice di errore dal trap frame, potrete andare.''

1.1

Qualcosa di misterioso si � formato, nato nel vuoto silenzioso. In attesa, solo e immobile, � allo stesso tempo fermo e in perenne movimento. E' la sorgente di tutti i programmi. Non conosco il suo nome, cos� lo chiamer� il Tao della Programmazione.

Se il Tao � grande, il sistema operativo � grande. Se il sistema operativo � grande, il compilatore � grande. Se il compilatore � grande, l'applicazione � grande. L'utente � soddisfatto e nel mondo nasce armonia.

Il Tao della Programmazione scorre via lontano e ritorna con il vento del mattino.

1.2

Il Tao ha dato vita al linguaggio macchina. Il linguaggio macchina ha dato vita all'assemblatore.

L'assemblatore ha dato vita al compilatore. Ora ci sono diecimila linguaggi.

Ogni linguaggio ha il suo scopo, per quanto umile sia. Ogni linguaggio esprime lo Yin e Yang del software. Ogni linguaggio ha il suo posto nel Tao.

Ma non programmate in COBOL se riuscite a evitarlo.

1.3

All'inizio c'era il Tao. Il Tao ha dato vita allo Spazio e al Tempo. Dunque, lo Spazio e il Tempo sono lo Yin e lo Yang della programmazione.

I programmatori che non comprendono il Tao sono sempre a corto di tempo e spazio per i loro programmi. I programmatori che comprendono il Tao hanno sempre abbastanza tempo e spazio per raggiungere il loro scopo.

Come potrebbe essere altrimenti?

1.4

Il programmatore saggio sente parlare del Tao e lo segue. Il programmatore medio sente parlare del Tao e lo cerca. Il programmatore stupido sente parlare del Tao e lo deride.

Se non fosse per quelle risate, il Tao non esisterebbe.

I suoni pi� acuti sono i pi� difficili da udire.
Andare avanti � un modo per ritirarsi.
Un grande talento si mostra tardi nella vita.
Anche un programma perfetto ha ancora bug.


Libro 2 - Gli Antichi Maestri

Cos� parl� il maestro programmatore:

``Dopo tre giorni senza programmare, la vita diventa priva di significato.''

2.1

Gli antichi programmatori erano misteriosi e profondi. Non possiamo sondare i loro pensieri, cos� tutto quello che possiamo fare � descrivere il loro aspetto.

Attenti, come una volpe che attraversa un corso d'acqua. All'erta, come un generale nel campo di battaglia. Gentili, come un'albergatrice che saluta i suoi ospiti. Semplici, come blocchi di legno non lavorato. Opachi, come pozze nere in caverne buie.

Chi pu� rivelare i segreti del loro cuore e della loro mente?

La risposta esiste solo nel Tao.

2.2

Il Grande Maestro Turing una volta sogn� di essere una macchina. Quando si svegli� esclam�:

``Non so se sono Turing che sogna di essere una macchina, o una macchina che sogna di essere Turing!''

2.3

Un programmatore di una grossa ditta di software and� a una conferenza e poi torn� per fare rapporto al suo manager, dicendo: ``Che razza di programmatori lavorano per le altre ditte? Si comportavano male e non erano interessati al loro aspetto. Avevano i capelli lunghi e non curati e indossavano abiti vecchi e stropicciati. Hanno rovinato la sala degli ospiti, e facevano rumori maleducati durante la mia presentazione.''

Il manager disse: ``Non avrei mai dovuto mandarti alla conferenza. Quei programmatori vivono oltre il mondo fisico. Considerano la vita assurda, una coincidenza accidentale. Vanno e vengono senza conoscere limitazioni. Senza preoccupazioni, vivono solo per i loro programmi. Perch� dovrebbero preoccuparsi delle convenzioni sociali?

``Sono vivi all'interno del Tao.''

2.4

Un novizio chiese al Maestro: ``Qui c'� un programmatore che non organizza, documenta n� testa i suoi programmi. Eppure tutti quelli che lo conoscono lo considerano uno dei migliori programmatori del mondo. Perch�?''

Il Maestro rispose: ``Quel programmatore padroneggia il Tao. E' andato oltre la necessit� di organizzazione; non si arrabbia quando il sistema va in crash, ma accetta l'universo senza preoccupazione. E' andato oltre la necessit� di documentazione; non si preoccupa pi� se qualcun altro vede il suo codice. E' andato oltre la necessit� di testare i suoi programmi; ognuno di essi � perfetto in s� stesso, sereno ed elegante, il loro scopo � palese. E' veramente penetrato nel mistero del Tao.''


Libro 3 - Progettazione

Cos� parl� il maestro programmatore:

``Quando il programma viene testato, � troppo tardi per fare modifiche nel progetto.''

3.1

C'era una volta un uomo che and� a una fiera di computer. Il primo giorno, entrando, disse alla guardia sulla porta:

``Io sono un grande ladro, famoso per le mie imprese di taccheggio. Siate preparati, perch� questa fiera non sfuggir� alle mie brame.''

Questo discorso infastid� molto la guardia, perch� c'erano milioni di dollari di attrezzature all'interno, cos� osserv� attentamente l'uomo. Ma l'uomo si limitava a girovagare da padiglione a padiglione, canticchiando sommessamente.

Quando l'uomo se ne and�, la guardia lo port� da parte e perquis� i suoi abiti, ma non trov� nulla.

Il giorno successivo della fiera, l'uomo torn� e infastid� la guardia dicendo: ``Ieri sono sfuggito con un vasto bottino, ma oggi sar� ancora meglio.'' Cos� la guardia inizi� a tenerlo d'occhio pi� attentamente, ma senza risultato.

L'ultimo giorno della fiera, la guardia non poteva pi� trattenere la sua curiosit�. ``Signor ladro,'' disse, ``sono cos� perplesso da non riuscire a capacitarmi. Per favore mi illumini. Che cos'� che sta rubando?''

L'uomo sorrise. ``Sto rubando idee'', disse.

3.2

C'era una volta un maestro programmatore che scriveva programmi non strutturati. Un programmatore novizio, cercando di imitarlo, inizi� anche lui a scrivere programmi non strutturati. Quando il novizio chiese al maestro di valutare i suoi progressi, il maestro lo rimprover� per aver scritto programmi non strutturati, dicendo: ``Ci� che � appropriato per il maestro non � appropriato per l'allievo. Devi comprendere il Tao prima di trascendere la struttura.''

3.3

C'era una volta un programmatore che lavorava alla corte del Signore di Wu. Il signore chiese al programmatore: ``Che cosa � pi� facile da progettare: un programma di contabilit� o un sistema operativo?''

``Un sistema operativo'', rispose il programmatore.

Il signore fece un'espressione di incredulit�. ``Sicuramente un programma di contabilit� � banale in confronto alla complessit� di un sistema operativo'', disse.

``Non � cos�'', disse il programmatore, ``progettando un programma di contabilit�, il programmatore opera da mediatore tra persone che hanno idee diverse: come deve operare, come devono apparire i suoi rapporti, e come deve conformarsi alle leggi sulle tasse. Invece, un sistema operativo non � limitato dalle apparenze esterne. Quando progetta un sistema operativo, il programmatore cerca l'armonia pi� semplice tra macchina e idee. Ecco perch� un sistema operativo � pi� facile da progettare.''

Il Signore di Wu annu� e sorrise. ``Sono d'accordo su tutto, ma quale � pi� facile da debuggare?''

Il programmatore non rispose.

3.4

Un manager and� dal maestro programmatore e gli mostr� il documento dei requisiti per una nuova applicazione. Il manager chiese al maestro: ``Quanto tempo servir� per progettare questo sistema se gli assegno cinque programmatori?''

``Servir� un anno,'' disse prontamente il maestro.

``Ma questo sistema ci serve immediatamente o anche prima! Quanto tempo servir� se gli assegno dieci programmatori?''

Il maestro programmatore corrug� la fronte. ``In quel caso, serviranno due anni.''

``E se gli assegno cento programmatori?''

Il maestro programmatore alz� le spalle. ``Allora il progetto non sar� mai completato,'' disse.


Libro 4 - Scrittura

Cos� parl� il maestro programmatore:

``Un programma scritto bene � il suo stesso paradiso; un programma scritto male � il suo stesso inferno.''

4.1

Un programma dovrebbe essere leggero e agile, le sue subroutine collegate come una collana di perle. Lo spirito e l'intento del the programma dovrebbe essere mantenuto attraverso tutto il suo codice. Non ci dovrebbe essere n� troppo poco n� troppo, n� cicli che non servono n� variabili inutili, n� mancanza di struttura n� eccessiva rigidit�.

Un programma dovrebbe seguire la `Legge del Minor Stupore'. Cosa dice questa legge? Semplicemente che il programma dovrebbe sempre rispondere all'utente nel modo che lo stupisce di meno.

Un programma, non importa quanto complesso, dovrebbe comportarsi come una singola unit�. Il programma dovrebbe essere diretto dalla logica interiore anzich� dall'apparenza esteriore.

Se il programma manca di questi requisiti, sar� in uno stato di disordine e confusione. Il solo modo per correggerlo � riscrivere il programma.

4.2

Un novizio chiese al maestro: ``Ho un programma che a volte gira e a volte no. Ho seguito le regole della programmazione, eppure sono totalmente sconcertato. Qual � la ragione per questo?''

Il maestro rispose: ``Sei confuso perch� non capisci il Tao. Solo uno stupido si aspetta un comportamento razionale da altri umani. Perch� tu te lo aspetti da una macchina costruita da umani? I computer simulano il determinismo; solo il Tao � perfetto.''

``Le regole della programmazione sono transitorie; solo il Tao � eterno. Quindi devi contemplare il Tao prima di ricevere l'illuminazione.''

``Ma come far� a sapere quando ho ricevuto l'illuminazione?'' chiese il novizio.

``Allora il tuo programma girer� correttamente'', rispose il maestro.

4.3

Un maestro stava spiegando la natura del Tao a uno dei suoi allievi. ``Il Tao � racchiuso in tutto il software - non importa quanto sia insignificante'', disse il maestro.

``Il Tao � in un calcolatore tascabile?'' chiese l'allievo.

``Lo �'' fu la risposta.

``Il Tao � in un videogioco?'' continu� l'allievo.

``E' anche in un videogioco'' disse il maestro.

``E il Tao � nel DOS per un personal computer?''

Il maestro toss� e si spost� leggermente sulla sedia. ``La lezione � finita per oggi'' disse.

4.4

Il programmatore del Principe Wang stava scrivendo software. Le sue dita danzavano sulla tastiera. Il programma venne compilato senza errori, girando come una brezza gentile.

``Eccellente!'' esclam� il Principe, ``La tua tecnica � perfetta!''

``Tecnica?'' disse il programmatore voltandosi dal suo terminale, ``Ci� che seguo � il Tao - oltre tutte le tecniche! Quando avevo appena iniziato a programmare vedevo davanti a me l'intero problema in un'unica massa. Dopo tre anni non vedevo pi� questa massa. Invece, usavo le subroutine. Ma ora non vedo nulla. Il mio intero essere esiste in un vuoto informe. I miei sensi sono inattivi. Il mio spirito, libero di lavorare senza progetti, segue il suo stesso istinto. In breve, il mio programma si scrive da solo. Certo, a volte ci sono problemi difficili. Li vedo arrivare, rallento, osservo in silenzio. Poi modifico una singola linea di codice e le difficolt� svaniscono come nuvolette di fumo. Poi compilo il programma. Sto seduto immobile e lascio che la gioia del lavoro riempia il mio essere. Chiudo gli occhi per un momento e poi mi disconnetto.''

Il Principe Wang disse, ``Fossero tutti cos� saggi, i miei programmatori!''


Libro 5 - Manutenzione

Cos� parl� il maestro programmatore:

``Anche se un programma dovesse essere lungo tre righe, un giorno dovr� essere mantenuto.''

5.1

A una porta ben usata non serve olio sui cardini.
Un torrente che scorre in fretta non diventa stagnante.
N� il suono n� i pensieri possono viaggiare attraverso il vuoto.
Il software marcisce se non viene usato.

Questi sono grandi misteri.

5.2

Un manager chiese a un programmatore quanto tempo gli sarebbe servito per finire il programma a cui stava lavorando. ``Sar� finito domani'', rispose prontamente il programmatore.

``Penso che tu sia irrealistico'', disse il manager, ``Sul serio, quanto tempo servir�?''

Il programmatore pens� un momento. ``Ho alcune caratteristiche che vorrei aggiungere. Serviranno almeno due settimane'', disse infine.

``Anche cos� � un'aspettativa troppo grossa'' insistette il manager, ``Sar� soddisfatto se mi dici semplicemente quando il programma sar� completo.''

Il programmatore accett�.

Diversi anni dopo, il manager and� in pensione. Mentre andava al pranzo di pensionamento, scopr� il programmatore esausto, addormentato al terminale. Aveva lavorato tutta la notte a quello stesso programma.

5.3

A un programmatore novizio venne richiesto di scrivere un semplice programma finanziario.

Il novizio lavor� furiosamente per molti giorni, ma quando il suo maestro valut� il suo programma, scopr� che conteneva un editor di schermate, un set di routine grafiche generalizzate, un'interfaccia di intelligenza artificiale, ma non la bench� minima menzione di qualcosa di finanziario.

Quando il maestro chiese spiegazioni, il novizio si indign�. ``Non essere cos� impaziente'', disse, ``Includer� la roba finanziaria, prima o poi.''

5.4

Un buon contadino trascura un raccolto che ha piantato?
Un buon insegnante trascura anche lo studente pi� umile?
Un buon padre permette a un solo figlio di morire di fame?
Un buon programmatore si rifiuta di mantenere il suo codice?


Libro 6 - Management

Cos� parl� il maestro programmatore:

``Che i programmatori siano molti e i manager pochi - allora tutto sar� produttivo.''

6.1

Quando i manager tengono riunioni infinite, i programmatori scrivono giochi. Quando i contabili parlano di profitti trimestrali, il budget dello sviluppo sta per essere tagliato. Quando gli scienziati pi� vecchi parlano del cielo azzurro, stanno per arrivare le nuvole.

Davvero, questo non � il Tao della Programmazione.

Quando i manager prendono impegni, i giochi vengono ignorati. Quando i contabili fanno progetti a lunga scadenza, stanno per tornare l'armonia e l'ordine. Quando gli scienziati pi� vecchi prendono in mano i problemi, i problemi stanno per essere risolti.

Davvero, questo � il Tao della Programmazione.

6.2

Perch� i programmatori non sono produttivi?
Perch� il loro tempo � sprecato in riunioni.

Perch� i programmatori si ribellano?
Perch� il management interferisce troppo.

Perch� i programmatori si dimettono uno per uno?
Perch� sono esausti.

Lavorando per un management scadente, non danno pi� valore al loro lavoro.

6.3

Un manager stava per essere licenziato, ma un programmatore che lavorava per lui invent� un nuovo programma che divenne popolare e vendette bene. Come risultato, il manager mantenne il suo posto.

Il manager cerc� di dare un compenso extra al programmatore, ma il programmatore lo rifiut�, dicendo, ``Ho scritto il programma perch� pensavo che fosse un concetto interessante, quindi non mi aspetto alcun premio.''

Il manager, sentendo questo, pens�: ``Questo programmatore, anche se ha una posizione di basso pregio, capisce bene il dovere proprio di un impiegato. Promuoviamolo alla posizione esaltata di consulente del management!''

Ma quando gli venne detto, il programmatore rifiut� nuovamente, dicendo, ``Io esisto per poter programmare. Se venissi promosso, non farei altro che sprecare il tempo di tutti. Posso andare ora? Ho un programma a cui sto lavorando."

6.4

Un manager and� dai suoi programmatori e disse loro: ``Riguardo alle vostre ore di lavoro: dovete essere entrati alle nove del mattino e uscire alle cinque del pomeriggio.'' Sentendo questo, tutti si arrabbiarono e alcuni si dimisero immediatamente.

Allora il manager disse: ``Va bene, in questo caso potete gestire da voi l'orario di lavoro, a patto che finiate in tempo i vostri progetti.'' I programmatori, ora soddisfatti, iniziarono a entrare in ufficio a mezzogiorno e lavorare fino a tarda notte.


Libro 7 - Saggezza Corporativa

Cos� parl� il maestro programmatore:

``Potete mostrare un programma a un dirigente, ma non potete renderlo un esperto di computer.''

7.1

Un allievo chiese al maestro: ``A oriente c'� una grande struttura ad albero che gli uomini chiamano `Sede della Ditta'. E' dilatata e sformata con vicepresidenti e contabili. Pubblica una moltitudine di promemoria, ognuno dei quali dice `Andate l�!' o `Venite qua!' e nessuno sa cosa vogliono dire. Ogni anno vengono aggiunti nuovi nomi sui rami, ma tutti di nessuna utilit�. Come pu� esistere un'entit� cos� innaturale?"

Il maestro rispose: ``Tu percepisci questa immensa struttura e sei disturbato dal fatto che non ha uno scopo razionale. Non riesci a trarre sollazzo dalle sue infinite giravolte? Non godi della facilit� di programmare senza problemi sotto i suoi ospitevoli rami? Perch� la sua inutilit� ti infastidisce?''

7.2

A oriente c'� uno squalo che � pi� grande di tutti gli altri pesci. Si trasforma in un uccello le cui ali sono come nuvole che riempiono il cielo. Quando quest'uccello si muove da un capo all'altro della terra, porta un messaggio dalla Sede della Ditta. Questo messaggio lo fa cadere tra la moltitudine dei programmatori, come un gabbiano che lascia il suo marchio sulla spiaggia. Poi l'uccello monta in groppa al vento, e, con il cielo azzurro alle spalle, ritorna a casa.

Il programmatore novizio fissa meravigliato l'uccello, perch� non lo capisce. Il programmatore medio teme l'attivo dell'uccello, perch� ha paura del suo messaggio. Il programmatore esperto continua a lavorare al terminale, perch� non sa che l'uccello � venuto e andato via.

7.3

Il Mago della Torre d'Avorio port� la sua ultima invenzione dal maestro programmatore perch� la esaminasse. Il mago fece entrare una grande scatola nera nell'ufficio del maestro, mentre il maestro aspettava in silenzio.

``Questa � una workstation multiuso integrata e distribuita'', inizi� il mago, ``progettata ergonomicamente con un sistema operativo proprietario, linguaggi di sesta generazione, e numerose interfacce utente ultramoderne. Ai miei assistenti sono state necessarie diverse centinaia di anni-uomo per costruirla. Non � stupefacente?''

Il maestro sollev� leggermente le sopracciglia. ``E' davvero stupefacente'', disse.

``La Sede della Ditta ha ordinato'', continu� il mago, ``che tutti usino questa workstation come piattaforma per i nuovi programmi. Siete d'accordo?''

``Certamente'', rispose il maestro, ``La far� trasportare al centro dati immediatamente!'' E il mago torn� alla sua torre, molto compiaciuto.

Diversi giorni dopo, un novizio entr� nell'ufficio del maestro programmatore e disse, ``Non riesco a trovare il listato per il mio nuovo programma. Sa dove potrebbe essere?''

``S�'', rispose il maestro, ``i listati sono impilati sulla piattaforma nel centro dati.''

7.4

Il maestro programmatore si muove da programma to programma senza paura. Nessun cambio di management pu� danneggiarlo. Non sar� licenziato, anche se il progetto � annullato. Perch�? E' tutt'uno con il Tao.


Libro 8 - Hardware e Software

Cos� parl� il maestro programmatore:

``Senza il vento, l'erba non si muove. Senza il software, l'hardware � inutile.''

8.1

Un novizio chiese al maestro: ``Vedo che una ditta informatica � molto pi� grande di tutte le altre. Torreggia sopra la concorrenza come un gigante tra i nani. Ognuna delle sue divisioni potrebbe includere un'intera azienda. Perch� � cos�?''

Il maestro rispose, ``Perch� fai domande cos� stupide? Quella ditta � grande perch� � grande. Se producesse solo hardware, nessuno lo comprerebbe. Se producesse solo software, nessuno lo userebbe. Se facesse solo manutenzione di sistemi, la gente la tratterebbe come un servo. Ma siccome combina tutte queste cose, la gente la considera una divinit�! Senza cercare di sforzarsi, conquista senza fatica.''

8.2

Un giorno un maestro programmatore pass� vicino a un novizio. Il maestro not� la preoccupazione del novizio con un videogioco portatile. ``Chiedo scusa'' disse, ``posso esaminarlo?''

Il novizio scatt� in piedi e pass� il dispositivo al maestro. ``Vedo che il dispositivo sostiene di avere tre livelli di gioco: Facile, Medio, e Difficile,'' disse il maestro. ``Eppure ogni dispositivo di questo tipo ha un altro livello di gioco, in cui il dispositivo non cerca di sconfiggere l'umano, n� di essere sconfitto dall'umano.''

``Dica, gran maestro'' implor� il novizio, ``Come si trova quest'opzione misteriosa?''

Il maestro gett� il dispositivo a terra e lo schiacci� sotto i piedi. E improvvisamente il novizio trov� l'illuminazione.

8.3

C'era una volta un programmatore che lavorava sui microprocessori. ``Guarda come mi trovo bene qui'' disse a un programmatore di mainframe venuto in visita, ``ho il mio sistema operativo e la mia memoria di massa. Non devo condividere le mie risorse con nessuno. Il software � autoconsistente e facile da usare. Perch� non abbandoni il tuo lavoro e non ti unisci a me qui?''

Il programmatore di mainframe allora inizi� a descrivere il suo sistema al suo amico, dicendo ``Il mainframe siede come un vecchio saggio che medita in mezzo al centro dati. I suoi dischi sono appoggiati uno accanto all'altro come un grande oceano di macchine. Il software � multisfaccettato come un diamante, e convoluto come una giungla primitiva. I programmi, ognuno dei quali � unico, attraversano il sistema come un rapido fiume. Ecco perch� sono felice dove sono.''

Il programmatore di microprocessori, sentendo ci�, rimase in silenzio. Ma i due programmatori rimasero amici per tutta la vita.

8.4

Hardware incontr� Software sulla strada per Changtse. Software disse: ``Tu sei lo Yin e io sono lo Yang. Se viaggiamo insieme diventeremo famosi e guadagneremo grandi somme di denaro.'' E cos� si incamminarono insieme, pensando di conquistare il mondo.

Poi incontrarono Firmware, che era vestito di stracci e camminava appoggiato a un bastone spinoso. Firmware disse loro: ``Il Tao sta oltre lo Yin e lo Yang. E' silenzioso e immobile come una pozza d'acqua. Non cerca la fama, quindi nessuno � al corrente della sua presenza. Non cerca la fortuna, perch� � completo in s� stesso. Esiste oltre lo spazio e il tempo.''

Software e Hardware, con vergogna, tornarono a casa loro.


Libro 9 - Epilogo

Cos� parl� il maestro programmatore:

``Ora potete andare.''