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.

biginteger

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.

idea

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.

python_data_science

Python parla e ascolta

Nell’allegato in formato PDF “tts_stt” al mio articolo “Software libero per sintesi e riconoscimento vocale” ho presentato alcune soluzioni di software libero per ottenere che il nostro computer reciti un testo scritto oppure scriva un testo sotto dettatura.
In quella sede ho anche accennato all’esistenza di un modulo Python per la sintesi vocale.
Ma l’attrezzatura Python per fare queste cose va ben oltre questo accenno e, in questo periodo in cui sto presentando tutta la ricchezza del linguaggio Python, non posso evitare di completare il quadro.
Lo faccio nell’allegato PDF a questo articolo, liberamente scaricabile, stampabile e distribuibile.

tts_stt_python

Python e il calcolo scientifico

Nell’ottobre 2020, dopo aver parlato molto di Python in questo blog, ho ritenuto utile produrre un manualetto, allegato all’articolo “Python per principianti”, in cui sono descritte le basi del linguaggio ad uso di dilettanti che vogliano divertirsi a scrivere codice per propri usi personali.
Dando per scontata la conoscenza di queste basi avevo precedentemente, nel maggio 2018, in un allegato all’articolo “Grafica con Python”, illustrato il modulo Tkinter attraverso il quale possiamo vestire i nostri programmi Python con una interfaccia grafica.
Sempre dando per scontata la conoscenza di queste basi avevo precedentemente, nel settembre 2019, in un allegato all’articolo “Software libero per il calcolo simbolico”, descritto il modulo Sympy attraverso il quale possiamo utilizzare il linguaggio Python per il calcolo simbolico.
Per calcoli numerici molto impegnativi, tipo quelli ricollegabili alla Data Science ed all’analisi dei big data, per eseguire i quali la scrittura del codice va ben oltre le basi del linguaggio, nell’articolo “Orange: data science con Python senza scrivere codice” del dicembre 2020, ho illustrato uno strumento basato su Python che ci dà modo di sviluppare queste analisi senza conoscere il linguaggio.
Ora, a parte la grafica e il calcolo simbolico, mi accorgo che tra le basi del linguaggio e la data science c’è una zona, identificabile genericamente come calcolo scientifico, nella quale il dilettante può trovare modo di divertirsi utilizzando alcuni moduli aggiuntivi: Numpy, Scipy e Matplotlib.
Ad un utilizzo di base di questi moduli Python dedico l’allegato manualetto in formato PDF, liberamente scaricabile, stampabile e distribuibile.

python_calcolo_scientifico

Perché sempre nuovi linguaggi di programmazione?

Esistono tantissimi linguaggi di programmazione. In questo blog ne ho presentati una decina, per limitarmi a quelli alla portata di un dilettante principiante.
La maggior parte dei linguaggi esistenti proviene dallo scorso secolo ma almeno una quarantina – e non sono pochi – sono stati creati nei primi vent’anni di questo secolo: i più noti e utilizzati sono C# del 2000, Scala del 2003, Go del 2009, Kotlin del 2011, Julia e Rust del 2012, Crystal del 2014 e Raku del 2015.
I primi due sono praticamente riscritture di Java: C# ad opera della Microsoft nell’ambito del progetto .NET e Scala nel mondo del software libero.
Di Go, come semplificazione del linguaggio C, di Kotlin, come semplificazione del linguaggio Java, e di Julia, come rivale del linguaggio Python, ho parlato in questo blog, dedicando a ciascuno di essi un manualetto di apprendimento.
Si tratta sempre di linguaggi ampiamente debitori, nella concezione, a linguaggi preesistenti e creati con obiettivi di semplificazione, di miglioramento della velocità di compilazione o di esecuzione oppure di miglioramento della sicurezza.
Soprattutto il miglioramento della sicurezza rispetto a C e C++ è stato l’obiettivo dei creatori di Rust, di cui non ho mai parlato in quanto non è adatto all’apprendimento e non lo considero alla portata dei dilettanti cui è dedicato questo mio blog.
Lo stesso dicasi di Crystal, un linguaggio basato sul linguaggio Ruby, che migliora enormemente la sicurezza del fin troppo libero Ruby con il pregio di essere un linguaggio compilato. Il miglioramento della sicurezza ha comportato tuttavia l’introduzione di complicazioni, specie nella tipizzazione, che lo rendono ostico e praticamente inutilizzabile per fare della matematica come si deve e senza impazzire. Peraltro le funzionalità di Crystal sono soprattutto pensate nell’ambito del software di sistema: cose non da dilettanti.
Per noi dilettanti ritengo invece interessante Raku, la riedizione del vecchio Perl, arrivato alla versione 5, e che, con la versione 6, denominata Raku, diventa ancor più facile di quanto già non fosse, si arricchisce di un nuovo compilatore di bytecode e diventa interattivo, a tutto vantaggio di chi voglia imparare a programmare.
Alla divulgazione delle caratteristiche e delle basi di questa riedizione del linguaggio Perl dedico l’allegato manualetto.
Come sempre il documento è liberamente scaricabile, stampabile e distribuibile.

