Un pep che esclude pip

Con tutto il parlare che ho fatto in questo blog di Python non ho mai accennato all’esistenza dei PEP, ritenendo che i dilettanti cui rivolgo i miei scritti potessero fare a meno di queste complicazioni.
Ho invece incoraggiato i miei lettori che avessero bisogno di arricchire l’installazione di Python di base con pacchetti aggiuntivi ad utilizzare l’installatore pip, che, dalla versione 3.4 di Python faceva parte della dotazione di default.
Oggi le distro Linux con preinstallato Python3 che adottano la PEP identificata dal numero 668 non preinstallano più pip e non consentono più di usare questo installatore e, purtroppo, ormai molte distro, tra cui le popolari Ubuntu e derivate, compreso Mint e MX, fanno questo.
PEP sta per Python Enhancement Proposal ed è un documento di progettazione destinato alla comunità di sviluppatori Python riguardante nuove funzionalità del linguaggio, i suoi processi o il suo ambiente.
La PEP 668 riguarda i conflitti che possono insorgere tra i gestori di pacchetti del sistema operativo (nelle derivate da Debian, come Ubuntu, apt) e gli strumenti di gestione dei pacchetti specifici di Python (come pip) e, per evitare l’insorgere di questi conflitti, dichiara EXTERNALLY-MANAGED le installazioni che possono essere gestite con mezzi esterni a Python, come il gestore di pacchetti del sistema operativo, consentendone l’installazione solo con il gestore dei pacchetti e rendendo inutilizzabile l’installatore pip (salvo complicazioni come la creazione di un ambiente virtuale).
Fortunatamente le distro che hanno adottato la PEP 668 hanno nel proprio repository quasi tutti i pacchetti di cui ho parlato in questo blog (da numpy a scipy, da sympy a pandas, da matplotlib a sklearn).
Vorrà dire che, per installare, per esempio, scipy non possiamo più fare
pip install scipy
ma, se lavoriamo con una distro che ha adottato la PEP 668, come Ubuntu e le sue derivate, dobbiamo fare
apt install python3-scipy.
Purtroppo vi sono però pacchetti che si trovano nel repository di Python ma non in quello della distro e, se vogliamo evitare, da dilettanti, le complicazioni di Conda e Anaconda, abbiamo proprio bisogno di usare pip.
A questo punto, se non abbiamo disponbile pip lo installiamo con il comando a terminale
apt install python3-pip
ed eludiamo la PEP 668 con il comando
sudo rm -rf /usr/lib/python3.xx/EXTERNALLY-MANAGED
Da qui in poi, sapendo che per i pacchetti che troviamo nel repository della distro è meglio che usiamo l’installatore della distro, per gli altri possiamo usare pip.

Code::Blocks, ingiustamente dimenticato

Ho un nipote che ha recentemente avviato un corso universitario di informatica durante il quale verrà utilizzato il linguaggio C++.
L’insegnante ha consigliato gli allievi di dotarsi di un sistema operativo Linux e, per quanto riguarda il linguaggio C++, dell’editor Visual Studio Code.
Mentre trovo lodevole il primo consiglio non riesco a comprendere la logica del secondo.
Non mi pare infatti giusto mischiare il più bel sistema operativo del mondo con un software Microsoft, che sarebbe ormai meglio chiamare Macrosoft, visto che tutto quello che esce da questa azienda è inutilmente gigantesco e richiede sempre più risorse (da qui, ovviamente, la preinstallazione di Windows su tutti i personal computer: dopo due/tre anni di sistema operativo Windows o sei un mago o cambi il computer).
Anche perché, nel caso specifico, c’è un’ottima alternativa che si chiama Code::Blocks.
Rispetto a Visual Studio Code, che, già pesante per sé stesso, per darci la code completion deve essere ulteriormente arricchito dell’estensione C/C++, occupa meno di un decimo dello spazio su disco, richiede metà RAM, fa la code completion senza bisogno di estensioni e, con qualche estensione, può fare molte cose di più di ciò che fa Visual Studio Code.
A questo gioiello dedico l’allegato manualetto, liberamente scaricabile, stampabile e distribuibile.

code_blocks

Grafica con Red

Lo scorso mese di ottobre ho proposto un manualetto che illustra le basi del nuovo linguaggio di programmazione Red, limitandomi a come si possano produrre con questo linguaggio programmi console, cioè eseguibili avendo come interfaccia il terminale.
Ma con Red possiamo fare molto anche, e probabilmente molto di più, in campo grafico, sia per arricchire i nostri programmi di interfaccia utente grafica (GUI) sia per disegnare.
A questo dedico l’allegato manualetto, liberamente scaricabile, stampabile e distribuibile.

