Da IPython a Project Jupyter
Project Jupyter nasce nel 2014 come spin-off di IPython, il terminale interattivo per Python creato da Fernando Pérez nel 2001. L’intuizione originale di IPython — un ambiente in cui il ricercatore può scrivere codice, eseguirlo e vederne immediatamente il risultato — si è evoluta nel tempo fino a includere un’interfaccia web con celle di codice, output e testo formattato. Con la separazione da IPython, il progetto assume il nome Jupyter, acronimo che richiama i tre linguaggi fondanti: Julia, Python e R.
La separazione non è solo un cambio di nome. Jupyter estrae l’architettura del notebook dal linguaggio specifico, trasformandola in una piattaforma agnostica rispetto al linguaggio di programmazione.
Anatomia di un notebook
Un notebook Jupyter è un documento in formato JSON con estensione .ipynb. Al suo interno, il contenuto è organizzato in celle di tre tipi:
- Celle di codice: contengono codice eseguibile. L’output — testo, tabelle, grafici, immagini — viene catturato e memorizzato direttamente sotto la cella
- Celle Markdown: testo formattato con sintassi Markdown, equazioni in LaTeX, link e immagini
- Celle raw: contenuto non elaborato, passato direttamente ai sistemi di conversione
L’esecuzione è gestita da un kernel, un processo separato che riceve il codice dalla cella, lo esegue e restituisce il risultato al browser. Ogni kernel implementa un linguaggio: il kernel IPython per Python, IRkernel per R, IJulia per Julia, e decine di altri mantenuti dalla comunità. Il protocollo di comunicazione tra notebook e kernel è documentato e aperto, il che consente a chiunque di sviluppare kernel per linguaggi aggiuntivi.
Riproducibilità e condivisione
Il formato .ipynb cattura codice, output e documentazione in un unico file. Questo significa che un notebook può essere rieseguito per verificare i risultati, condiviso con colleghi che vedranno esattamente gli stessi grafici e tabelle, e pubblicato come documento leggibile. Il servizio nbviewer permette di visualizzare notebook ospitati su repository pubblici direttamente nel browser, senza installare nulla.
Per la data science, questa caratteristica è trasformativa. L’analisi esplorativa — caricamento dati, pulizia, trasformazione, visualizzazione, modellazione — diventa un documento narrativo in cui ogni passaggio è visibile, verificabile e modificabile. Per la ricerca scientifica, il notebook avvicina la pratica al principio della riproducibilità: il codice che genera i risultati è incluso nel documento che li presenta.
Link: jupyter.org
