Ciao, e benvenuto nella prima puntata della ventiquattresima stagione di questo podcast. Nella scorsa stagione abbiamo raccontato Go, e visto come risponda in modo tutto suo alla sfida di servire tante richieste insieme. Oggi cominciamo a raccontare un altro protagonista del mondo dei servizi in rete, che a quella stessa sfida risponde in un modo completamente diverso e altrettanto affascinante. Si chiama Node.js, e la sua storia comincia con un'idea sorprendente, quasi una piccola rivoluzione: prendere un linguaggio nato per vivere dentro il browser e liberarlo, portandolo a costruire il software dei server. Oggi partiamo proprio da questa grande idea.
Partiamo da dove nasce il linguaggio protagonista di questa storia, JavaScript, perché è fondamentale. JavaScript è nato per una cosa sola: dare vita alle pagine web dentro il browser. Ricordi, dalla stagione sulla storia del frontend, come il linguaggio del browser abbia portato l'interattività nelle pagine? Ecco, JavaScript era quello: il linguaggio che gira dentro il browser, che fa muovere le pagine, che risponde ai clic. Era, per sua natura, prigioniero del browser, legato a quel mondo, incapace di uscirne. Nessuno pensava a JavaScript come a un linguaggio per costruire server, per fare il lavoro pesante dietro le quinte: quello era compito di altri linguaggi, più tradizionali. JavaScript era il linguaggio delle pagine, e basta.
Ed ecco l'idea rivoluzionaria da cui nasce Node, che voglio farti apprezzare nella sua audacia. Qualcuno si è chiesto: e se prendessimo JavaScript, il linguaggio del browser, e lo facessimo girare fuori dal browser, sui server, per costruire il software di dietro? Sembrava un'idea strana, quasi eretica: usare il linguaggetto delle pagine web per il lavoro serio del server? Eppure, da quell'idea è nato Node.js, un modo per far girare JavaScript ovunque, non solo dentro il browser ma anche sui server, come un vero linguaggio per costruire applicazioni complete. JavaScript, liberato dal browser, poteva finalmente vivere anche dall'altra parte, sul server. Fu un cambiamento che avrebbe avuto conseguenze enormi.
Voglio farti capire perché questa liberazione di JavaScript sia stata così importante, perché è una delle due grandi idee di questa stagione. Prima di Node, il mondo del software web era diviso in due, con due linguaggi diversi: uno per il davanti, il browser, cioè JavaScript, e un altro, o altri, per il dietro, il server. Uno sviluppatore doveva conoscere due mondi, due linguaggi, e passare continuamente dall'uno all'altro. Con Node, all'improvviso, lo stesso linguaggio, JavaScript, poteva essere usato da entrambe le parti: il davanti e il dietro, il browser e il server, tutto nella stessa lingua. Un solo linguaggio da un capo all'altro dell'applicazione. Questa unificazione, JavaScript ovunque, è stata una delle ragioni principali dell'enorme popolarità di Node, e la esploreremo a fondo.
Ma la liberazione di JavaScript non è l'unica grande idea di Node: ce n'è una seconda, ancora più profonda e caratteristica, che voglio anticiparti. Portare JavaScript sul server non bastava: serviva costruire attorno a esso una piattaforma capace di gestire il lavoro tipico di un server, e soprattutto di farlo bene, servendo tantissime richieste insieme. E qui Node ha adottato un modello di funzionamento particolare, radicale, diverso da quello di quasi tutti gli altri, che è il vero cuore tecnico di questa stagione. È un modo tutto suo di gestire il fare tante cose contemporaneamente, che vedremo nelle prossime puntate, e che si può riassumere così: non aspettare mai. Ma di questo parleremo diffusamente.
Voglio darti fin d'ora la lente con cui guardare Node, che ti guiderà in tutta la stagione. Node è, in fondo, due grandi idee unite insieme. La prima: JavaScript liberato dal browser, che permette di usare un solo linguaggio ovunque. La seconda: un modello particolare di funzionamento, basato sul non aspettare mai, che gli permette di servire tantissime richieste con grande efficienza. Tutto ciò che Node è, e tutti i suoi pregi e i suoi limiti, discendono da queste due idee. Tienile a mente, JavaScript ovunque e non aspettare mai, e capirai il senso di ogni cosa che diremo.
Voglio anche collegare fin da subito Node alla stagione precedente, perché il confronto sarà illuminante per tutta la stagione. Ricordi come Go affronta la sfida di servire tante richieste insieme? Con tante attività leggerissime che girano in parallelo, tanti piccoli lavoratori economici. Node, a quella stessa sfida, risponde in modo opposto: non tanti lavoratori, ma uno solo, che però non aspetta mai e riesce così a servire tutti. È un bellissimo esempio di come uno stesso problema possa avere soluzioni diverse e ugualmente valide. Terremo d'occhio questo confronto tra Node e Go per tutta la stagione, perché mostra qualcosa di profondo: raramente esiste una sola risposta giusta, solo compromessi diversi.
Per oggi ci fermiamo qui. Node.js nasce da un'idea sorprendente: prendere JavaScript, il linguaggio nato prigioniero del browser, e liberarlo, portandolo a girare sui server per costruire il software di dietro. Questo ha permesso di usare un solo linguaggio, JavaScript, sia sul davanti sia sul dietro, un capo all'altro dell'applicazione: la prima grande idea di Node. La seconda, ancora più caratteristica, è un modello di funzionamento particolare, basato sul non aspettare mai, che gli permette di servire tantissime richieste con efficienza, in modo opposto a quello di Go che abbiamo appena visto. Tienile a mente entrambe: JavaScript ovunque e non aspettare mai. Nella prossima puntata inquadriamo il problema che quel modello risolve: servire migliaia di richieste. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.