Videocorso WebAssembly CGFA
Dal formato testo WAT all'uso da JavaScript, fino a compilare Rust e C in codice velocissimo per browser e server
- Partenza: Base
- 14 ore con gli esercizi
- 10 lezioni in 3 livelli
- 2 lezioni gratis
A chi serve
Sviluppatori web e programmatori curiosi che vogliono capire e usare WebAssembly, anche senza averlo mai visto
Cosa serve per iniziare
- Conoscere le basi di JavaScript (variabili, funzioni, cicli)
- Un computer Windows, Mac o Linux con un browser moderno
- Per le ultime lezioni: nozioni elementari di Rust o di C aiutano, ma ripassiamo il necessario
Cosa installare
A cosa ti serve
- Applicazioni web ad alte prestazioni (editor di immagini, CAD, giochi, video)
- Portare nel browser librerie scritte in C, C++ o Rust
- Plugin sicuri e portabili per server e cloud (edge computing)
- Strumenti da riga di comando portabili con WASI
- Sicurezza: l'isolamento (sandbox) dei programmi non fidati
Programma del corso
10 lezioni in 3 livelli. Ogni lezione: video, spiegazione, codice da copiare o provare, esercizio con soluzione e quiz.
Base
Cos'è WebAssembly, il formato testo WAT, tipi, controllo del flusso e memoria
Intermedio
L'API JavaScript, importare funzioni e compilare dal C
Avanzato
Rust, WASI fuori dal browser e prestazioni
Progetto finale: Il convertitore di fatture in WebAssembly
Costruisci un modulo Wasm che calcola il totale con IVA di una lista di fatture e una pagina web che lo usa. Imparerai a scrivere WAT, a preparare i dati in memoria da JavaScript e a leggere il risultato.
I passi
- Crea il file totale.wat con una memoria esportata di una pagina.
- Scrivi la funzione somma_f64(inizio, n) che somma n numeri f64 letti dalla memoria (8 byte ciascuno).
- Scrivi la funzione con_iva(x) che restituisce x * 1.22.
- Compila con wat2wasm totale.wat -o totale.wasm.
- In JavaScript scrivi gli importi nella memoria con un Float64Array e chiama le due funzioni.
- Mostra il risultato in una pagina HTML con un campo e un pulsante.
- Extra: riscrivi la somma in Rust con wasm-bindgen e confronta le dimensioni dei due file.
Esame e attestato
Alla fine del corso fai l'esame: 15 domande, serve il 75% di risposte giuste. Superato l'esame ottieni l'attestato stampabile con nome, ore, punteggio e un codice di controllo che chiunque può verificare.
Glossario di WebAssembly
- WebAssembly (Wasm)
- Un formato di programma binario, veloce e portabile, eseguito da browser, Node.js e altri runtime.
- WAT
- Il formato testo leggibile di WebAssembly, con parentesi alla maniera dei linguaggi Lisp.
- Modulo
- Un file Wasm compilato, che contiene funzioni, memoria e dati.
- Istanza
- Un modulo caricato e pronto all'uso, con la sua memoria e le sue funzioni.
- Pila (stack)
- L'area dove Wasm mette i valori mentre calcola: ogni istruzione ne toglie e ne aggiunge.
- Memoria lineare
- Un grande vettore di byte, a pagine da 64 KiB, che il modulo e JavaScript possono leggere e scrivere.
- Import
- Una funzione o un oggetto fornito dall'esterno, di solito JavaScript, che il modulo può usare.
- Export
- Una funzione, memoria o valore del modulo visibile da JavaScript.
- Sandbox
- Un ambiente isolato in cui il codice non può toccare ciò che non gli è concesso.
- WASI
- L'interfaccia standard con cui un modulo Wasm chiede al sistema file, argomenti e altro, solo se concessi.
- wasm-bindgen
- Lo strumento che collega in automatico Rust e JavaScript, con stringhe e oggetti.
- Emscripten
- Il compilatore che porta programmi C e C++ in WebAssembly, con librerie e collegamento JavaScript.
Le prime 2 lezioni sono gratis
Per il corso completo, scuole e aziende: chiedi le condizioni.