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

Buon compleanno Linux!

Il prossimo agosto ricorre il trentennale dal primo vagito del sistema operativo Linux. Dal momento che non uso pubblicare sul blog nel mese di agosto, anticipo gli auguri per non perdere l’occasione.
“Salve a voi tutti, qui fuori, che usate Minix. Sto realizzando un sistema operativo (libero) (appena un passatempo, né grosso né professionale come gnu)…” è la traduzione dell’incipit del messaggio con cui Linus Torvalds, il 25 agosto 1991, rendeva pubblici i risultati di un suo lavoro hobbistico iniziato nell’aprile del 1991 affinché chiunque potesse migliorarli ed arricchirli.
Forse è anche stata la nascita dell’open source e, grazie alla collaborazione della schiera di volontari che vi si dedicarono, Linux, quel “sistema né grosso né professionale come gnu”, è diventato proprio il sistema operativo del progetto GNU e del mondo del software libero.
Alla faccia delle affermazioni che il ventunenne Bill Gates faceva, in una sua lettera del 1976, circa l’impossibilità che software prodotto da hobbisti che non si facevano pagare fosse buon software, a mio avviso, e non solo mio, Linux è un ottimo software, anzi, è molto meglio di Windows.
Lo hanno capito i professionisti informatici che lavorano con i server, che adottano quasi plebiscitariamente il sistema operativo Linux.
Il grande pubblico degli utenti di personal computer, al contrario, preferisce Windows: arrotondando le cifre decimali, in questo settore attualmente Windows sta attorno all’87%, Mac OS sta attorno al 10% e Linux soffre attorno al 3%.
Secondo Linus Torvalds tutto si giustifica per il fatto che uno che acquista un personal computer, o apparecchiatura similare consumer, non ha nessuna voglia di installare un sistema operativo e si tiene quello che trova installato: sul personal computer è installato Windows e va bene così, sul cellulare è installato Android (basato su Linux) e va bene così.
Rimane tuttavia da chiedersi perché i costruttori di personal computer preinstallano Windows e moltissimi costruttori di cellulari e di tablet preinstallano Android.
A mio parere semplicemente perché Windows e Android sono prodotti univocamente definiti e che possono essere arricchiti di software aggiuntivo in maniera standardizzata, sia sul piano della produzione del software sia sul piano della installazione di questo.
Linux di univocamente definito ha solo il kernel, tutto il resto è raggruppato in una così detta distribuzione e ogni distribuzione ha un aspetto diverso, ha caratteristiche di funzionamento non uniformi, la stessa installazione di software aggiuntivo avviene in modo diverso: non esiste uno standard.
Tutto ciò che per uno spirito libero che voglia capire quello che fa ed essere libero di scegliere è un punto di merito, per chi vuole semplicemente uno strumento che funzioni senza avere problemi di capire come o di capire come possa funzionare diversamente è un demerito.
E nessun costruttore di hardware può mettere a repentaglio le vendite dei propri prodotti perché ha preinstallato Open SUSE anziché Ubuntu, o Debian anziché Red Hat, o Linux Mint anziché Deepin: preinstalla Windows, che, nel bene e nel male, tutti sanno che cosa è e buona notte.
Ed andiamo avanti così, anche se, a differenza di quanto accadeva qualche anno fa, qualsiasi distribuzione Linux di quelle che ho appena nominato, soprattutto se preinstallata dal costruttore, ci offrirebbe un computer pienamente funzionante senza problemi e senza bisogno di alcuna configurazione, anzi, con una trasparenza ed una semplicità d’uso migliori di quella che ci propina Windows 10.
Ma così è.
Ci sarà sempre, comunque, qualcuno come me che continua a dire ed a cercare di dimostrare che Linux è il miglior sistema operativo esistente, che non è vero che è difficile da usare, ecc.: in questo mio blog l’ho fatto in molte occasioni. L’ultima è stata lo scorso aprile con il mio articolo “Le miniere del software libero” ed il relativo allegato in formato PDF “mondo_linux”.
Molto più di me, che divulgo software libero utilizzabile non solo su Linux ma anche su Windows e Mac, parla specificamente di Linux Dario Dieci (altrimenti noto come SuperDado) sul suo blog all’indirizzo https://www.alternativalinux.it/.
Ma a festeggiare il compleanno concorrono i cinesi, che stanno sempre più utilizzando Linux e che sono avviati a diventare il primo popolo senza Windows.

TuxGuitar: non solo un sequencer e non solo per chitarristi

In maniera imperdonabile, da appassionato di computer e di chitarra quale sono, non ho mai parlato di un gioiello del software libero pensato per i chitarristi, siano essi alle prime armi ed abbiano la necessità di una guida all’apprendimento, siano essi professionisti che abbiano il desiderio di esplorare rapidamente l’effetto di alcune posizioni diverse dal solito nella composizione di accordi.
Si tratta di TuxGuitar, un software libero gratuito che ha quasi tutte le caratteristiche e le funzionalità del blasonato e costoso software commerciale GuitarPro.
Nella sua icona, ove campeggia un pinguino, e nel nome, che inizia con Tux, rivela il suo legame con il mondo Linux: il pinguino è la mascotte di Linux e Tux è il suo nome, acronimo di Torvalds UniX, in omaggio al creatore di Linux, e, nel contempo, assonante con il termine inglese tuxedo, l’idea di smoking che caratterizza il manto del pinguino.
Ed è infatti nel mondo Linux che è nato TuxGuitar, appunto per rimediare al fatto che il preesistente GuitarPro era, come è, riservato agli utenti Windows e Mac (in verità è stato fatto un tentativo, con la versione 6, di rendere disponibile GuitarPro anche per Linux, ma le versioni precedenti non lo erano e le successive non lo sono più).
TuxGuitar, invece, è pienamente utilizzabile anche su Windows e Mac e chiunque abbia un computer può divertirsi con questo software. Essendo stato programmato in linguaggio Java, unica esigenza è che sul computer sia installato il Java Runtime Environment (JRE).
Per rimediare alla mia sin qui mancata attenzione ed essendomi accorto che la documentazione in lingua italiana scarseggia, ho pensato di fare cosa utile proponendo l’allegato manualetto che illustra le funzionalità di TuxGuitar, che, come si vedrà, è un sequencer come tanti altri, ma non solo, e può essere utile anche a chi ama la musica ma non la pratica con la chitarra.
In formato PDF, è liberamente scaricabile, stampabile e distribuibile, come si usa fare nel mondo del software libero.

