Fino a qualche anno fa, una delle attività che definivano il computer e l'informatica era la scrittura del codice.
L'informatica, fin dai primi momenti, sembrava il modello giusto con cui interpretare la realtà.
Ad esempio: il cervello veniva visto come un computer in cui l'hardware era influenzato dai geni, mentre il software era influenzato dalla nostra esperienza, il dna era un linguaggio di programmazione con cui creare macchine biologiche.
Come se la realtà fosse fatta non più di oggetti, ma di regole e le regole definissero la realtà.
Ora non vorrei proporre un'equazione superficiale, ma per un certo tipo di aziende, il codice sorgente non solo definiva l'azienda, ma era l'azienda.
Ad esempio per Google, per la Microsoft, per la Sun, per l'open source e così via.
Il loro software era la loro identità.
E quel software cosa conteneva? Conteneva regole!
Ok la programmazione procedurale prima e ad oggetti poi, era sicuramente uno strumento in bianco e nero, se paragonato ai nuovi strumenti di intelligenza artificiale e machine learning.
Ma tanto bastava.
Il programmatore, specie nella fase in cui la globalizzazione non si era fatta sentire, era una figura importante e ben pagata.
Appartenere a quella casta, voleva dire essere al riparo dai dissesti dell'automazione.
Scrivendo codice e procedendo sulla via dell'automazione, molte figure professionali si sono estinte, gli uffici si sono snelliti, il lavoro è diminuito.
Fino ad oggi esiste ancora una relazione stretta tra bisogno di automazione (taglio dei costi e ottimizzazione dei processi) e ricerca di programmatori.
Ma tutto questo sta finendo, vediamo di capire come.
La vecchia idea di intelligenza artificiale era semplice, se inserisco in un computer un certo numero di regole, quel computer sarà in grado di interpretare il mondo.
Oggi l'idea di regola e quindi di controllo, sta lasciando il passo all'idea di addestramento, che nei prossimi anni diventerà sinonimo di programmazione.
Questo cambiamento è enorme, perché fin'ora, se si verificava un errore, bastava andare sul codice sorgente, trovare la routine responsabile e modificarla.
Con l'intelligenza artificiale il codice sorgente non esiste, o meglio esiste esiste un programma che spiega alla macchina come migliorarsi, ma non c'è un sorgente come l'abbiamo inteso fin'ora, che sintetizza i processi appresi.
L'ingegnere, dopo aver addestrato la macchina, non potrà leggere il codice che esprime quel miglioramento, le regole che la macchina impara tramite l'esperienza, non sono visibili.
Non si può sapere come fa la macchina a scegliere, ma si riesce, con la ripetizione a migliorare la sua capacità di scelta. E' lo stesso motivo per cui noi, quando pensiamo, non possiamo guardare nella nostra testa e cercare il codice sorgente che ha prodotto un certo pensiero.
Al momento la sintesi che il codice sorgente rappresenta, è un meccanismo di auto-osservazione troppo raffinato per un algoritmo di intelligenza artificiale, quindi si potrà addestrare, ma non saprà spiegarlo. Sarà come un bambino di un anno che impara a camminare, lo fa, ma non sa spiegare come. Lo stato attuale dell'intelligenza artificiale è questo.
Quindi se voglio far riconoscere ad una macchina un gatto, non scriverò le regole con cui riconoscerlo, ma farò vedere alla macchina migliaia di foto di gatti, e così facendo, la macchina memorizzerà quella forma.
Se la macchina dovesse confondere un gatto con una volpe, dovrò avviare un ulteriore addestramento con immagini di volpi, e la capacità di riconoscerle migliorerà.
Quindi il passaggio è significativo, non devo spiegare cosa fare, ma devo mettere la macchina nelle condizioni di imparare a fare.
Questo approccio è stato disponibile per decenni, ma oggi gli ingegneri lo stanno usando sempre di più. Vuoi l'enorme quantità di dati disponibili, e quindi l'enorme possibilità di addestramento, vuoi i computer che diventano giorno dopo giorno sempre più potenti.
Già Facebook utilizza questi meccanismi per decidere quale news mostrarti, stessa cosa Google foto utilizza questi processi per categorizzare le foto, o per tradurre i testi.
Per non parlare dello stesso algoritmo di ricerca di Google che con il tempo si sta poggiando sempre più su un meccanismo di Intelligenza artificiale.
Quindi volendo chiudere, nella programmazione si passerà da un modo lento ma fondato su regole certe, a un modo veloce ma non conoscibile. Col tempo sono sicuro migliorerà, ma per ora questo è lo stato.
Per approfondimenti:
https://www.wired.com/2016/05/the-end-of-code/

Commenti