grafica_red

Red: un linguaggio rivoluzionario

Lo scorso mese di settembre ho parlato di uno dei più vecchi linguaggi di programmazione, il linguaggio LISP.
Oggi parlo dell’ultimo nato, anzi di un linguaggio che, nonostante il suo creatore ci lavori da oltre un decennio, è tuttora in gestazione e non ha ancora avuto un rilascio definitivo stabile: il linguaggio Red.
Dal momento che pare siamo alla vigilia di questo rilascio e che quanto è già disponibile ci consente di capire che cosa ci aspetta e di divertirci a fare qualche programmino, dedico l’allegato manualetto al funzionamento di base di questo rivoluzionario linguaggio.
Come sempre il manualetto è liberamente scaricabile, stampabile e distribuibile.

red

Ancora Lisp

In questo blog ho parlato di Lisp in un paio di occasioni.
La prima, nel maggio 2015, con il post dal titolo “Lisp sempreverde”, nel quale ho presentato una versione abbastanza recente del Lisp, Newlisp, in maniera molto sommaria.
A questa superficialità ho cercato di rimediare nell’ottobre 2019 con il post dal titolo “Newlisp”, con allegato un manualetto in cui si spiega meglio questa bellissima e facile versione del Lisp, che rende meno faticoso avvalersi di uno dei più vecchi e originali linguaggi di programmazione.
Visto che si tratta del linguaggio che, concepito per l’intelligenza artificiale, ancora non ha rivali degni di nota in questo campo sempre più in fermento, sento il dovere di proporre nel manualetto allegato una descrizione del funzionamento di una delle più diffuse e utilizzate versioni del Lisp, il Common Lisp, che è il più legittimato erede del Lisp originario.
Come sempre il manualetto è liberamente scaricabile, stampabile e distribuibile.

common_lisp

Deep learning con Python

Quando un computer trae dall’analisi dei dati che gli diamo in pasto la capacità di classificarli, interpretarli o, addirittura, di prevedere altri dati, alle relative procedure si usa dare il nome di machine learning.
Nel manualetto “python_data_science” allegato al mio articolo “Python per la data science” pubblicato su questo blog nel dicembre 2021, ho presentato, ad uso di dilettanti principianti, alcuni moduli del linguaggio di programmazione Python concepiti per fare queste cose.
Le esemplificazioni che ho portato in quel manualetto riguardano processi di apprendimento abbastanza semplici, per lo più attinenti dati numerici collocati in piccoli dataset o brevi testi, in modo che le relative sperimentazioni siano eseguibili su computer di potenza media.
Lo scorso mese di maggio, in un altro manualetto intitolato “google_colab”, allegato al mio articolo “Se il nostro computer non ce la fa”, ho presentato la possibilità di trasferire queste sperimentazioni su un servizio di cloud computing di Google, che si chiama Google Colaboratory.
Il vantaggio è innanzi tutto quello di poter lavorare su masse di dati più voluminose, ma questo è il vantaggio più banale.
Il vero vantaggio è quello di poter lavorare su dati non solo numerici o di testo ma anche di suono o grafici e con metodologie e potenze di calcolo adatte a questo tipo di dati.
Metodologie che sostituiscono all’algebra lineare l’algebra tensoriale e attraverso le quali si compiono analisi con procedimenti che imitano il funzionamento del cervello umano e che richiedono al computer capacità elaborativa non più da computer di bassa o media potenza.
A tutto ciò si dà il nome di deep learning.
Pur avendo a che fare con una materia che esula dalle capacità e forse anche dall’interesse dei dilettanti cui mi rivolgo, faccio un tentativo di divulgazione con l’allegato manualetto, anche finalizzato a far conoscere fin dove arriva il software libero.

python_deep_learning

Se il nostro computer non ce la fa