tuxguitar

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

Le miniere del software libero

In questo blog, dedicato alla divulgazione del software libero, ho presentato tanti programmi, penso oltre il centinaio, per tutti i gusti e per tutte le esigenze.
Quasi sempre si tratta di programmi che possono essere innanzi tutto utilizzati sul sistema operativo del mondo del software libero, GNU Linux, ma che hanno versioni installabili anche sui sistemi operativi, così detti proprietari, Windows e Mac OS. Si tratta dei software più famosi, che hanno un proprio sito web dal quale possiamo scaricare il file per l’installazione sul sistema operativo preferito, purché si tratti del sistema e della versione adatta al file di installazione.
In questo caso utenti Linux, utenti Windows e utenti Mac sono sullo stesso piano: se dispongono di una versione del sistema operativo adatta per far funzionare il software lo installano avvalendosi del file di installazione.
Ma gli utenti di Linux possono procurarsi il software, sia esso utilizzabile anche su altri sistemi, sia esso riservato al sistema Linux, anche senza accedere ai siti, con il vantaggio di ottenere sempre versioni del software, magari superate e non più esibite sui siti, ma adatte alla versione del proprio sistema operativo Linux.
Come dire che Linux, con il software libero, può giocare a casa propria.
Per capire come si gioca in questa casa ho ritenuto utile proporre l’allegato manualetto, liberamente scaricabile, stampabile e distribuibile.
Spero così di contribuire a dimostrare quanto sia vera l’affermazione che GNU/Linux è il miglior sistema operativo del mondo.

mondo_linux

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

Software libero per fotografi

In questo mio blog ho presentato due gioielli del software libero sull’argomento fotografia.
Il primo, ffDiaporama, in un manualetto allegato all’articolo “ffDiaporama S.O.S.” del giugno 2017, riguarda un software con il quale possiamo utilizzare le nostre fotografie per costruire veri e propri filmati.
L’altro, digiKam, in un manualetto allegato all’articolo “digiKam, il massimo” del febbraio 2018, riguarda un software per la catalogazione di un archivio fotografico (ma non solo).
In entrambi i casi si tratta di software destinati ad utilizzare fotografie già prodotte e finite.
Esistono altri software destinati a produrre o a manipolare le fotografie prima che diventino cosa finita.
A questi dedico il manualetto allegato, liberamente scaricabile, stampabile e distribuibile.

foto_editing

Orange: data science con Python senza scrivere codice

Nell’aprile 2019, con il mio articolo “Software libero per data scientists” e l’allegato PDF “python_anaconda”, ho presentato l’armamentario che ci offre il linguaggio di programmazione Python per il data mining e la data science.
Armamentario fatto innanzi tutto del linguaggio Python e di una serie di librerie che lo arricchiscono per sviluppare script destinati a lavorare con masse di dati al fine di illustrarli, interpretarli e trarne conoscenza. Cose per fare le quali occorre saper programmare, avendo una profonda conoscenza del linguaggio e delle librerie che si utilizzano.
Nel giugno 2019, con il mio articolo “KNIME: l’alternativa a Python per data scientists” e l’allegato PDF “knime”, ho presentato un gioiello del software libero, costruito con il linguaggio di programmazione Java, attraverso il quale possiamo fare per lo più le stesse cose senza scrivere una riga di codice: semplicemente utilizzando visualmente strumenti preconfezionati e contraddistinti da icone, collegandoli tra loro con il mouse.
Con KNIME, ferma la necessità di avere la preparazione matematico-statistica per sapere ciò che si vuole, per farlo non occorre anche conoscere il linguaggio di programmazione per ottenere dal computer ciò che vogliamo ma semplicemente occorre conoscere gli strumenti preconfezionati che il computer ci mette a disposizione e saper scegliere quelli adatti.
Anche nel mondo Python esiste una cosa simile. Si tratta di una libreria, attualmente denominata Orange3, sviluppata al fine di facilitare l’utilizzo delle varie librerie Python per il data mining, che ci offre anche la possibilità di essere utilizzata visualmente con icone e mouse.
Come libreria utilizzabile per scrivere codice alternativo ad altro codice ritengo abbia scarsa utilità ed è forse per questo che non si trova un testo che ne parli, ma non mi sembra giusto ignorare la grande utilità ricollegabile alla possibilità di essere utilizzata visualmente.
Dal momento che nessuno ne parla e che la sola documentazione è quella disponibile sul sito internet, non sempre tecnicamente di agevole lettura e in lingua inglese, ho predisposto l’allegato manualetto illustrativo che non ha altra ambizione se non quella di far vedere di che cosa si tratta con qualche esempio.
Il documento è liberamente scaricabile, stampabile e distribuibile.

orange