Ciao, e benvenuto nella quinta puntata della quarantasettesima stagione. Nella seconda puntata abbiamo visto il contratto che genera il codice. Oggi ne raccogliamo il frutto più prezioso nella pratica, uno che tocca da vicino chi lavora con tanti linguaggi diversi. Perché in un sistema vero i servizi sono scritti in linguaggi diversi, e gRPC ha una risposta bellissima al problema di farli parlare senza malintesi. Oggi capiamo il poliglottismo: tutti d'accordo, ognuno nella sua lingua.
Partiamo dal problema, perché è concretissimo. Nei sistemi reali, pezzi diversi sono scritti in linguaggi diversi. Una squadra lavora in un linguaggio, un'altra in un altro, una terza in un altro ancora. Ognuna ha le sue ragioni, le sue competenze, i suoi strumenti. E qui nasce la domanda: come fanno tutti questi servizi, scritti in lingue diverse, a parlarsi senza un'infinità di malintesi? È uno dei problemi classici dei sistemi fatti di molti pezzi: ogni confine tra due linguaggi è un punto dove le cose si possono perdere nella traduzione.
Voglio darti la risposta di gRPC, perché è elegante. La risposta è quella che abbiamo anticipato: dall'unico contratto, si genera un client e un server tipizzati per ciascun linguaggio. Così ogni servizio parla lo stesso accordo, ma nella propria lingua, con i propri tipi. Il servizio scritto in un linguaggio riceve i tipi di quel linguaggio; il client scritto in un altro riceve i tipi dell'altro. E si capiscono alla perfezione, perché sotto sotto sono tutti lo stesso contratto. Il contratto è la lingua franca; la generazione del codice è la traduzione fedele, fatta a macchina, in ogni direzione.
Voglio farti sentire quanto sia grande per un'azienda, perché cambia la vita. Per una realtà con molte squadre e molti linguaggi, questo è enorme. Senza, ogni volta che due servizi in lingue diverse devono parlarsi, qualcuno scrive a mano il codice per far combaciare le due parti, con tutti gli errori e i disallineamenti che ne seguono. Con gRPC, quel lavoro sparisce: lo fa la macchina, dalla verità condivisa. Programmi scritti da squadre diverse, in linguaggi diversi, smettono di essere una fonte continua di dolore da integrazione e diventano qualcosa che, in gran parte, semplicemente funziona.
Voglio collegarlo a una stagione recente, perché il filo è forte. E c'è una cosa in più, che aggancia la stagione sui tipi. Il codice generato è tipizzato: e come vedemmo, i tipi sono contratti controllati da una macchina. Quindi ricevi, in ogni linguaggio, l'aiuto dell'editor e il controllo prima di eseguire: se chiami la funzione remota nel modo sbagliato, se le passi la cosa sbagliata, i tuoi stessi strumenti ti fermano, alla scrivania, prima che il codice giri. La sicurezza dei tipi, che in quella stagione era una scelta, qui arriva gratis dal contratto, in tutte le lingue insieme. Il patto tra servizi diventa controllabile da ciascuno, a casa propria.
Voglio darti l'immagine che rende chiara questa idea, perché è precisa. Pensa a un'organizzazione internazionale dove ognuno parla la propria lingua madre, ma ogni documento deriva da un unico testo originale, e ogni riunione ha una traduzione simultanea impeccabile. Un delegato di un paese e uno di un altro si capiscono alla perfezione, non perché condividano una lingua, ma perché condividono una fonte. Nessuno deve imparare la lingua di tutti gli altri: basta che tutti derivino dallo stesso testo, tradotto fedelmente. La comprensione non nasce da una lingua comune, ma da una verità comune.
Voglio trarre la lezione generale, perché va oltre gRPC. La lezione è questa: il modo di far cooperare molte parti diverse non è costringerle tutte a una sola lingua, ma dare loro una sola fonte d'accordo, e tradurre fedelmente da quella. La verità condivisa batte la lingua condivisa. E generare da quella fonte il codice ripetitivo toglie di mezzo due cose insieme: la fatica di scriverlo a mano, e il rischio che le versioni divergano. Quando molti devono andare d'accordo, non serve che siano uguali: serve che discendano tutti dalla stessa origine, e che la traduzione sia automatica e fedele.
Per oggi ci fermiamo qui. Abbiamo raccolto il frutto più prezioso del contratto: il poliglottismo. In un sistema vero i servizi sono scritti in linguaggi diversi, e farli parlare è un problema classico. La risposta di gRPC: dall'unico contratto si genera client e server tipizzati per ogni linguaggio, così ognuno parla lo stesso accordo nella propria lingua, e si capiscono perché sotto sono lo stesso contratto. Per un'azienda con molte squadre è enorme: il codice per far combaciare le parti lo scrive la macchina, non più a mano. E, come nella stagione sui tipi, il codice generato è tipizzato: aiuto dell'editor e controllo prima di eseguire, in ogni lingua. Come un'organizzazione dove tutti derivano dallo stesso testo, con traduzione perfetta. La lezione: la verità condivisa batte la lingua condivisa. Nella prossima puntata vediamo come si evolve senza rompere. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.