Jupyter notebook l’ho conosciuto un paio di mesi fa, Manjaro è un incontro recentissimo. Dell’esistenza di Python, invece, sapevo già quando ero ancora in attività lavorativa, ma avevo scelto Ruby.
In una settimana, però, li ho sposati tutti e tre (per adesso), perché non si smette mai di imparare.
 Come è avvenuto? Tutto è cominciato con una sessione Zoom.


L’incontro con Jupyter notebook

A fine marzo, un’amicizia di vecchia data, risalente ai tempi del blog di Libero, mi ha invitato ad ascoltare un incontro via Zoom sull’analisi di testi con Python, tenuto dal Python Biella Group.
A suo tempo, tra i due linguaggi Python e Ruby, avevo optato per quest’ultimo perché, per l’angolino di algoritmi che mi interessa, trovo Ruby molto espressivo, un aiuto quindi a compensare la mia cronica carenza nel documentare per bene il codice che scrivo. Non per amore del perfezionismo, ma è che dopo un mese faccio fatica io stesso a capire il mio codice.
In quell’incontro ho rivisto la mia opinione su Python ma, soprattutto, ho fatto conoscenza con Jupyter notebook.

Cos’è un Jupyter notebook? È uno strumento efficacissimo per sviluppare codice (a cominciare da Python, ma non solo) e, allo stesso tempo, documentare in modo potenzialmente efficacissimo il proprio lavoro.

In sintesi, si tratta di un’interfaccia web che consente di tenere insieme blocchi di testo (Markdown e LaTex) e blocchi di codice. Ogni blocco può essere eseguito separatamente, oppure si può lanciare l’esecuzione dell’intero notebook.

Le due schermate che seguono sicuramente chiariscono meglio di mille parole.
La prima mostra il notebook “articolo_ink”, che sto utilizzando per questo articolo. Ho cominciato ad inserire due blocchi di testo, seguiti da due blocchi di codice.

Manjaro: prima schermata del Notebook Python
La seconda schermata riporta lo stesso notebook, dopo aver eseguito i blocchi. Il testo è renderizzato, i blocchi di codice sono seguiti dal proprio output.

Manjaro: run delle celle del notebook

La potenza di Jupyter notebook è evidente. Si ribalta il classico concetto di “inserire commenti significativi” all’interno del codice. Qui si raggiunge, con notevole semplicità, una sintesi efficacissima tra l’idea, le basi concettuali su cui la si realizza e la realizzazione stessa.

Approfondimenti sul sito Jupyter.org.

Come utilizzare Jupyter notebook

È possibile creare e gestire dei notebook in modo free, sia online che installando il servizio sul proprio pc.
Jupyter notebook ha un proprio formato file (.ipynb), ma esporta anche nel formato codice Python, Pdf, LaTeX, Markdown. Naturalmente un file in formato .ipynb può essere tranquillamente spostato tra l’online e l’eventuale server locale.

Ho cominciato proprio online, con il servizio offerto da Jupyter.org, poi ho provato anche quello offerto dal sito Collaborative Calculation and Data Science (CoCalc). Ce ne sono altri, basta cercare in rete.

La scelta dell’online è sicuramente la più semplice, su Jupyter si ha anche un’ampia scelta del linguaggio da utilizzare (c’è anche Ruby), mentre su Cocalc c’è il vantaggio di potersi registrare e quindi conservare on line anche i propri progetti.

Se si preferisce invece essere autonomi, allora occorre installare sul proprio pc il servizio Jupyter Notebook, cosa abbastanza semplice, sia su PC Windows che su Mac o su Linux.
Avendo di fatto dismesso il PC Windows, tra Mac e Linux ho optato per quest’ultimo, riesumando un vecchio Acer Aspire One, comprato una decina di anni fa a una svendita natalizia di MediaWorld.

Chi si ricorda dei netbook?

Prima che esplodesse l’utilizzo dei tablet, c’è stata una generazione di PC piccoletti, con risorse limitate, ideali da portarsi in giro nello zaino da lavoro: erano i netbook, cancellati poi da una parte dall’avvento dei tablet, dall’altra dall’alleggerimento del peso dei pc portatili.