raku

Non dimentichiamoci del C

In questo blog ho pubblicato una serie di manualetti per acquisire le basi di alcuni linguaggi di programmazione che ritengo adatti per principianti dilettanti (Freebasic, Freepascal, Golang, Javascript, Kotlin, Newlisp, Python, Julia, Tcl/Tk).
Non ho fatto altrettanto per i linguaggi C/C++ e Java innnanzi tutto perché li classifico tra i linguaggi di più difficile apprendimento ed anche perché su questi linguaggi esiste un’ampia letteratura in libreria e in rete, dove abbondano anche tutorial ed esempi di programmazione.
Per quanto riguarda il linguaggio Java, nell’allegato in formato PDF “java_android” al mio articolo “Importante riconoscimento per Open JDK” dell’aprile 2016, lasciando alla letteratura esistente l’apprendimento del linguaggio, ho illustrato alcuni strumenti di software libero che ne facilitano l’utilizzo anche per la realizzazione di progetti importanti.
Per quanto riguarda il linguaggio C/C++ faccio altrettanto con il manualetto allegato, come sempre liberamente scaricabile, stampabile e distribuibile.

c_c++

Un nuovo linguaggio per la data science

Rispettando la realtà dei fatti, ogniqualvolta ho parlato di data science in questo blog il linguaggio di riferimento è sempre stato Python, con l’unica eccezione di quando ho parlato di Knime, uno strumento programmato in linguaggio Java, che consente di fare analisi di dati senza scrivere codice.
Da qualche anno è tuttavia insistente la presenza di un altro linguaggio open source, arricchitosi in poco tempo di funzionalità sempre più sofisticate, considerato ormai da molti come un forte concorrente di Python nel campo dell’analisi dei dati.
Si tratta del linguaggio Julia, nato alcuni anni fa al Massachusetts Institute of Technology (MIT).
Visto che la documentazione in lingua italiana su questo linguaggio è praticamente inesistente, e che quella esistente, oltre che essere in lingua inglese, molto spesso non è alla portata di dilettante, penso di fare cosa utile proponendo l’allegato manualetto per una conoscenza di base del linguaggio.
Al solito, il documento è liberamente scaricabile, stampabile e distribuibile.

julia

Pascal per principianti

In uno dei primi articoli all’apertura di questo blog dedicato al software libero, nel maggio 2015, ho festeggiato il rilascio della versione 1.4 di Lazarus, un software libero per scrivere e compilare programmi scritti in linguaggio Free Pascal, anche dotati di interfaccia grafica, interpretando l’evento come una resurrezione del vecchio linguaggio Pascal nel mondo del software libero.
Da allora, sia il Free Pascal sia Lazarus hanno avuto numerosi rilasci migliorativi, gli ultimi in giugno e in luglio di quest’anno 2020, a dimostrazione del fatto che si tratta di una coppia di strumenti che hanno tuttora amatori, nonostante il linguaggio Pascal sia poco utilizzato per la produzione di software commerciale a livello professionale.
Dal momento che si tratta di un linguaggio inventato per insegnare a programmare, pertanto particolarmente adatto a neofiti, ho pensato che ai frequentatori di questo blog farà piacere disporre di un manualetto del tipo di quelli che ho proposto per altri linguaggi.
Il documento allegato è, come sempre, liberamente scaricabile, stampabile e distribuibile.

freepascal

Python per principianti

In questo blog ho parlato spesso del linguaggio Python.
Presentando vari argomenti (grafica con Python, moduli Python per data scientists, calcolo simbolico con Python, Python su Android, ecc.) ho sempre dato per scontato che il lettore conoscesse le basi del linguaggio.
Peraltro sul linguaggio Python esiste una nutrita serie di manuali e manualetti in lingua italiana, anche alla portata di dilettante, ed ho sempre ritenuto pleonastico proporre a mia volta uno di quei manualetti che ho variamente proposto su altri linguaggi di programmazione aventi documentazione meno abbondante e meno accessibile.
Oggi, tuttavia, avverto questa come una lacuna ingiustificabile nei confronti dei dilettanti che seguono il mio blog e intendo rimediare proponendo l’allegato manualetto sul linguaggio Python per principianti.
In questo modo, se altri si aggiungeranno a coloro che, numerosissimi, hanno manifestato interesse agli argomenti Python avanzati che si trovano sul blog potranno ora trovare servizio completo.
Come sempre, il documento è liberamente scaricabile, stampabile e distribuibile.

python