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.
Categoria: programmazione
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.
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.
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.
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.
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.
Grafica con Julia
Il linguaggio Julia è particolarmente versato per il calcolo e soprattutto a questo serve la dotazione di base che abbiamo a disposizione alla prima installazione del suo compilatore/interprete.
In allegato al mio articolo “Un nuovo linguaggio per la data science”, pubblicato su questo blog nel febbraio 2021, si trova il manualetto “julia” in formato PDF che ci mette in grado di muovere i primi passi e non solo: ne ripropongo, qui allegata, una versione riveduta ed arricchita.
Come è avvenuto per il linguaggio Python, di cui Julia sta ormai diventando valida alternativa, attorno al nucleo centrale del linguaggio sono stati creati pacchetti aggiuntivi per svolgere compiti sempre più onerosi e complicati.
Né Julia disdegna di utilizzare pacchetti del mondo Python ed è attrezzata per farlo alla grande.
Nel citato manualetto ho inserito un esempio di utilizzo del pacchetto Sympy di Python per poter fare del calcolo simbolico con Julia.
Tra i tanti pacchetti a disposizione, propri del mondo Julia o acquisiti da altri mondi, ne abbiamo tanti per la grafica e nel manualetto allegato, da considerarsi estensione di quello citato sulle basi del linguaggio, ho ritenuto opportuno illustrare qualche strumento utile per la grafica, intesa sia come forma di rappresentazione di dati sia come forma di interfacciamento con l’utente.
Come sempre il manualetto è liberamente scaricabile, stampabile e distribuibile.
Quando i numeri sono grandi
Quando eseguiamo calcoli con il computer utilizzando strumenti preconfezionati, come la calcolatrice più o meno potente che ci passa il sistema operativo o un foglio di calcolo, abbiamo sempre a che fare con la così detta precisione.
La precisione è l’accuratezza con cui ci viene presentato il risultato di un’operazione matematica, cioè il grado di corrispondenza del risultato che ci fornisce il computer con il vero valore che dovrebbe restituire l’operazione.
Generalmente con un foglio di calcolo, sia che lavoriamo con numeri interi sia che lavoriamo con numeri decimali, se questi sono di una certa dimensione otteniamo risultati espressi in notazione scientifica con una quindicina di cifre significative, l’ultima delle quali arrotondata, prima di una eventuale serie di zeri che completano il risultato.
Con questi strumenti possiamo ottenere risultati fino a circa 300 cifre di cui solo le prime quindici significative o nessun risultato se la quantità di cifre è ingestibile. Mai otteniamo risultati sbagliati: a volte approssimati ma mai sbagliati.
Quando eseguiamo calcoli con programmi di calcolo scritti da noi dobbiamo invece stare molto attenti alle caratteristiche del linguaggio di programmazione che utilizziamo in quanto potremmo facilmente andare incontro a gravi disavventure, soprattutto quando abbiamo a che fare con calcoli che coinvolgono grandi numeri. Potremmo infatti ottenere risultati completamente strampalati, purtroppo anche senza che ce ne accorgiamo.
Su questo argomento ho ritenuto utile proporre l’allegato manualetto, liberamente scaricabile, stampabile e distribuibile.
Non così difficile come sembra
Nei manualetti di presentazione di alcuni linguaggi di programmazione che ho pubblicato su questo blog ho sempre sostenuto che la via più semplice per chi voglia cominciare a programmare è quella di utilizzare un semplice editor di testo.
Magari un editor di testo assistito, come Geany, che assomiglia molto a una IDE (Integrated Development Environment) in quanto colora in vario modo le parole chiave dei linguaggi più conosciuti, consentendo così di diminuire il pericolo di errori di battitura, e ci dà modo di compilare e di eseguire il codice senza uscire dall’editor.
Con qualche eccezione: nel caso di Python ho suggerito l’editor incorporato nella IDLE in quanto ci offre assistenza nella scrittura del codice con la code completion.
Stessa cosa per il linguaggio Pascal, soprattutto se abbiamo l’obiettivo di creare un programma con GUI (Interfaccia Grafica per l’Utente), per il quale ho suggerito l’IDE Lazarus.
Esiste un’altra IDE che va per la maggiore in quanto è stata scelta da Google a supporto del suo Android Studio: Intellij IDEA.
La sua utilità si rivela in pieno per la programmazione con il linguaggio Java, non così semplice come i linguaggi che hanno formato oggetto dei miei vari manualetti e per il quale ben viene la code completion di IDEA, soprattutto se vogliamo produrre programmi con GUI.
Altrettanto dicasi se vogliamo produrre programmi con GUI con il nuovo linguaggio Kotlin: questo semplifica di molto il linguaggio Java ma, per la parte grafica, occorre usare il vero e proprio linguaggio Java.
Tra l’altro IDEA è dotato di un designer per produrre GUI in modo visuale, addirittura senza bisogno di scrivere codice per la parte grafica.
Intellij IDEA fa tantissime cose ed è pensato soprattutto per progetti di programmazione anche molto impegnativi.
Questo lo rende alquanto complesso da utilizzare e il principiante, a prima vista, sente di trovarsi di fronte a una cosa che non fa per lui.
Ma non è così. E’ complicato usare IDEA se facciamo cose complicate, ma per le cose semplici a portata di principiante anche IDEA diventa semplice, basta sapere come usarlo per le cose semplici.
E’ quello che cerco di dimostrare nell’allegato manualetto, liberamente scaricabile, stampabile e distribuibile.
Python per la data science
Nel dicembre 2020 ho pubblicato su questo blog l’articolo “Orange: data science con Python senza scrivere codice” con allegato il manualetto “orange” in formato PDF che introduce all’utilizzo di questo magnifico regalo del software libero.
A chi voglia, pur a livello dilettantesco, affrontare i primi rudimenti della data science scrivendo codice in linguaggio Python dedico ora l’allegato manualetto.
Come sempre si tratta di materiale liberamente scaricabile, stampabile e distribuibile.