Ciao, e benvenuto nella sesta puntata della ventesima stagione. Nella scorsa puntata abbiamo messo ordine nel flusso dei programmi con la struttura. Oggi facciamo un passo diverso: non più su per la scala dell'astrazione, ma di lato, verso un nuovo modo di organizzare il pensiero quando programmiamo. Perché a un certo punto della storia emerse un'idea che avrebbe dominato la programmazione per decenni, un modo di strutturare i programmi ispirato a come vediamo il mondo. È l'idea di pensare in oggetti. Oggi capiamo cos'è, e perché ebbe un successo tanto grande.
Partiamo dal modo di pensare che c'era prima, per capire cosa cambiò. Fino a quel momento, si tendeva a tenere separate due cose: da un lato i dati, le informazioni su cui il programma lavora, e dall'altro le operazioni, le azioni che manipolano quei dati. I dati stavano da una parte, come materia grezza, e le operazioni dall'altra, come procedure che agivano su quella materia. Era una separazione netta tra le cose e le azioni sulle cose. Funzionava, ma per i programmi grandi e complessi cominciava a mostrare dei limiti: dati e operazioni sparsi, con collegamenti difficili da seguire, un intreccio che cresceva ingestibile.
L'idea rivoluzionaria degli oggetti fu ribaltare questa separazione: e se, invece di tenere separati i dati e le operazioni, li unissimo insieme, raggruppandoli in un'unica entità? Un oggetto è esattamente questo: un pacchetto che contiene insieme sia dei dati, sia le operazioni che lavorano su quei dati, uniti in una cosa sola. Non più i dati di qua e le azioni di là, ma entità autonome, gli oggetti, ciascuna delle quali possiede i propri dati e sa compiere le proprie azioni su di essi. È un modo diverso di suddividere il programma: non per dati e operazioni separate, ma per oggetti che uniscono le due cose.
Facciamo un esempio concreto, perché rende l'idea immediata. Immagina di modellare un conto bancario. Nel modo a oggetti, crei un oggetto conto bancario, che contiene dentro di sé i suoi dati, per esempio il saldo, e insieme sa compiere le sue operazioni, per esempio versare o prelevare. Il conto è un'entità completa: possiede il suo saldo e sa come modificarlo. Quando vuoi versare del denaro, non manipoli il saldo dall'esterno: chiedi all'oggetto conto di versare, e lui, che possiede il suo saldo e sa come gestirlo, se ne occupa. L'oggetto è un piccolo mondo autonomo che unisce ciò che sa e ciò che sa fare.
Ecco il punto cruciale che rese questo modo così potente, e voglio che lo afferri, perché riprende un principio ricorrente: l'oggetto nasconde i suoi dettagli interni dietro una superficie pulita. Chi usa l'oggetto conto non ha bisogno di sapere come, dentro, il saldo è gestito: gli basta chiedere versa o preleva, e fidarsi che l'oggetto faccia la cosa giusta. I dettagli interni sono nascosti, protetti, accessibili solo attraverso poche operazioni ben definite. Ricordi il principio dell'isolamento, del nascondere la complessità dietro superfici semplici, che abbiamo incontrato tante volte? Eccolo negli oggetti: ognuno è una scatola chiusa che mostra solo ciò che serve, tenendo il resto nascosto e al sicuro dentro di sé.
Voglio farti apprezzare perché questo modo di pensare ebbe un successo così travolgente, dominando per decenni. La ragione principale è che rispecchia il modo in cui gli umani vedono naturalmente il mondo: come fatto di cose, di entità, ciascuna con le sue caratteristiche e i suoi comportamenti. Un'automobile, una persona, un conto: pensiamo al mondo per oggetti che hanno proprietà e fanno cose. Programmare a oggetti permetteva quindi di modellare un problema in modo naturale, creando nel programma degli oggetti che corrispondevano alle cose del problema reale, con i loro dati e i loro comportamenti. Questa corrispondenza tra gli oggetti del programma e le cose del mondo rendeva più facile pensare, progettare e organizzare programmi grandi e complessi.
Voglio darti anche l'immagine complessiva di come cambia la forma di un programma, perché è bella. In questo modo di pensare, un programma non è più una lunga sequenza di operazioni su dati sparsi, ma diventa una società di oggetti che collaborano, scambiandosi richieste. Un oggetto chiede a un altro di fare qualcosa, che a sua volta chiede a un terzo, in una rete di entità autonome che cooperano, ciascuna occupandosi della sua parte e nascondendo agli altri i propri dettagli. È come modellare il programma sul mondo stesso: tante cose distinte che interagiscono. Questa visione, il programma come insieme di oggetti che collaborano, fu una delle idee organizzative più influenti nella storia della programmazione.
Per oggi ci fermiamo qui. A un certo punto emerse un nuovo modo di organizzare il pensiero: pensare in oggetti. Invece di tenere separati i dati e le operazioni, li si unisce in entità autonome, gli oggetti, ciascuno che possiede i propri dati e sa compiere le proprie azioni, nascondendo i dettagli interni dietro una superficie pulita, come una scatola chiusa. Ebbe un successo enorme perché rispecchia il modo umano di vedere il mondo, fatto di cose con proprietà e comportamenti, permettendo di modellare i problemi in modo naturale. Un programma diventa così una società di oggetti che collaborano. Nella prossima puntata vediamo un modo di pensare ancora diverso: le funzioni e la matematica. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.