Il mio Acer Aspire One era in partenza un pc con Windows 7, un processore N450 a 1,66 GHz, 1 GByte di ram, 160 GB di disco. Ok, non era una potenza di calcolo, ma era (ed è) molto leggero e pratico.
Sull’Aspirone (come l’avevo ribattezzato) ho condotto i primi esperimenti di dual-boot con Ubuntu, e l’ho di fatto utilizzato anche per lavoro, fino a che Microsoft non ha integrato in Windows 10 il Bash di Ubuntu. Per quanto fosse una soluzione un po’ macchinosa, la novità introdotta da Microsoft mi ha di fatto semplificato il processo di riduzione di quantità corpose di dati e la successiva analisi su Excel (o Libre Office Calc).

Dopo un paio di anni di utilizzo, avevo rinunciato al dual boot, trasformando l’Aspirone in un oggetto Linux e basta, e avevo portato a 2 GBytes la memoria ram, sostituendo l’unico banco di ram gestito dall’hardware.
Risultato: un oggetto che con Ubuntu faceva la sua figura, anche se scaldava un po’.

Poi, di release in release, ho avuto l’impressione che Ubuntu si appesantisse, finché, un paio di anni fa, sono passato a Xubuntu.

E ora, Manjaro!

Con l’arrivo del Mac è calato anche il mio utilizzo casalingo dell’Aspirone, a favore dell’uso del terminale Unix del Mac. L’ho riesumato adesso, con l’idea di farmi una macchinetta dedicata al Python con Jupyter notebook.

Volendo aggiornare il sistema operativo (era sulla 20.04 Xubuntu, la versione attuale LTS – Long-term support, quella che viene assistita per 5 anni), ho dato un’occhiata in giro, trovando commenti molto positivi per Manjaro, una distribuzione di Arch Linux.
In sintesi, Manjaro promette di essere molto efficace su piattaforme datata e con scarse risorse (il mio Aspirone!), e anche ragionevolmente semplice da gestire e con una buona disponibilità di applicazioni pronte per l’installazione.

In confronto, probabilmente Ubuntu ha una maggiore disponibilità di applicazioni pronte e installabili con semplicità. Inoltre, in caso di problemi, il supporto reperibile in rete per Ubuntu è decisamente maggiore di quello disponibile per Manjaro.
Ma l’argomento efficacia su hardware datati per me era vincente, e quindi mi sono imbarcato nell’avventura.

L’installazione

L’installazione di Manjaro è sostanzialmente identica a quella di Ubuntu: download del file ISO, preparazione della chiavetta USB per l’installazione (fatta con Rufus sul pc Windows), poi il boot dell’Aspirone dalla chiavetta USB, il test per verificare la compatibilità con Wifi, tastiera, mouse e, infine, l’installazione.

Confermo, Manjaro è una scheggia.
Certo, come sto facendo da un po’, non ho installato Chrome ma utilizzo il browser già installato (Firefox). Per lo stesso motivo sul Mac sono passato da Chrome a Safari. Libre Office è anch’esso già installato, va solo scaricato il pacchetto per la lingua italiana.
Però il trabiccolo regge egregiamente il serverino Jupiter notebook, acceduto via local host da una finestra di Firefox. Altre 3 -4 finestre di Firefox sono aperte per motivi vari. Poi c’è la finestra del terminale per lanciare Jupyter, un Libre Office Calc per fare due calcoli. Il tutto con una buona reattività.


Adesso però tocca imparare il Python

In rete si trovano molte risorse per imparare il Python. Manco a dirlo, ce ne sono di ottime disponibili in formato Jupyter notebook.
Segnalo come esempio il tutorial che sto seguendo io: Python for number theory. Si tratta di 8 notebook che partono dagli elementi di base.

Poi, però, bisogna anche trovare una palestra in cui trovare sfide su cui misurarsi. Per chi avesse la passione per i numeri, qualcosa di non insormontabilmente difficile si trova su Project Euler. Ad esempio, ecco il notebook (in versione pdf) del problema n.ro 40.

L’immagine di apertura è di Gerd Altmann, da Pixabay.

Scritto da:

Pasquale

Mi chiamo Pasquale Petrosino, radici campane, da alcuni anni sulle rive del lago di Lecco, dopo aver lungamente vissuto a Ivrea.
Ho attraversato 40 anni di tecnologia informatica, da quando progettavo hardware maneggiando i primi microprocessori, la memoria si misurava in kByte, e Ethernet era una novità fresca fresca, fino alla comparsa ed esplosione di Internet.
Tre passioni: la Tecnologia, la Matematica per diletto e le mie tre donne: la piccola Luna, Orsella e Valentina.
Potete contattarmi scrivendo a: p.petrosino@inchiostrovirtuale.it