Nel manualetto “python_data_science” allegato al mio articolo “Python per la data science” del dicembre 2021 ho presentato i principali strumenti che il linguaggio di programmazione Python mette a disposizione per l’analisi di grandi masse di dati, quelli che a qualcuno piace chiamare big data.
In quel manualetto le esemplificazioni sull’uso di alcuni strumenti di machine learning sono riferite a piccoli dataset e funzionano benissimo anche su un computer di bassa potenza.
Se il data set si allarga e i dati da alcune unità diventano decine, centinaia o addirittura migliaia può accadere che i nostri computer casalinghi comincino ad arrancare o non ce la facciano proprio più e, come si suol dire, si impiantino.
Per non parlare di cosa succederebbe se ci avventurassimo nel deep learning.
Un professionista che vive di queste cose può non avere problemi ad attrezzarsi con macchine più potenti, ma un dilettante che voglia semplicemente fare qualche prova o uno studente che debba svolgere una esercitazione si possono trovare spiazzati.
Fortunatamente, se costoro lavorano con il linguaggio Python, possono trovare una soluzione al loro problema ricorrendo ad uno strumento che Google allinea tra i tanti che costituiscono la sua piattaforma di cloud computing: Google Colaboratory, altrimenti noto come Google Colab.
A Google Colab dedico l’allegato manualetto, come sempre liberamente scaricabile, stampabile e distribuibile.

google_colab

Grafica con Kotlin

Nel luglio 2019, con il mio articolo “Kotlin: Java facilitato”, ho parlato del linguaggio di programmazione Kotlin allegando un manualetto per guidare principianti e dilettanti ad utilizzarlo per divertirsi a creare qualche programmino.
Quel manualetto contiene quanto basta per programmi a riga di comando senza interfaccia grafica ma vi si accenna al fatto che, dal momento che con il linguaggio Kotlin abbiamo accesso a tutte le librerie Java, da qui possiamo attingere per arricchire i nostri programmi Kotlin con la grafica.
I numerosi strumenti per la grafica che ci offre Java non si può dire siano di facile applicazione, soprattutto se utilizzati con il linguaggio Java.
Tuttavia il loro utilizzo con il linguaggio Kotlin, almeno se ci limitiamo all’obiettivo di dotare i nostri programmini di una semplice interfaccia grafica, possiamo dire sia alla portata di dilettante.
E’ ciò che mi propongo di dimostrare con l’allegato manualetto, liberamente scaricabile, stampabile e distribuibile.

gui_kotlin

Lua: linguaggio utile ma poco conosciuto

Forse perché utilizzato da professionisti in progetti insieme o all’ombra di altri linguaggi senza che ciò sia evidenziato, pochi dilettanti penso conoscano l’esistenza di Lua.
Si tratta di un linguaggio di scripting che, insieme a buone potenzialità, magari non all’altezza di quelle di altri linguaggi più ricchi di moduli che le espandono, come Python, ha il pregio di essere molto leggero e veloce e, pertanto, adatto all’embedding in progetti dove porta molta utilità senza pesare troppo.
Un campo di applicazione in cui primeggia come coprotagonista di programmazione, è quello dei videogiochi.
E’ abbastanza facile da imparare e può essere utilizzato anche da solo per scrivere programmi interpretati, anche di un certo impegno, per i sistemi Linux, Mac e Windows.
Trattandosi di software libero in piena regola non posso non presentarlo ai dilettanti che seguono il mio blog.
Nell’allegato manualetto lo presento in quanto tale e in due interessanti casi di embedding.
Il documento, in formato PDF, è liberamente scaricabile, stampabile e distribuibile.

lua

Un editor speciale

Può capitare che ricercatori, scienziati o semplicemente studenti si debbano scambiare documenti contenenti le loro esperienze su lavori svolti o in corso di svolgimento, con l’esigenza di inserirvi grafici, formule matematiche, spezzoni di codice e quant’altro.
Tutte cose che si possono fare in molti modi e che, avendo a disposizione un personal computer normalmente dotato di strumenti per la ricerca scientifica e la scienza dei dati, possiamo affrontare avendo probabilmente solo l’imbarazzo della scelta.
Il mondo del software libero ci leva anche dall’imbarazzo della scelta e ci offre uno strumento con il quale possiamo radunare tutte le nostre evidenze in un solo documento, comprendendovi il codice utilizzato per raggiungere i risultati esposti, in modo che esso sia sperimentabile e modificabile da altri senza bisogno di ricopiature, fino a poter editare in forme professionalmente ineccepibili i risultati del lavoro.
Questo strumento si chiama Jupyter.
Visto che la documentazione in lingua italiana su di esso scarseggia, ho cercato di dimostrare quanto sia utile e facile da usare Jupyter nell’allegato manualetto, come al solito liberamente scaricabile, stampabile e distribuibile.

jupyter