la soluzione

Il Covid, la metro di Roma e il pensiero computazionale: come (non) favorire i contagi

Le norme messe in opera a Roma per gestire i flussi di persone in ingresso e in uscita dalle metropolitane sono un clamoroso esempio di mancanza totale di pensiero computazionale e finiscono, tra l’altro, per favorire i contagi. Eppure la soluzione sarebbe semplicissima, basterebbe un po’ di buon senso

18 Set 2020
Giovanni Salmeri

Università degli Studi di Roma Tor Vergata


Nell’attuale emergenza sanitaria e nelle strategie per contenere i contagi molto spazio nel mondo informatico è occupato, giustamente, dalle discussioni sulle applicazioni che consentono di tracciare i contatti delle persone, come la nostrana Immuni. Giustissimo. Ma non ci sono anche modi più sottili in cui l’informatica, o il «pensiero computazionale», può dare una mano, magari per ridurre possibilità di contagi nella metropolitana? Vediamo le cose per ordine.

Ingresso e uscita nelle metro romane, ovvero: come favorire i contagi

Chi conosce Roma sa che ogni stazione è normalmente accessibile in genere da numerose scale in superficie. Nella stazione Termini le prime due linee si incrociano, e il passaggio dall’una all’altra, e alla stazione ferroviaria in superficie, si può fare con percorsi diversi. Così anche nella stazione di San Giovanni l’incrocio tra la prima e la terza linea si effettua con un grandissimo passaggio interno. Quasi tutte le fermate hanno sottoterra spazi molto ampi per entrare, uscire, o passare da un verso all’altro.

Ecco, secondo le autorità di Roma qui c’è veramente un problema per questa emergenza sanitaria in cui è necessario mantenere le distanze tra le persone: come ammettere che le persone possano camminare dove vogliono? Da molto tempo, quindi, in tutte le fermate della metropolitana sono chiusi tutti gli accessi eccetto uno per l’ingresso e uno per l’uscita. Se qualcuno entra dalla parte sbagliata, ci sono spesso addetti che lo invitano gentilmente a uscire di nuovo in superficie, attraversare la strada incrociando decine di persone, e rientrare (spesso a molta distanza) dalla parte giusta. Anche il collegamento tra la linea B e la linea C non si può più fare nello spaziosissimo luogo interno della stazione di San Giovanni: è necessario uscire dall’uscita unica, attraversare via Appia Nuova, ed entrare dall’angusto ingresso unico dell’altra linea. In tutte le fermate gli spazi interni sono recintati con catenelle in maniera da restringerli il più possibile e costringere le persone a disporsi tutte nello stesso percorso, evitando così la deplorevole situazione in cui persone entrano o escono dalla strada più breve. Stessa cosa nei sottopassaggi e nella superficie della Stazione Termini (i primi giorni molti hanno perso il treno per non aver considerato il tempo addizionale per compiere il lungo passaggio obbligato a zigzag).

L’esempio migliore di questa strategia di incanalamento è nell’ingresso alla metropolitana A nella stazione Termini: l’itinerario è interamente determinato, unico, ed in un notevole tratto le persone devono concentrarsi in una strettissima scala (la scala mobile parallela è fuori uso da molto tempo): originariamente si trattava del percorso fatto per permettere di passare da una linea all’altra, ora lo devono percorrere tutti, entrando prima nella linea B, incrociando le tantissime persone che attendono nella banchina, e infine, appunto, infilandosi nel suddetto budello. Indubbiamente, è risolto il problema delle persone che vanno dove vogliono: segnaletica per tutti, e spazi ristretti in maniera che tutti siano concentrati in pochi decimetri.

Una soluzione semplice semplice

È davvero difficile non allibire di fronte a criteri tanto assurdi che stanno ottenendo, da settimane, «assembramenti» di persone che in qualsiasi altro luogo sarebbero giudicati poco meno che criminali. Si allibisce tanto più che la proposta alternativa sarebbe semplicissima. Che cosa bisognerebbe infatti fare? Solo, a costo zero, riaprire tutti gli accessi, togliere tutta la segnaletica, tutte le barriere, tutti i divieti, e lasciare che le persone entrino ed escano esattamente come prima: cioè distanziandosi spontaneamente, come è sempre avvenuto (e come sicuramente avverrebbe ancora di più ora, perché tutti tengono alla propria salute). Una proposta non proprio a costo zero, ma buona e giusta, sarebbe riparare le innumerevoli scale mobili guaste (si veda che cosa accade all’arrivo di qualsiasi vagone della metropolitana A a Termini, dove lo spazio per uscire è dimezzato a causa dei guasti, lasciati lì da settimane senza il minimo segno di lavori in corso.) A coloro che hanno ideato e messo in opera l’attuale sistema demenziale (che mi chiedo quanti contagi addizionali stia provocando) dovrebbe sì essere trasmesso un sincero ringraziamento per lo sforzo e per l’iniziativa, ma dovrebbe anche essere fatto un piccolo corso di buon senso.

