Ciao, e benvenuto nella quarta puntata della sessantatreesima stagione. Nella puntata scorsa ho lasciato in sospeso una domanda: se su un solo cervello di calcolo tutto avviene a turno, perché mai la concorrenza dovrebbe farci guadagnare qualcosa? Oggi rispondo, e la risposta è più profonda di quanto sembri. Perché il vero motore della concorrenza, il più delle volte, non è la potenza di calcolo: è l'attesa. Oggi parliamo di lavoro di calcolo e lavoro di attesa.
Partiamo da una verità che stupisce, perché ribalta l'istinto. Quando pensiamo a un programma lento, immaginiamo un cervello di calcolo che suda, che macina numeri senza sosta. Ma la maggior parte dei programmi, per la maggior parte del tempo, non calcola affatto: aspetta. Aspetta che un file venga letto dal disco. Aspetta una risposta dalla rete. Aspetta i dati da una banca dati. Aspetta che l'utente clicchi qualcosa. Durante tutte queste attese, il cervello di calcolo è lì, fermo, che non fa nulla, come un motore acceso al semaforo. È un tempo enorme, sprecato, in cui la macchina potrebbe fare tanto altro.
Voglio darti la grande divisione, perché chiarisce tutto. Da qui nasce una distinzione fondamentale tra due tipi di lavoro. Ci sono i lavori fatti soprattutto di calcolo: comprimere un video, elaborare un'immagine, fare conti pesanti. Qui il cervello di calcolo è impegnato davvero, quasi sempre. E poi ci sono i lavori fatti soprattutto di attesa: un server che risponde a migliaia di utenti, un programma che parla di continuo con una banca dati o con la rete. Qui il cervello di calcolo, in proporzione, lavora pochissimo e aspetta tantissimo. Questi due mondi rispondono alla concorrenza in modo completamente diverso.
Voglio mostrarti dove la concorrenza fa miracoli, perché è il punto. Per i lavori fatti di attesa, la concorrenza è una rivoluzione, anche su un solo cervello di calcolo. Il motivo è semplice e bellissimo: mentre un'attività aspetta la sua risposta, il cervello, invece di restare fermo, dà il turno a un'altra attività, che a sua volta magari lancia la sua richiesta e si mette ad aspettare, e allora si passa a una terza. Le attese si sovrappongono, si incastrano, invece di sommarsi una dopo l'altra. Un solo cervello di calcolo può così seguire migliaia di conversazioni contemporanee, perché in ognuna, il più del tempo, sta solo aspettando.
Voglio darti l'immagine che rende chiara questa idea, perché la fissa. Pensa a un cuoco che deve preparare tre pietanze, ognuna delle quali richiede mezz'ora di cottura in forno. Un cuoco sprovveduto mette la prima in forno, si siede e la fissa per mezz'ora, poi la seconda, altra mezz'ora seduto, poi la terza: un'ora e mezza in tutto. Un cuoco sveglio, invece, infila la prima pietanza e, mentre cuoce, prepara e infila la seconda, e poi la terza. Le tre mezz'ore di cottura scorrono quasi tutte insieme, sovrapposte. Ha finito in poco più di mezz'ora, non un'ora e mezza. Non ha cucinato più in fretta: ha smesso di stare fermo ad aspettare. Questa è la concorrenza applicata all'attesa.
Voglio dirti cosa cambia per i lavori di calcolo, perché lì è diverso. Per i lavori fatti soprattutto di calcolo, invece, questo trucco non basta. Se il cervello di calcolo è sempre impegnato a macinare, non ci sono attese da sovrapporre: dare il turno a un'altra attività non aiuta, perché anche quella vuole calcolare, e il cervello è uno solo. Qui, e solo qui, serve il parallelismo vero: più cervelli di calcolo che macinano davvero insieme. Ecco la regola pratica: se il tuo problema è fatto di attese, ti basta una buona concorrenza, anche su poche risorse; se è fatto di calcolo puro, ti serve il parallelismo, cioè più cervelli.
Voglio darti la lezione generale, perché è una guida preziosa. La lezione è che, prima di ottimizzare qualunque cosa, devi chiederti: questo lavoro è fatto più di calcolo o più di attesa? È la domanda che decide la strategia. Tantissimi sistemi, soprattutto quelli che vivono di rete e di banche dati, sono fatti quasi tutti di attesa, e per loro la concorrenza ben strutturata vale enormemente più che comprare macchine potentissime. Sbagliare questa diagnosi porta a spendere nel posto sbagliato: più cervelli di calcolo per un problema che, in realtà, passava la vita ad aspettare.
Per oggi ci fermiamo qui. Abbiamo scoperto che il vero motore della concorrenza è spesso l'attesa. La maggior parte dei programmi, il più del tempo, non calcola: aspetta il disco, la rete, la banca dati, l'utente. Distinguiamo due mondi: i lavori fatti di calcolo, dove il cervello suda, e i lavori fatti di attesa, dove aspetta e basta. Per i lavori di attesa, la concorrenza fa miracoli anche su un cervello solo, sovrapponendo le attese, come il cuoco che infila tre pietanze in forno insieme. Per i lavori di calcolo puro, invece, serve il parallelismo vero, più cervelli. La lezione: chiediti sempre se un lavoro è fatto di calcolo o di attesa, perché la risposta decide tutto. Nella prossima puntata: quando due si pestano i piedi, lo stato condiviso e i conflitti. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.