← Tutti gli episodi
Copertina di Che cos'è WebAssembly: la macchina sotto il web
Stagione 60 · Episodio 001

Che cos'è WebAssembly: la macchina sotto il web

16 settembre 2026 4:59
0:00 4:59

Ciao, e benvenuto nella prima puntata della sessantesima stagione di questo podcast. Sessanta stagioni: un piccolo traguardo, che festeggio nel modo che preferisco, cioè aprendo una scatola nera e guardandoci dentro insieme a te. E la scatola di oggi è speciale, perché è, in senso letterale, una macchina. Oggi parliamo di WebAssembly.

Partiamo da cos'è, perché il nome inganna. Nonostante il nome contenga la parola web, WebAssembly non è un linguaggio che scrivi, e non riguarda solo il browser. È un formato binario molto compatto, un insieme di istruzioni per una macchina astratta. Detta in modo diverso: è il formato in cui il tuo codice viene tradotto, un punto d'arrivo della compilazione. Tu scrivi in un linguaggio normale, e uno strumento traduce quel codice in questo formato universale, che poi può girare, veloce e al sicuro, in tantissimi posti diversi. Non lo scrivi a mano: è un bersaglio, non una penna. Questa distinzione è importante, e vale la pena fissarla subito. Quando pensi a una tecnologia, di solito pensi a qualcosa che usi direttamente, che digiti. WebAssembly no. È più simile a una destinazione comune: tanti linguaggi diversi possono puntare verso di essa, e una volta arrivati lì, tutti si comportano allo stesso modo. È un terreno di incontro, un formato condiviso in cui codici nati in mondi diversi diventano, finalmente, la stessa cosa.

Voglio raccontarti da dove nasce, perché la sua storia spiega tutto. WebAssembly è nato dentro il browser, per risolvere un problema preciso. Per vent'anni, nel browser, girava un linguaggio solo: JavaScript. Ottimo per moltissime cose, ma con un tetto di prestazioni per i lavori pesanti, come i giochi, il montaggio video, i programmi di disegno tecnico, le simulazioni. Serviva un modo per far girare, dentro la pagina, anche codice compilato e velocissimo, scritto in linguaggi come C o altri. WebAssembly è nato per essere quella corsia veloce, accanto a JavaScript. Poi, come vedremo, è cresciuto ed è uscito dal browser, diventando qualcosa di molto più grande. Ma questa origine spiega bene lo spirito con cui è stato pensato: non per sostituire ciò che c'era, ma per affiancarlo, aggiungendo una capacità che mancava. Un compagno, non un rivale. È una sfumatura che torneremo a toccare più volte, perché è facile fraintenderla.

Voglio darti il primo pilastro, perché è il cuore di tutto. Il primo pilastro è che WebAssembly è una macchina astratta universale. Non è legato a nessun processore reale: è un processore immaginario, che però browser e altri ambienti sanno imitare alla perfezione. E questa macchina immaginaria ha tre qualità rare messe insieme. È veloce, perché lavora a basso livello, vicino a come ragiona una macchina vera. È portabile, perché la macchina astratta è la stessa ovunque, quindi il tuo codice gira identico su sistemi diversi. Ed è sicura, perché gira dentro un recinto sorvegliato, di cui parleremo. Veloce, portabile e sicura, insieme: è una combinazione che raramente si trova tutta nello stesso posto.

Voglio darti il secondo pilastro, perché è la sua promessa più profonda. Il secondo pilastro è il disaccoppiamento tra il linguaggio che scrivi e il luogo dove il codice gira. Di solito questi due sono legati: un certo linguaggio è fatto per un certo ambiente. WebAssembly rompe questo legame. Tu scegli il linguaggio che preferisci, lo traduci in questo formato universale, e quel formato gira ovunque ci sia la macchina astratta ad accoglierlo: nel browser, su un server, ai margini della rete. Il linguaggio in cui scrivi e il posto in cui giri diventano due scelte indipendenti. È una vecchia promessa dell'informatica, che qui trova una delle sue realizzazioni più pulite.

Voglio anticiparti il filo onesto, perché sarà il nostro contrappunto. E come sempre in questo podcast, non ti venderò la magia senza mostrarti la macchina. WebAssembly è potente, ma non fa tutto, e non è il pulsante che rende magicamente veloce qualunque cosa. Ha un mondo interno molto ristretto, e ogni volta che deve dialogare col mondo esterno paga un pedaggio, un confine che va capito. Chi lo tratta come una bacchetta magica resta deluso. Chi capisce cos'è davvero, una macchina astratta con un confine preciso, lo usa per quello che sa fare meglio di chiunque. E capire quella macchina, oggi, è particolarmente bello, perché stavolta la macchina è reale, non una metafora.

Per oggi, e per l'inizio di questa sessantesima stagione, ci fermiamo qui. Abbiamo aperto la scatola di WebAssembly. Nonostante il nome, non è un linguaggio e non riguarda solo il browser: è un formato binario compatto, un insieme di istruzioni per una macchina astratta, il bersaglio in cui traduci il tuo codice. È nato nel browser come corsia veloce accanto a JavaScript, per i lavori pesanti, e poi è uscito diventando molto di più. Poggia su due pilastri: è una macchina astratta universale, veloce, portabile e sicura insieme; e disaccoppia il linguaggio che scrivi dal luogo dove giri. Con un filo onesto: non è magia, ha un confine che va capito. Nella prossima puntata: la macchina astratta, un processore che non esiste. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.