Buon senso e pensiero computazionale

Ma si può dare un nome più preciso a questo «buon senso»? C’è un’espressione che da diversi anni viene usata per indicare gli aspetti più generali e concettuali dell’informatica: «pensiero computazionale». Sinceramente non ho mai amato questa dizione, che mi pare spesso usata per suggerire che chiacchierate vaghe possano sostituire uno studio serio dell’informatica. Ma in quest’occasione ci torna comoda. Ecco, le norme messe in opera a Roma sono un clamoroso esempio di mancanza totale di pensiero computazionale. Che cosa c’entra il calcolo con il flusso delle persone? C’entra, e molto. Quello che si deve affrontare è esattamente un banale problema di flusso. Non è flusso di dati, ma di persone? Be’, è esattamente la stessa cosa. Certo, per la mente umana è più facile pensare le cose in maniera sequenziale: per esempio, le ricette di cucina in genere sono scritte in questo modo, come se ogni cosa dovesse essere fatta dopo un’altra. Ma tutti sanno che spesso si può, o addirittura si deve far diversamente: se debbo cucinare gli spaghetti con aglio, olio e peperoncino, so che posso, anzi debbo, cominciare a scaldare l’olio con l’aglio e il peperoncino mentre la pasta si sta finendo di cuocere (confesso che è l’unico esempio che le mie penose competenze culinarie possano produrre, ma rende l’idea).

Nel 1983 venne creato il primo linguaggio di programmazione di alto livello (si chiamava Occam) inerentemente parallelo anziché sequenziale: l’unico linguaggio imperativo cioè in cui se si volevano indicare alcune operazioni da svolgere obbligatoriamente in sequenza, ciò doveva essere esplicitamente indicato. Il linguaggio (interessantissimo) purtroppo ebbe poco successo: anche perché, appunto, non è facile pensare operazioni in maniera intrinsecamente parallela: nei computer attuali avvengono sì parallelamente moltissime cose, ma questo avviene il più delle volte dietro le quinte. Il caso che tuttavia qui stiamo considerando è molto più facile: stiamo parlando solo di un flusso di dati, non dell’esecuzione di operazioni. Che molte persone passino parallelamente in più canali è più efficiente. Il caso non è insomma concettualmente molto diverso da quello di un imbuto, che più ha il canale grande, più rapidamente lascia passare il vino. Tanto difficile?

C’è in realtà anche un altro aspetto che tocca il pensiero computazionale: è evidente che chi ha elaborato le norme demenziali per le metropolitane di Roma è terrorizzato dal fatto che il movimento delle persone possa essere casuale. Da evitare in tutti i modi, no? Niente affatto. Anche qui un pizzico di pensiero computazione aiuta. Chi studia un linguaggio di programmazione prima o poi incontra una qualche funzione per generare numeri casuali (è molto usata per esempio quando si vogliono scrivere i primi facilissimi giochi, puta caso per simulare un lancio di dadi). Appena si studiano un po’ le cose, si impara che in realtà non si tratta mai di numeri casuali, ma pseudo-casuali: sono infatti vere e proprie funzioni matematiche (quindi non casuali), che generano a partire da un numero arbitrariamente scelto una sequenza di numeri con una caratteristica fondamentale (tra le altre): essi sono uniformemente distribuiti lungo l’intervallo prescelto. Più questa distribuzione è uniforme, più la funzione pseudo-casuale è buona, perché imita bene la vera casualità. Insomma, che cosa significa voler impedire un movimento casuale delle persone? Significa voler impedire che esse siano uniformemente distribuite, cioè che mediamente siano alla distanza maggiore possibile!

Ovviamente le cose non sono così semplici, perché nella casualità è implicito anche il disordine (immaginiamo che cosa accadrebbe in un’autostrada in cui si potesse scegliere liberamente se tenere la destra o la sinistra come i sudditi della regina Elisabetta). Ma anche su questo si potrebbe ragionare in maniera «computazionale», e sicuramente il risultato non sarebbe la scelta di chiudere tutti gli accessi tranne uno.

Ecco una buona proposta conclusiva: visto che condurre i funzionari incaricati ad un corso di «buon senso» parrebbe offensivo, chiamiamolo «Corso di aggiornamento di Pensiero Computazionale per la Pubblica Amministrazione».

@RIPRODUZIONE RISERVATA

Articolo 1 di 4