Una parabola (E. W. Dijkstra)

(Qualche tempo fa ho trovato il seguente testo manoscritto tra alcuni miei vecchi documenti. Deve essere stato scritto nel 1973, ma non penso che nei tre anni trascorsi abbia perso in alcuna parte il suo significato. Pertanto lo incorporo nella serie EWD.)

Una parabola.

Anni fa venne fondata una compagnia ferroviaria, e uno dei suoi dirigenti -- probabilmente un tizio del ramo commerciale -- scoprì che gli investimenti iniziali si sarebbero potuti ridurre drasticamente se solamente su metà dei vagoni fosse stato installato un bagno, e, quindi, si decise in tal senso.

Poco dopo che la compagnia iniziò a operare, tuttavia, cominciarono ad arrivare lamentele sui bagni. Venne eseguita un'indagine che portò alla luce come si fosse verificata una cosa ovvia: nonostante fosse da poco operante, la compagnia risentiva già di problemi di comunicazione interna, in quanto la decisione del dirigente riguardo ai bagni non era stata trasmessa ai cantieri di assemblaggio, in cui tutte le carrozze venivano considerate equivalenti così che, come risultato, alcuni treni risultavano quasi senza bagni.

Per risolvere il problema venne associata una piccola informazione a ogni carrozza, indicando se avesse o meno il bagno installato, e a chi si occupava di assemblare un treno venne richiesto di utilizzare più o meno lo stesso numero di carrozze per ciascun tipo. Si era trattato di una complicazione nelle operazioni di assemblaggio, ma, una volta risolta, i responsabili dei cantieri erano fieri di averla saputa gestire al meglio.

Dopo che le nuove procedure di assemblaggio divennero operative, tuttavia, le lamentele sui bagni continuarono ad arrivare. Venne effettuata una nuova indagine da cui emerse che, nonostante circa la metà delle carrozze in ogni treno avesse effettivamente i bagni,  spesso questi si trovavano tutti in una sola metà del treno. Per rimediare al problema vennero diramate nuove istruzioni, imponendo che le carrozze con i bagni fossero obbligatoriamente alternate a quelle senza bagni. Si trattava di una complicazione ancora più seria per gli assemblatori che, dopo aver brontolato per un po', riuscirono comunque ad organizzarsi.

Tuttavia le lamentele continuarono, e si scoprì che, essendo i bagni a un'estremità delle carrozze che ne risultavano equipaggiate, la distanza tra due bagni successivi poteva corrispondere quasi alla lunghezza di tre carrozze. Per le madri i cui bambini piccoli avevano bisogni urgenti -- e che magari trovavano dei bagagli impilati nei corridoi -- la cosa poteva essere disastrosa. Come risultato, le carrozze con bagno furono contrassegnate con un'ulteriore informazione che le trasformò in oggetti con un verso. Le nuove istruzioni richiedettero di fare in modo che in ogni treno le carrozze con bagno fossero orientate tutte nello stesso modo. Questa volta le nuove istruzioni vennero accolte con poco entusiasmo, perché il numero di piattaforme girevoli era a malapena sufficiente; anzi, per essere giusti con gli assemblatori, bisogna riconoscere che, secondo tutti gli standard, il numero di piattaforme era proprio insufficiente, e che fu merito della loro scaltrezza e ingegnosità se riuscirono a farcela anche in questo caso.

Con tutti i bagni uniformemente posizionati lungo il treno la compagnia era certa che ora tutto fosse a posto, ma i passeggeri continuarono a lamentarsi: nonostante nessuno fosse distante più di una carrozza dal bagno più vicino, i passeggeri (con bisogni urgenti) non sapevano in che direzione iniziare la loro folle corsa per il corridoio! Per risolvere questo problema, frecce con la scritta "BAGNO" vennero affisse in tutti i corridoi, rendendo quindi anche l'altra metà delle carrozze degli oggetti muniti di verso che dovevano essere opportunamente girati durante l'assemblaggio del treno.

Quando le nuove istruzioni arrivarono al cantiere, si creò un'atmosfera a metà strada tra la disperazione e il disgusto: la cosa, semplicemente, era infattibile! In quel momento critico un uomo, il cui nome è stato dimenticato e non riuscirà mai a essere rintracciato, fece la seguente osservazione. A partire da quando -- una volta e per sempre -- una carrozza veniva agganciata nella parte munita di bagno con una carrozza senza bagno, gli addetti al montaggio potevano utilizzare, al posto di N carrozze di due tipi e con diverse direzioni, N/2 unità identiche che, a tutti gli effetti, potevano essere considerate simmetriche.

Questa osservazione permise di risolvere tutti i problemi di assemblaggio al modico prezzo, innanzitutto, di mantenere solamente treni con un numero pari di carrozze (le poche carrozze addizionali che erano necessarie furono pagate attingendo ai risparmi ottenuti dai commerciali!) e, secondariamente, di barare un po' sul posizionamento uniforme dei bagni. Ma, dopotutto, a chi importa dell'ultimo metro?

Nonostante nel tempo in cui avvenne questa storia l'umanità ancora non avesse ancora avuto in dono i calcolatori automatici, l'uomo anonimo che trovò questa soluzione merita di essere indicato come il primo programmatore qualificato nel mondo.


Ho raccontato questa storia a diversi tipi di pubblico. I programmatori, di regola, ne sono deliziati, e i dirigenti, invariabilmente, si annoiano sempre di più man mano che la storia continua; i matematici "veri", tuttavia, non ne colgono il punto.

prof.dr.Edsger W. Dijkstra (Burroughs Research Fellow)

Commenti