Tornano di moda, arrivano sulle prime pagine dei giornali, sono oggetto di approfondimenti (come questo sul Sole 24 ore di qualche mese fa) e di libri (come questo di Mario Pireddu appena uscito). Quanto sarebbe stato felice il vecchio Abū Jaʿfar Muḥammad ibn Mūsā al-Khwārizmī, matematico, geografo, astronomo persiano del IX secolo, autore di un libro famosissimo, tradotto in Latino col titolo di “Algoritmi de numero Indorum” (generando un po’ di confusione tra il nome dell’autore e l’argomento).
Però gli algoritmi di oggi non hanno a che fare con l’algebra ma con l’informatica: si tratta della definizione di una procedura in passi elementari, così semplice che la può eseguire anche una macchina. Ci sono esempi famosissimi: l’algoritmo detto “Crivello di Eratostene” per trovare tuttii numeri primi, oppure il Bubblesort per ordinare una lista.
Gli algoritmi sono quella cosa che, se espressa in un linguaggio di programmazione, dà origine ad un programma. Per esempio, questo algoritmo:
- Ripeti per sempre l’istruzione seguente
- Scrivi “CIAO” sullo schermo
potrebbe essere rappresentato così:
e potrebbe essere scritto in BASIC così:
10 PRINT "CIAO" 20 GOTO 10
Ma nell’uso attuale (almeno di questi ultimi dieci anni, da quando in Italia è uscito “L’algoritmo al potere. Vita quotidiana al tempo di Google” di Francesco Antinucci, Laterza, 2009) algoritmo ha un’accezione ancora più ristretta. Sono chiamati così quei programmi che:
a) raccolgono dei dati relativi ai comportamenti delle persone, tipicamente online
b) li utilizzano per costruire un profilo delle stesse persone
c) usano il profilo per fare, o supportare, delle scelte
Ci sono vari punti oscuri: la liceità della raccolta dei dati all’insaputa dell’utente, la maniera in cui viene costruito il profilo e soprattutto l’utilizzo del profilo per scopi illeciti (per esempio, aumentare un premio assicurativo o rifiutare una candidatura per un posto di lavoro).
Ora non entriamo nella discussione sui guadagni reciproci dell’utente e del fornitore di servizi, sulla necessità di policy di trasparenza e cancellazione, sulla possibilità reale di non utilizzare quei servizi. Probabilmente il tema si incrocia con quello del ritorno in auge dell’Intelligenza Artificiale, dei robot, dei big data, del machine learning, in un allarme generale sull’imminente presa del potere da parte delle macchine. Algoritmo è solo un modo diverso di dire “automatismo fuori dal controllo umano”. Ma allora è proprio l’uso del termine algoritmo che è fuorviante.
Qualsiasi programma – dal client di posta elettronica al foglio di calcolo – contiene migliaia di algoritmi, o meglio può essere letto attraverso la lente dell’algoritmo che implementa, esattamente come un proposizione in una lingua naturale può essere letta attraverso le strutture sintattiche di quella lingua. Gli algoritmi non abitano un loro mondo a parte, non hanno uno statuto speciale. Per essere spiegati, raccontati, analizzati, devono essere espressi anche loro in qualche linguaggio (anche con fumetti, come in questo manuale introduttivo). E’ vero che per mostrare che due programmi, magari scritti in due linguaggi diversi, fanno la stessa cosa nello stesso modo si dice che implementano lo stesso algoritmo e si descrive questa parte comune con un terzo linguaggio più generale degli altri due. Linguaggio che può essere più o meno formale . Ma insomma, gli algoritmi non sono l’anima dei programmi, non esistono prima del programma o in un universo separato, ma sono solo un modo per parlarne da un certo punto di vista (quello della correttezza, dell’efficienza). In un articolo di qualche tempo fa mi interrogavo sul senso di questa visione platonica, che è talmente presente nella nostra cultura che è difficile esserne coscienti.
E quindi parlare di algoritmo invece di programma è una raffinatezza di cui francamente non capisco il vantaggio. E’ come dire: non metto sotto accusa quel libro, ma le idee che ci sono dentro. Le quali idee però (ammesso che preesistessero alla stesura del libro) sono state estratte e riassunte da qualcuno dopo aver letto il libro.
Peraltro, nei casi sopra citati, il punto non è l’esistenza di un algoritmo (è ovvio che ci sia, altrimenti non ci sarebbe nemmeno il programma) e nemmeno la natura dell’algoritmo, ma i pesi che gli vengono forniti; pesi stabili da persone umane, non da macchine. Per esempio, il fatto che voi leggiate questo articolo potrebbe avere un peso negativo, o comunque legato alla reputazione del suo autore, nella costruzione e aggiornamento del vostro profilo da qualche parte. Questo è deciso da qualcuno, non da un algoritmo, il quale si limita a comporre il profilo utilizzando i pesi forniti e applicandoli.
Parlare di algoritmi cattivi ha senso tanto quanto parlare di strutture sintattiche malvage. Gli algortmi possono essere valutati, ma in termini di efficienza, scalabilità, robustezza, magari eleganza. Prendersela con loro per il cattivo comportamento dei consigli di amministrazione delle società che offrono serivizi gratuiti online – in cambio dell’accesso libero a dati che poi rivendono – mi sembra un po’ ingiusto nei confronti del vecchio al-Khwārizmī e francamente anche dell’informatica.