Visualizzazione post con etichetta programmi. Mostra tutti i post
Visualizzazione post con etichetta programmi. Mostra tutti i post

sabato 20 ottobre 2018

Tutta colpa dell'Algoritmo

"Facebook cambia algoritmo", "Algoritmo impazzito", "Twitter sconfessa l'algoritmo": sono solo alcuni (estratti di) titoli di notizie recenti che hanno a che fare il mostro dei nostri tempi: l'algoritmo. Pochi giorni fa, ad un convegno in tema di privacy, una stimatissima professoressa di Diritto ha confessato che deve farsi aiutare dai tecnici a capire cosa vuol dire che "si è perso il controllo dell'algoritmo". Ne ha ben ragione: non ne ho idea neanch'io, di cosa vuol dire. Ma alla fine, cos'è 'sto algoritmo?
Dal Dizionario della lingua Italiana di De Mauro:
matematica: insieme di regole per la risoluzione di un calcolo numerico; gener., procedimento matematico
informatica: insieme di regole che forniscono una sequenza di operazioni atte a risolvere un particolare problema
Le parole su cui bisogna soffermarsi sono: regole, procedimento, risoluzione. Lo scopo di un algoritmo è trovare la soluzione di un problema; è composto da un procedimento e delle regole. Tutto qui; ma per capire meglio, guardiamolo un algoritmo (ho scelto quello che era mitico all'università, il bubble sort, che è il più efficiente tra i procedimenti di ordinamento):



In pratica, presa una sequenza di elementi, si procede a scambiare ripetutamente quelli che non rispettano l'ordinamento, finché non si arriva alla sequenza ordinata. Facile no?
In realtà, quello che mi preme sottolineare è che un algoritmo non è altro che un procedimento logico per risolvere un problema. Niente di più. Un frutto dell'ingegno umano. Che poi deve diventare qualcosa di realmente utilizzabile, tipicamente un programma software: il che vuole dire che qualcuno, che non è quasi mai chi ha "inventato" l'algoritmo, lo traduce in un linguaggio di programmazione, diventando, appunto, il programma (o parte di esso). In realtà, vale anche il viceversa: ogni programma non è altro che l'implementazione di uno o più algoritmi, che magari esistono solo nella testa del programmatore.
Ovviamente niente vieta che un algoritmo possa essere sbagliato (cioè non risolve correttamente il problema), o che lo sia il corrispondente programma (cioè il software non fa quello che prevede l'algoritmo); ma se si effettuano i dovuti controlli, la questione è marginale.
Che c'azzecca tutto ciò con gli algoritmi che impazziscono? Niente, appunto. Un algoritmo (o il computer attraverso il programma) fa ciò che gli viene detto. Il risultato è sbagliato se l'algoritmo (o il corrispondente programma) è sbagliato. Punto. A parte questo, non esistono algoritmi buoni o cattivi: buono o cattivo è lo scopo, o il risultato, dell'algoritmo.

Fin qui la teoria; la pratica è un po' più complicata. Perché gli algoritmi che, secondo alcuni, impazziscono, sono enormemente più complessi dell'esempio che ho proposto; ed è piuttosto comune (mi rifiuto comunque di considerarlo normale) che i suoi errori siano evidenziati in situazioni estreme, tipicamente dati enormi o molto diversi da quelli attesi da chi ha sviluppato l'algoritmo.
Gli algoritmi sono diventati famosi, uscendo dalle buie stanze dei nerd, con l'informatizzazione di massa, e da quando hanno iniziato ad avere effetti sulla vita dell'uomo comune: oggi vanno per la maggiore quelli che, a seconda dello scopo (o meglio, della tipologia di scopo) prendono il nome di Big Data, Intelligenza Artificiale, Machine Learning, e compagnia bella. Tutta roba bellissima per chi la studia, un po' meno per chi la subisce. Intanto perché l'abuso di questi algoritmi ci limita la libertà di scelta (vedi i risultati dei motori di ricerca: quelli che dovrebbero essere i più pertinenti sono scelti in base a criteri che non possiamo controllare); e poi perché molte volte nemmeno è chiaro come e perché si usano queste tecniche avanzatissime.

Facciamo un altro esempio, e lo prendiamo dal mondo dello sport, in particolare dalla pallavolo (chi mi conosce non ne resterà stupito). Esiste da anni la "moviola" in campo, per diverse situazioni; per stabilire la palla dentro o fuori, esistono in realtà due tecniche, una "reale" (telecamere ad alta velocità e risoluzione poste in corrispondenza alle linee) ed una "virtuale" (ricostruzione tridimensionale della traiettoria del pallone, lo stesso metodo usato nel tennis, cosiddetto occhio di falco).

 

Nessun dubbio che l'algoritmo alla base di "occhio di falco" sia corretto; tuttavia, basandosi sulla ricostruzione della traiettoria nello spazio a partire dalle immagini riprese da apposite telecamere che coprono tutto il campo (una tecnica, chiamata motion tracking, usata da più di 20 anni nel cinema, per esempio così fu generato Gollum nella trilogia del Signore degli anelli), richiede un'attentissima calibrazione e posizionamento per garantire precisione. Ma se hai una tecnica più semplice, e che non ti lascia nessun tipo di dubbio, perché usare un artificio, per quanto bellissimo e precisissimo? Eppure la prima viene utilizzata nelle competizioni italiane, e la seconda in quelle internazionali, ormai da diversi anni!

In conclusione, fermo restando che non sono gli algoritmi ad impazzire (è sempre e solo l'intelligenza umana a venire meno), è la dipendenza da essi il vero male della nostra società iperconnessa. Dove non portino effettivo beneficio per la comunità, è nostro dovere difenderci rifiutandoli, invece di lamentarci o, peggio, adeguandoci passivamente.

N.B. Il post è nato da un'idea di qualche giorno fa, ma non è un caso che sia stato scritto il giorno della finale del campionato mondiale femminile di pallavolo... serviva anche a smaltire la delusione della sconfitta (che non ha avuto nulla a che fare con decisioni arbitrali).

giovedì 11 gennaio 2018

Batterie, processori, prestazioni e sospetti

Prima delle vacanze natalizie c'è stato lo "scandalo" Apple: gli aggiornamenti di iOS usciti in concomitanza dell'inizio delle vendite dei nuovi iPhone rallentavano le app per via della degradazione delle prestazioni delle batterie più vecchie di un anno. La spiegazione tecnica fornita, in realtà, sembrava avere senso, certo i tempi erano assolutamente sospetti, infatti alla fine si sono scusati, forse vittime oltre le loro effettive colpe. Comunque sia il tema dell'obsolescenza programmata non è una novità... diciamo che per certi versi è prassi comune.

Mi riferisco in particolare al malcostume dello sviluppo dei sistemi operativi e delle applicazioni: inserimento di funzionalità tendenti all'inutile, insieme ad un appesantimento generale delle risorse, supporto al vecchio hardware eliminato ad arte... conviene a tutti. E anche il sospetto che certe tecniche di programmazione moderne, insieme ai linguaggi di programmazione più recenti, vadano proprio nel senso di non-ottimizzazione per alzare i requisiti di prestazione dell'hardware. I primi programmatori, complici anche schede di memoria grosse come quadri e costose come un Picasso, centellinavano i bit... oggi si usano 64 bit (8 byte) anche per i valori booleani (cioè: vero e falso), perché le memorie costano poco ed i programmatori pure!

Ora (inizio del 2018) è il momento dei processori, con delle falle nella progettazione che potenzialmente (per fortuna al momento non si conoscono casi effettivi di sfruttamento) possono causare danni catastrofici. In pratica, ciò che per decenni abbiamo considerato come ipersicuro, e quindi posto privilegiato dove salvare le informazioni più sensibili, ora si è scoperto essere accessibile anche dai livelli di sicurezza più bassi... Per fare una similitudine, pensate ai caveau di una banca: porte spesse un metro, guardie armate, chiavi multiple, etc, e poi si scopre che c'è la porticina senza chiave da cui entra il personale delle pulizie. In ogni caso, poiché cambiare tutti i processori degli ultimi 10 anni non è possibile, si ricorre a soluzioni software, perfettamente funzionanti (si spera!) ma che causano degradazione delle prestazioni. Proprio come le batterie di Apple. E siccome a pensar male si fa peccato, ma spesso ci si indovina... non è che questa situazione (sicuramente involontaria, e per certi versi gestita correttamente) non venga sfruttata per introdurre un altro tassello nell'ottica obsolescenza programmata???

Ribadisco, non sto dicendo che il tutto è stato fatto ad arte: il dubbio che mi viene è che qualcuno sfrutti la situazione per indurre i consumatori (che non siamo solo noi, possono essere anche grandi multinazionali) ad acquisti altrimenti rimandabili. Personalmente ritengo che il calo di prestazione fin qui prospettato dai primi risultati dei test siano accettabili per la stragrande maggioranza dei casi; e dove non arrivasse la pazienza, dovrebbe sopperire il buon senso: meglio un po' di tempo in più per aprire la porta che trovarsi il caveau vuoto!

lunedì 12 giugno 2017

La giungla delle licenze d'uso

Eccola, l'ennesima rottura di scatole: ogni installazione di un programma che si rispetti ha una maledetta pagina in cui si chiede di leggere e accettare la licenza. Addirittura, ora che i software sono diffusi in praticamente qualsiasi dispositivo quotidiano (inclusi i frigoriferi, gli antifurto, le bambole, i televisori, le automobili...), l'accettazione della licenza è un passaggio d'obbligo prima di iniziare ad utilizzarli! E siccome abbiamo sempre fretta, nessuno legge cosa accetta (alzi la mano chi lo fa).

A questo punto i soliti 7/8 lettori si guarderanno scambiandosi sguardi di vergogna. Oppure alzeranno gli occhi al cielo... eccolo di nuovo a pontificare su cose che non ci interessano!

Ma se qualcuno, per puro caso, si chiedesse perché vale la pena di discutere di un argomento così noioso, ecco la risposta. Questa maledetta paginetta è importante per 2 buoni motivi:
  1. Dichiara le regole che devono essere rispettate per concedere il permesso di utilizzo.
  2. Ha valore legale.
Fermi tutti! Cosa vuol dire permesso di utilizzo? Forse non tutti sanno che i beni immateriali sono quasi sempre tutelati dal diritto d'autore, cioè che l'ingegno profuso dall'autore nel creare qualcosa di originale, benché immateriale, venga remunerato e protetto (principio, in realtà, ineccepibile). Ciò vale per la musica, il cinema, il teatro, i libri ed anche per il software.
Normalmente (ed erroneamente) si è propensi a dichiarare "caro" un disco contenente una delle suddette opere, quando il puro disco vuoto costa pochissimo (ed ecco automaticamente che ci si sente in qualche modo giustificati a copiare il contenuto del disco stesso). Non è questa la sede per discutere se il costo commerciale del disco sia sempre giustificato dalla qualità dell'opera (certamente non lo è sempre, ma nemmeno mai), comunque sia l'avvento di internet ha cambiato lo scenario: i supporti stanno scomparendo, e tutto ciò che precedentemente veniva veicolato sui supporti fisici arriva ora attraverso la rete, rendendo di fatto l'opera ancora più immateriale, e contemporaneamente mettendo allo scoperto il fatto che non si paga il supporto, ma il suo contenuto. Con un grossissimo "però": il pagamento non è l'acquisto di un bene (una copia fisica), ma appunto l'autorizzazione (o licenza) ad usufruire di quel contenuto. E come se non bastasse, questa autorizzazione non è concessa solo con il corrispettivo del pagamento, ma anche con una serie di limitazioni sull'usufrutto! Certamente avrete notato, nei dischi dei film,  l'immancabile avviso  per la visione puramente privata... quella, appunto, è un esempio di queste limitazioni.

Per i software, queste limitazioni assumono proporzioni impressionanti, e quel che è peggio, di tipi di licenze ne esistono un numero spropositato (quasi impossibile trovarne due uguali), per cui fare un riassunto è impossibile. Ma è importante sapere e capire quali sono i temi che vengono trattati all'interno (perché, è bene ricordarlo, se si violano si è passibili di denuncia):
  • Numero di installazioni o di utilizzatori (persone) autorizzato
  • Uso in ambito personale, educativo/scientifico o commerciale
  • Copia o meno del supporto o dei file
  • Riutilizzo all'interno di altri software
  • Accessibilità/disponibilità o meno del codice sorgente
  • Trasferibilità della licenza ad altri soggetti
  • Responsabilità derivante dall'utilizzo del software
In realtà, almeno sull'ultimo punto si trovano tutti d'accordo, e ciò che viene asserito, più o meno, suona come un: arrangiati! Cioè, qualsiasi conseguenza derivante dall'uso del software non può essere ascritta al creatore dello stesso.
Se poi qualcuno si affida al principio che tanto non controlla nessuno (a parte l'evidente immoralità dell'atteggiamento), sappia che non proprio sempre è così: nell'azienda dove lavoro è arrivato un avviso ingiuntivo per utilizzo non autorizzato di un certo software (ed abbiamo verificato che la cosa purtroppo era vera, anche se in realtà era avvenuta sul computer di un ospite; ora la cosa è in mano agli avvocati).

Nel mondo del software, però, è diffusissimo il costume (presente anche negli altri casi, ma in misura molto minore) della gratuità della licenza: esistono milioni di software utilizzabili gratuitamente, ma attenzione, non liberamente! Anch'essi hanno una licenza con le sue brave limitazioni (che per la maggior parte degli utilizzatori finali, sono per fortuna accettabilissime). Altro aspetto, che contrariamente a quanto viene fatto credere non è completamente coincidente con il precedente, è la diffusione del codice sergente di un software (da cui il nome inglese open source): questa disponibilità infatti permette a chiunque (purché con le competenze necessarie) di analizzare il software in questione, e quindi controllarne la qualità (ne esistono di ottimi e di pessimi, come d'altra parte succede anche per quelli con codice chiuso).
Di tipi di licenze per software in qualche modo "liberi" ne esistono un gran numero, anche se quelle diffuse sono abbastanza poche, ognuna però con le sue peculiarità; non è questa la sede per approfondire (per iniziare, segnalo questa pagina su Wikipedia).

C'è un ultimo aspetto da sottolineare, e che probabilmente non è chiaro a tutti: che il principio della licenza si applica anche ai libri elettronici (ebook), che ormai diffusissimi, tanto che ormai ogni libro esce sempre sia in forma sia cartacea che elettronica (al più, viene proposto solo in elettronico). Questo comporta che non possiamo più prestare il libro, come si faceva una volta (pratica lodevolissima, soprattutto se prende la forma istituzionalizzata chiamata biblioteca); addirittura, mi sembra di aver capito che in certi casi non è nemmeno possibile spostarlo di dispositivo (cioè dal tablet all'ebook reader, per esempio). A mio avviso, questa rappresenta una stortura di un sistema che invece ha il suo perché.

Quindi, a meno che non si tratti di una licenza già conosciuta, è bene dare almeno una veloce occhiata, giusto per sapere cosa si può e soprattutto cosa non si può fare (e capire, perché no, anche che tipo è il creatore o il distributore di quell'opera...).