Speciali

Storie di algoritmi: le “istruzioni” che ci cambiano la vita

8 January 2019 | Scritto da Pietro Crovari

Sentiamo sempre più spesso parlare di algoritmi e le loro applicazioni sono ormai entrate nelle nostre vite

Cosa hanno in comune l’assemblaggio del comodino comprato all’IKEA, la preparazione degli spaghetti alla carbonara e l’intelligenza artificiale che regola i veicoli a guida autonoma? Ci sono delle istruzioni che vengono seguite. Che siano scritte su un libretto tramite dei disegni criptici, tramandate oralmente “dal cugino che lavora in un ristorante”, o che siano descritte in complicatissime righe di codice, siamo così abituati a essere circondati da istruzioni da seguire, che non ci viene in mente un’altra tecnica per insegnare a qualcuno a fare qualcosa di nuovo. Anche il computer lavora per istruzioni. Ogni programma che usiamo, infatti, è una sequenza di piccoli passi che dicono al programma cosa fare e ci permettono di compiere una serie di azioni: da una semplice operazione matematica fino a permetterci di andare nello spazio. Ogni volta che utilizziamo un computer o uno smartphone interagiamo con alcune di queste istruzioni e alcune sono così affascinanti e importanti nelle nostre vite che meritano di essere raccontate.

Nasce per questo la rubrica di Impactscool Magazine “Storie di algoritmi”.

Perché le istruzioni sono così convenienti? Se ci pensiamo attentamente, le istruzioni hanno tre principali vantaggi. Per prima cosa, ci permettono di scomporre il problema che vogliamo affrontare, di una qualsiasi natura e complessità, in una serie di sotto-problemi più semplici e che richiedono meno impegno. Questo processo di decomposizione può essere fatto più e più volte, fino a generare una sequenza di problemi da risolvere sufficientemente semplici e immediati. Secondo, le istruzioni creano un linguaggio comune tra il possessore di una conoscenza e chiunque voglia utilizzarla, che permette di trasmettere e tramandare il processo in questione in modo semplice ed efficace. Terzo, e forse più importante, se una sequenza di istruzioni è formulata correttamente, permette di ottenere lo stesso risultato ogni volta che sono eseguite correttamente. Quelle che noi chiamiamo istruzioni in matematica si chiamano algoritmi.

Gli algoritmi sono la base fondante dell’informatica. Dobbiamo sempre ricordare che il computer è una macchina “stupida”. Sa fare una cosa sola, ma la sa fare benissimo: seguire delle istruzioni. Tutti i programmi immaginabili che conosciamo, dal giochino sullo smartphone al sistema di controllo dei conti bancari, non sono altro che una serie di linee di istruzioni, più o meno complesse. Il funzionamento è sempre lo stesso: un algoritmo prende in Input dei dati dall’esterno, esegue dei calcoli, e rilascia un risultato come output. Input e output possono essere di qualsiasi tipo, dati testuali, numeri, immagini, tracce audio, o qualsiasi altro dato immaginabile.
È qui che entrano in gioco gli informatici. Il loro lavoro è proprio questo: avere un problema da risolvere, inventare un algoritmo per risolverlo, tradurlo in un linguaggio di programmazione, ossia una sequenza di comandi che sia comprensibile da un computer. Alcuni problemi sono più facili, altri sono più difficili. Altri ancora, per quanto semplici possano sembrare, sono terribilmente difficili da svolgere per un calcolatore. Per fortuna, molti problemi in domini totalmente differenti possono essere astratti a problemi generici più comuni, e per questo la comunità scientifica ha concentrato gli sforzi per trovare una soluzione il più semplice e efficace possibile.
Per ogni algoritmo il buon programmatore deve preoccuparsi di due aspetti principali. Da un lato deve essere corretto, cioè deve dare sempre risultati prevedibili, qualsiasi sia il contenuto dei dati in input, non deve produrre un output inaspettato, altrimenti si crea un bug che può avere conseguenze disastrose. Dall’altro lato, deve essere efficiente, ossia deve svolgere i calcoli nel minor numero di operazioni possibili, e richiedendo il minor numero di risorse possibili. Per esempio, se Google impiegasse anche solo una manciata di secondi a produrre il risultato di una ricerca sarebbe inutilizzabile. Se il pilota automatico di un’auto a guida autonoma avesse un tempo di reazione nell’ordine di secondi le conseguenze sarebbero fatali.

Gli algoritmi sono tra noi. Studiare e inventare nuovi algoritmi è soltanto un vezzo della comunità scientifica? Assolutamente no. Alcuni algoritmi sono il principale asset di aziende multimiliardarie, come l’algoritmo di ricerca di Google o il codice dietro a Facebook, mentre alcuni problemi ancora irrisolti sono considerati talmente importanti che vengono promessi milioni di dollari per la loro risoluzione, oltre che alla fama eterna.
Dietro molti degli algoritmi più famosi si celano storie molto interessanti, storie di potere, paradossi intriganti, e soluzioni talmente semplici da risultare disarmanti. Questa rubrica vuole dare vita a queste storie, proponendosi di raccontare cosa si cela dietro agli algoritmi che utilizziamo inconsciamente tutti i giorni. Scopriremo come funzionano, e perché funzionano così. Scopriremo che dietro ad operazioni apparentemente semplicissime si cela un intero universo, mentre dietro a problemi apparentemente molto complessi in realtà ci sono soluzioni semplici ed eleganti. Scopriremo che l’informatica non è soltanto una serie di codici, ma una vera propria scienza, affascinante e ricca di storia.

Pietro Crovari
Pietro Crovari

Pietro Crovari si è laureato in Ingegneria Informatica a Genova, dove ha proseguito con la Laurea Magistrale. Dopo essere stato 4 mesi al Georgia Insitute of Technology ad Atlanta per come Research Intern, attualmente lavora come Assegnista di Ricerca al Politecnico di Milano. Lavorando per quattro anni al Festival della Scienza di Genova si è innamorato del mondo della Divulgazione Scientifica. Ama due cose nella vita: quello che studia e raccontarlo agli altri. Entusiasta, inguaribile ottimista, affronta ogni giornata con un sorriso e con il desiderio di imparare qualcosa di nuovo!

leggi tutto