Evoluzione del software

Ritengo che almeno tre fattori abbiano influito in modo determinante all’evoluzione del software negli oltre 70 anni dalla sua nascita, quando entrarono in funzione le prime macchine elettroniche a programma memorizzato:

  • Il linguaggio: a differenza della scrittura, il software “cresce” rapidamente, incorporando quanto scritto in precedenza, secondo meccanismi definiti con termini quali routine, macro, librerie, sottoprogrammi, funzioni, classi. Si può dire che al linguaggio usato per istruire i computer si aggiungano parole, termini: ciascuno di questi “raggruppa” numerose istruzioni scritte con i termini del linguaggio precedente. L’utilizzo di questi nuovi termini rende il linguaggio più potente, l’interazione con la macchina più “intelligente”. Per questo motivo, per il software risulta particolarmente appropriata la nota metafora “cresce sulle spalle dei giganti”.
  • La componente scientifica: con la nascita del software sono nate e si sono sviluppate le nuove discipline della “computer science” e del “software engineering”. La prima si occupa di definire algoritmi, strutture dati, crittografia, compressione, protocolli di comunicazione, e degli altri aspetti teorici del trattamento dell’informazione. La seconda si occupa degli aspetti ingegneristici della produzione, collaudo e documentazione del software.
  • L’hardware: In parallelo alla crescita del software, si è verificato un aumento della potenza di calcolo dell’hardware di parecchi ordini di grandezza, con vantaggi inimmaginabili in termini di costo e diffusione dei dispositivi: uno smartphone di oggi è migliaia di volte più potente di un supercomputer degli anni 1960.

Il contributo combinato dei tre fattori indicati ne ha moltiplicato l’efficacia, con un effetto leva che ha reso esponenziale la diffusione del software. Limitandosi alle evoluzioni degli ultimi anni, si osserva un nuovo rilevante fenomeno: le macchine hanno iniziato ad imparare in modo autonomo. Non si tratta del vecchio concetto dei “sistemi esperti”, in voga verso gli anni 1980′, nei quali gli algoritmi su come trattare le informazioni memorizzate erano quelli specificati nel programma, cioè decisi dal programmatore.

L’apprendimento “moderno”, il cosidetto “deep learning”, una sottocategoria del “machine learning”, consente al software di prendere decisioni autonome in base alla grande quantità di dati oggi disponibili. I cosidetti “big data” derivano da varie fonti:

  • da sistemi informativi sempre più potenti ed interconnessi
  • dalla diffusione di smartphone, app e dispositivi IoT in grado di raccogliere dati “sul campo” e forniti dagli utenti
  • dal tracciamento delle attività svolte su PC e smartphone quando utilizziamo Internet in ogni momento della nostra giornata.

Dall’analisi di questa marea di dati il software impara a conoscerci, e di conseguenza è in grado di informarci secondo le nostre esigenze, di raccomandarci gli acquisti più adatti, ma anche di controllarci.


Dati e “regole generali” sono state fornite da noi umani, ma il software giunge a conclusioni autonome: per l’umano è oggi difficile, e in molti casi impossibile, risalire alle motivazioni delle scelte o dei risultati forniti dalla macchina.

La chiamiamo “intelligenza artificiale”, forse dovremmo chiamarla “intelligenza naturale”: la nostra, trasferita su un supporto fisico “potenziato”.#


Fonti:

error: