Diventato di uso comune, il sostantivo algoritmo racchiude: concetti, idee e metodi anche complessi della computer science. Non è intimamente legato al computer o alla programmazione, anche se in informatica è fortemente vincolato a entrambi ed esprime al meglio le sue potenzialità nella matematica.
L’attuale società è stata rivoluzionata dalle tecnologie ITC e gli algoritmi. Le principali attività che assumono valore economico, politico o culturale di rilievo lo fanno grazie al trattamento delle informazioni. La grande diffusione delle informazioni e il loro trattamento è stato possibile grazie alle tecnologie e ai sistemi IT che, a partire dai primi anni Settanta, si sono sempre più diffusi, facendoci ritrovare immersi e condizionati da “paesaggi” digitali.
Per capire cos’è un algoritmo, il quale racchiude cerchiamo di dare risposta alla seguente domanda: Come si può risolvere un problema? o meglio: quando possiamo affermare che un problema è risolto?
Per un matematico una risposta potrebbe essere: un problema è risolto quando esiste un metodo per risolverlo. Ora facciamo una prima considerazione. Partendo dalla risposta del matematico se ne deduce che molto probabilmente nessuno impiegherà il proprio tempo per cercare una soluzione per risolvere un problema, scientifico o non, per il quale esiste già un metodo per risolverlo. Magari potrà mettersi alla ricerca di un metodo alternativo o una soluzione personale, ma questo è un altro discorso.
Ora, invece, vestiamo i panni di un informatico e poniamoci la stessa domanda. Ecco, questo è un punto decisivo della computer science: un problema non lo si considera risolto quando possediamo un metodo per risolverlo.
Nell’informatica non solo è necessario avere un metodo per risolvere un problema, ma dall’esecuzione di quel metodo è essenziale che si ottenga un risultato. Per questo nella computer-science, oltre ad aver dovuto progettare un metodo per la risoluzione di un problema, bisogna che questo procedimento sia eseguito. Il poter eseguire tale procedimento su di un computer prende il nome di algoritmo.
Un algoritmo, è un procedimento, un processo o più semplicemente un insieme ordinato di passi da fare, necessari alla risoluzione di una specifica richiesta.
In informatica un algoritmo deve soddisfare determinati criteri per riuscire ad essere considerato una soluzione fattibile ad un problema.
Tra il 400 e il 300 a.c. il matematico greco Euclide inventò un algoritmo in grado di trovare il massimo comune divisore di due numeri interi positivi. A quei i tempi i calcolatori non esistevano quindi risulta chiaro che inventò un procedimento matematico in grado di dare una risposta e risolvere quel problema.
Secondo molti la parola algoritmo deriva da Al Khuwarizmi, matematico persiano vissuto tra il 780 e l’850 d.c. circa. Al-Khwarizmi significa originario della Coresmia o Khwarezm, attiguo alla regione iraniana del Khorasan, località che fa parte dell’odierno Uzbekistan. Considerato uno dei primi ad aver fatto riferimento al concetto di algoritmo nella sua opera, nella quale descrisse procedimenti per risolvere operazioni matematiche.
Ricordato anche per i suoi fondamentali contributi dati all’Algebra mediante il suo famosissimo trattato Al-jabr wa’l muqabalah dal quale iniziò a circolare il nome “algebra”, diventato poi di uso comune in occidente.
Mentre per l’hardware, una delle prime macchine con processo controllato si deve al francese Joseph Jacquard, il quale realizzò un telaio controllato da un algoritmo con l’ausilio di schede perforate.
Charles Babbage, matematico, ha progettato la macchina analitica, che era in grado di eseguire algoritmi o programmi codificati dall’utente usando anch’essa schede perforate. Ada Byron, Contessa di Lovelace, fu la programmatrice di Babbage. Anche lei una delle figure più interessanti della storia riconosciuta come la prima donna programmatrice.
Sfatiamo fin da subito un falso mito: la tecnologia non è solo legata all’hardware della macchina, ma è legata anche allo studio e la progettazione di algoritmi. Quelli davvero efficaci ed affidabili fanno registrare in genere un incremento prestazionale superiore a quello della tecnologia meramente legata alla macchina.
Quando si intende il tempo di un algoritmo ci si riferisce al numero di operazioni eseguite in un determinato intervallo. In genere, meno tempo equivale a meno operazioni, e questo migliora le prestazioni.
Per comprendere il significato di algoritmo possiamo porci un’altra domanda: qual è lo scopo per cui nacquero i calcolatori moderni? I calcolatori sono nati perché si aveva la necessità di risolvere problemi che rappresentavano situazioni reali, della scienza, della tecnica, della economia. Risolvere problemi del mondo reale avendo a disposizione sistemi di calcolo.