911, primo soccorso?
911, qual è la sua emergenza?
911, qual è l'emergenza?
911...
Il 9 aprile 2014 il servizio di emergenza del 911 si fermò all'improvviso
per milioni di persone negli Stati Uniti.
Rimase fuori uso per più di sei ore.
Più di seimila chiamate finirono nel vuoto.
Il governo risalì al problema: un PC
in un centralino di Englewood, in Colorado.
Un semplice errore di programmazione.
I responsabili di quel computer
decisero di programmarlo con un limite massimo di chiamate,
un limite che pensavano non sarebbe mai stato raggiunto.
Ma quella notte del 2014 fu raggiunto.
Il computer seguì le istruzioni.
Raggiunto il limite smise di smistare le chiamate.
Il problema non era il computer,
o un bug nel programma.
Era il programma stesso,
il processo decisionale con cui l'uomo comunica
con il computer.
Questo tipo di potere comporta una grossa responsabilità etica.
Non ha eguali.
Non c'è niente che lo sostituisca.
Proprio come
chi costruisce una città
influenza la vita di quella città,
i programmi controllano la nostra vita online, quindi la nostra vita in generale.
Non solo quando andiamo su internet, ma quando contattiamo i soccorsi...
...o andiamo dal dottore...
...o saliamo in macchina.
Siamo circondati da codici, ogni giorno.
Eppure solo 1/3 dell'1% di noi è in grado di scriverli.
PROGRAMMATORI AL MONDO
La stragrande maggioranza brancola nel buio.
Ma si può rimediare.
Come funziona davvero la programmazione?
E che nuovo mondo stiamo costruendo?
UNA DOCUSERIE ORIGINALE NETFLIX
Il computer.
Un'ingegnosa raccolta di componenti elettronici
creata dall'uomo.
Abbiamo i macchiari per risolvere i problemi
ma mancano descrizioni adeguate su come risolverli.
Quando si parla di programmazione, si pensa a qualcosa di complesso.
Ricordiamoci che tutto ciò che è presente su un computer
è stato creato da un essere umano.
PROGRAMMARE
Immaginiamo un alieno che chiede: "A che servono i codici? Cosa sono?"
Gli direi: "Mettiamola così: Sulla Terra, circa 50 anni fa,
un gruppetto di persone ha iniziato a costruire un altro pianeta.
Non un pianeta fisico, ma uno virtuale.
Se ti guardi intorno, per strada, vedrai gente camminare
con la testa china sul cellulare.
Immersi in quell'altro mondo.
Ecco cos'è un codice.
Le fondamenta dell'altro mondo.
Questo telaio è l'antenato di ogni computer e smartphone sulla Terra.
Fu inventato nel 1804,
e la novità furono queste carte.
I buchi di ogni carta lasciavano passare solo alcuni spilli.
Con migliaia di buchi su centinaia di carte,
i tessitori potevano riprodurre molte più fantasie di prima.
Gli scialli elaborati divennero di moda in Europa.
I ricami potevano essere così complessi da sembrare dipinti,
come questo, dell'inventore del telaio.
Prima di questi telai, i fili andavano selezionati a mano
da garzoni specializzati.
Anche i calcoli erano manuali, fatti con i cosiddetti "calcolatori".
I primi computer erano persone.
Le migliori macchine a disposizione potevano risolvere un solo problema,
come l'abaco per l'addizione e la sottrazione.
Il matematico inglese Charles Babbage voleva una macchina
in grado di risolvere qualsiasi problema matematico,
essendo "programmato" per questo.
Propose una macchina chiamata "Motore Analitico".
L'idea di Babbage lo fece passare alla storia.
I computer sono stati inventati prima da Babbage,
un eccentrico inventore inglese.
Babbage ebbe l'ispirazione per il suo funzionamento.
Teneva una copia di questa foto appesa a casa sua.
Il motore analitico di Babbage, come il telaio di Jacquard,
aveva parti fisiche: gli hardware.
E, come il telaio,
gli si poteva dare istruzioni attraverso carte forate.
I fori lasciavano passare degli spilli
e la loro assenza rimandava indietro gli altri
creando una catena di calcoli meccanici.
Le carte forate
sono i software.
Babbage non portò mai a termine il suo Motore Analitico,
ma una giovane donna che lavorava con lui vide che il suo potenziale rivoluzionario
andava oltre la matematica.
Ada Byron, contessa di Lovelace, scrisse:
"I limiti dell'aritmetica furono superati quando si ricorse alle carte forate..."
Vide ciò che aveva visto Jacquard:
i fori potevano essere molto più che semplici numeri.
Potevano essere disegni,
musica...
...o intere frasi.
Lo si può considerare una sorta di codice Morse.
Ogni lettera dell'alfabeto Morse è un insieme di due segni:
...oppure...
È binario.
E quei semplici bip permettono di dire qualsiasi cosa,
come questa chiamata d'emergenza inviata dal Titanic nel 1912.
ABBIAMO COLPITO UN ICEBERG. AFFONDIAMO...
"SOS" non significa niente.
È solo molto semplice da inviare con il codice Morse.
Si può pensare ogni lettera come una combinazione
di 0 e di 1.
Lo riconoscete?
Questo è un codice binario.
Ed è così che colmiamo il divario tra le macchine e il linguaggio umano.
Ogni 1 o 0 è una cifra binaria, o "bit".
Sono gli atomi dell'informatica moderna.
Forse li conoscete con un altro nome:
otto bit fanno un byte.
Avete presente la foto sul vostro PC da 1.1 megabyte?
Sono otto milioni e ottocentomila zeri e uno.
Così come i punti e le linee Morse servono a scrivere...
le serie di 0 e 1 del codice binario sono un modo per scrivere
ciò che accade in un computer:
Carica, sì o no.
Questo è un semplice circuito elettrico.
Immaginate milioni di questi che lavorano insieme.
Il computer moderno.
Su un circuito elettrico, questo è un bit.
La lampadina è spenta? Zero.
Accesa? Uno.
I computer rispondono solo a stimoli elettrici
quindi ciò che i programmatori fanno,
alla fin fine,
è solo una serie di on e off.
Funziona perché, se disposti nella giusta sequenza,
possono rappresentare una sequenza logica.
In pratica, la logica è una serie prevedibile di fatti o eventi,
come chiudere quest'interruttore...
...e quest'altro per far suonare la campanella.
Infatti, gli informatici lo chiamano "Circuito logico AND".
O "porta" logica.
Vediamo se ci riesco senza bruciare il tavolo.
In una porta AND, entrambi i circuiti devono essere chiusi
perché si accenda la luce.
Ci sono porte OR,
in cui la luce si accende se solo uno dei circuiti è chiuso.
Mettiamola in un altro modo.
Se uno di questi circuiti è chiuso, allora accendi la luce.
Questa sequenza "se allora"
è un algoritmo.
Oggi la parola "algoritmo" crea un bel po' di confusione.
Gli algoritmi impazziti non sono una novità!
Il funzionamento degli algoritmi è un mistero per molti.
Che cavolo è un algoritmo?
Un algoritmo è solo un insieme di istruzioni.
Immaginate di andare in un negozio.
Si può girare a sinistra e poi a destra.
Oppure prima a destra e poi a sinistra.
O anche girare quattro volte a sinistra, fare un giro al parco,
attraversare la strada, e poi girare quattro volte a destra.
Proprio come ci sono modi diversi per raggiungere un posto,
nella programmazione ci sono diversi algoritmi
per risolvere lo stesso problema.
L'obiettivo è trovare quello più elegante ed efficiente.
Un bel codice non si ripete.
È molto elegante. È efficace.
I computer che eseguivano gli algoritmi facevano quello che gli dicevamo,
ma molto più velocemente,
il che aumentava le potenzialità per gli esseri umani.
Quando gli scienziati iniziarono a sviluppare la bomba a fusione,
all'inizio usarono calcolatori umani.
Ma poi passarono a questo:
l'ENIAC fece calcoli termonucleari per sei settimane.
I risultati contribuirono a questo:
il primo test andato a buon fine nel 1952
di una bomba centinaia di volte più potente di quella a fissione
lanciata su Hiroshima e Nagasaki nella Seconda Guerra Mondiale.
La possibilità di programmare permise agli esseri umani di realizzare
ciò che volevano.
STRATOSFERA 160 KM
Ma negli anni '40 era tutto ancora macchinoso.
La programmazione binaria non era adattabile.
Le persone volevano ottenere di più dai codici.
Ma volevano un modo più semplice di scriverli.
La storia della programmazione da allora consiste nel renderla più simile possibile
al linguaggio umano
inventando ciò che quasi tutti i programmatori usano oggi:
i linguaggi di programmazione.
Rispetto al codice binario, si tratta di linguaggi piuttosto astratti.
Astrazione è una parola difficile.
I linguaggi più astratti si riducono agli stessi uno e zeri,
semplicemente organizzati in modo migliore.
Pensiamolo in termini biologici.
Gli essere umani sono complessi,
ma il 99% del corpo umano è fatto di soli sei elementi.
Da questi si arriva a molecole più grandi.
Da questo primo livello al più semplice fra gli esseri viventi,
il salto non è indifferente.
Il cervello umano
fa cose così avanzate
che è difficile credere sia composto dagli stessi elementi.
È lo stesso nel caso dei computer, solo che sono molto più semplici.
Questa è la buona notizia.
La storia della programmazione consiste nel muovere questa casella,
allontanandola dal codice binario per trovare
modi più facili e veloci di programmare
senza dover fare i conti, o addirittura comprendere,
le porte logiche e binarie alla base.
Questo permette ai programmatori di creare i prodotti che conosciamo.
Il primo passo per arrivarci fu...
Il linguaggio assembly, molto più facile da leggere e scrivere.
Al posto di 0-1-0-0-0-1-1-1,
usiamo "add",
e un programma chiamato assembler traduce le lettere
A-D-D nei suoi equivalenti in codice binario.
A questo livello, il codice binario è organizzato in lettere e numeri,
come gli atomi alla base delle molecole.
Eppure, programmare in questo modo restava difficile,
perché computer diversi usavano diversi linguaggi assembly.
Il programma scritto per un computer non funzionava per gli altri.
Presto si iniziò a pensare
di voler dare istruzioni al computer con le parole che si usano tutti i giorni.
Ci sono linguaggi di programmazione
costruiti usando il linguaggio assembly
e poi, da quei linguaggi, ne abbiamo costruiti altri.
Li avrete sentiti nominare.
- LISP. - BASIC.
- JAVA. - C++.
- Python 3. - HTML 5.
PEARL, PHP, un po' di C...
Proprio come le lingue parlate sono modi diversi
di esprimere lo stesso concetto ad altre persone,
i linguaggi di programmazione sono modi diversi di esprimere
lo stesso concetto ai computer.
Abbiamo più di un linguaggio di alto livello
perché, prima di tutto, linguaggi diversi
rispondono a bisogni diversi.
Prendiamo questi due.
Questo, COBOL, fu creato alla fine degli anni '50
per facilitare l'uso del codice da parte delle aziende.
Assomiglia molto all'inglese, se non che ogni conversazione
finisce con "STOP RUN".
Questo, CPL, fu sviluppato negli anni '60 e includeva più calcoli scientifici.
È come l'evoluzione biologica.
Gli organismi più complessi sviluppano caratteristiche
che li rendono più adatti al loro ambiente.
Francamente, è anche una questione di gusti.
Alla gente piace esprimersi in modo diverso.
Ad esempio, il linguaggio C++...
IL C++ FA DAVVERO COSÌ SCHIFO?
Per Elon Musk sì.
Potete inventarne uno voi.
Questo è un linguaggio di alto livello costituito solo dalla parola "moo".
Dico sul serio. Si chiama COW, mucca.
Questo è composto di citazioni di film con Arnold Schwarzenegger.
Ogni volta che penso "Beh, adesso avremo finito",
qualcuno inventa un nuovo linguaggio, e si crea il suo gruppo di seguaci.
Non vedo un limite all'invenzione di nuovi linguaggi.
E tutti questi linguaggi sono basati sulla logica.
Per esempio, un programmatore di Netflix potrebbe dire
"Se si sta guardando qualcosa da più di due ore, mostra questo."
CONTINUA A GUARDARE - ESCI
Ma affinché i codici avessero un impatto sul quotidiano,
la gente doveva usare i computer.
Quindi i computer dovevano essere più facili, intuitivi,
e questo necessitava di un altro grande salto.
Che ebbe inizio qui,
in una dimostrazione tenuta da Doug Englebart nel 1968.
Fra un attimo vedremo lo schermo
e il modo in cui si muove il localizzatore insieme ai movimenti del mouse.
Oggigiorno le persone non programmano scrivendo frasi
su un foglio per poi darle a qualcuno
che le inserisca.
Ci si siede davanti allo schermo con un'interfaccia grafica.
Le cosiddette GUI,
che permettono di programmare senza dover digitare nulla,
o di impiegare i codici più facilmente.
Generalmente si lavora in un centro di programmazione
come quello creato così bene da Alan e i suoi compagni,
al Centro di Ricerca Palo Alto della Xerox nei primi anni '70.
"Alan."
Eccolo Alan.
Lo considero il padre del personal computer
perché è stato il primo a concepirlo in quel modo.
E devo dire che, all'epoca, pensavo fosse fantascienza.
Quando si fanno grandi cose,
di solito si è più di uno.
E, cavolo, Park è stato fantastico.
È stato magico.
L'interfaccia grafica ha permesso a milioni di persone
di usare i computer in modo naturale.
Quando la Xerox pubblicizzò le GUI nel 1979,
mostrò come la programmazione poteva cambiare la vita quotidiana.
Vai nel tuo ufficio, e un apparecchio Xerox
ti fornirà la tua posta su uno schermo.
Presto, sistemi Xerox come questo
aiuteranno a gestire la risorsa più preziosa:
le informazioni.
C'erano persone come me e molte persone
in questo gruppo di ricerca che volevano migliorare il mondo.
Avevano un'idea strettamente connessa
all'estensione dell'uomo.
Qualcosa che interagisse con noi,
il pubblico,
la gente comune, rendendoci in grado
di fare più cose di prima.
Ci ha resi in grado di fare di più.
Le GUI furono un grande salto in questo schema.
E poi arrivò l'innovazione rivoluzionaria.
Un nuovo modo di distribuire ciò che potevamo fare con i codici.
In televisione si iniziò a parlare delle conseguenze di un tale programma.
Immaginate di essere seduti a bere il caffè,
e di accendere il computer per leggere le notizie.
Immaginate un mondo in cui ogni parola scritta, ogni foto di un dipinto,
ogni film girato, possa essere visto all'istante in casa vostra.
Penso che siamo arrivati alla vetta di qualcosa di bellissimo e terrificante.
È solo uno strumento, no?
No, non lo è.
Oggi, i software più efficaci sfruttano tutte queste innovazioni.
Uno studente universitario usò un linguaggio di programmazione, PHP,
per rendere possibile la condivisione su internet
attraverso computer con le interfacce grafiche.
Ne parlò nella sua prima intervista in TV nel 2004.
È una rubrica virtuale che permette di rimanere in contatto
all'interno delle università e nei social network locali.
Ora contiamo 100.000 iscritti, chissà a quanti arriveremo.
Siamo arrivati a due miliardi di persone su Facebook al mese.
Oggi i programmatori plasmano miliardi di vite umane.
Riguardo a lavoro, acquisti, cibo, affetti, relax.
Che stai facendo ora?
Mi stai guardando su un web browser Netflix.
Netflix stesso è un programma, eseguito in un browser,
ovvero un programma,
eseguito su un computer progettato usando dei programmi.
È una matrioska.
Il codice è come l'architetto di un museo
a cui milioni di persone pensano,
in cui vi camminano e che usano tutti i giorni.
Programmare non ha eguali, è pura creazione.
Pensi a come qualcosa dovrebbe funzionare,
ti siedi davanti al computer
e cerchi di realizzarla.
Penso che sia un ruolo di grande responsabilità.
Si ha un limite di velocità.
Non più di 100 chilometri orari.
Va bene.
Ma se avessi un'auto e il computer dicesse:
"Quest'auto non può andare più veloce di 100 km all'ora"?
È un modo diverso di controllare il comportamento.
Spesso, controllando le nostre scelte, i programmi nella nostra vita
hanno un effetto regolatore maggiore della legge.
E potrebbe essere una bella cosa.
Ci sono circa sei milioni di incidenti negli Stati Uniti ogni anno,
e un'analisi ha rilevato che il 94% è causato da chi è alla guida.
I progressi nella programmazione potrebbero salvare milioni di vite.
Ma possono anche mettere delle vite in pericolo.
Ho la cosiddetta cardiomiopatia ipertrofica,
che è il termine medico per dire che ho un cuore grande.
Letteralmente.
È circa tre volte più grande di un cuore normale.
L'ho scoperto quando avevo circa 30 anni, quindi il rischio di morire a 40
era molto alto.
L'elettrofisiologo ha detto che non era un problema
e potevo mettere un pacemaker.
Questo dispositivo funziona con i codici.
Un paio d'anni fa, quando ero incinta, il mio cuore ebbe delle palpitazioni.
Circa 1/4 delle donne ha le palpitazioni, è normale.
Ma il pacemaker pensò fosse sbagliato, e mi diede la scossa.
L'obiettivo dei produttori di pacemaker non è farci prendere la scossa incinta.
È l'ultima cosa che vogliono.
Solo che non l'avevano considerato.
Ci sono un sacco di decisioni
che i programmatori dovranno prendere.
E inevitabilmente
ci sarà una combinazione di circostanze
che non avevano previsto.
Quello che cerchiamo di insegnare
quando insegniamo l'arte della programmazione
è pensare e considerare
tutti i diversi scenari.
Come cercare di essere esaustivo
senza farsi fermare dal numero di cose che ci sono da considerare.
E sarà sempre di più così perché ora si programma
in modi completamente diversi.
Nel modo tradizionale si programmano le istruzioni per un computer.
Ora siamo in grado di dare al computer una serie di input
e di output
affinché si scriva i programmi da solo.
Ciò che si fa è dare al computer
molteplici esempi
categorizzandoli come: "questa è una festa."
Poi gli si dà altri input. L'ufficio di un dentista: non è una festa.
Una classe: non è una festa.
Il computer guarda gli esempi e cerca di creare
un sistema di classificazione.
Si chiama apprendimento automatico.
Quando si parla di intelligenza artificiale,
si intende questo.
È un tipo completamente diverso di astrazione
e di agire
che si discosta dal modo a cui siamo abituati.
Si chiamano algoritmi di apprendimento automatico perché il computer
genera le proprie istruzioni da seguire.
Ma, alla fine, anche loro vengono tradotte
in piccole istruzioni.
Google Traduttore prima era fatto da milioni di linee di codici.
Milioni di istruzioni date da persone.
Al momento, Google Traduttore
è composto da 500 linee che sfruttano l'apprendimento automatico.
Supponiamo che, a causa di una svista, nessuna delle foto delle feste inserite
includesse neri o ispanici.
Il computer potrebbe decidere che ci sia una regola per cui
solo bianchi e asiatici possono essere invitati.
Ci sono un sacco di bianchi e asiatici tra i programmatori.
Dovremmo estendere la possibilità di accedere alle sale di programmazione
per milioni di motivi.
Ne risulteranno domande migliori grazie alle esperienze diverse.
Ma, alla fine, se i dati forniti al sistema di apprendimento automatico
sono, ad esempio, il sistema giudiziario con forti componenti razziste,
anche se i programmatori sembrano una pubblicità della Benetton,
razze diverse, volti diversi, diversi contesti sociali...
il sistema imparerà comunque dai dati forniti.
Senza qualcuno che li corregga,
i dati del passato ci porteranno a ripetere gli errori del passato.
L'INTELLIGENZA ARTIFICIALE MANDA INNOCENTI IN PRIGIONE
La storia della programmazione riguarda l'ambizione e la creatività umana.
Decollo del razzo Falcon 9.
Abbiamo visto ciò che credevamo impossibile.
Un buco nero.
Stiamo costruendo un nuovo mondo
con strumenti sempre più intuitivi e utilizzabili sempre più su larga scala
per far sì che quel mondo sia migliore.
Abbiamo intrapreso un percorso per rendere i computer più accessibili
all'uomo e a un maggior numero di persone.
Abbiamo visto il cambiamento con i nostri occhi negli ultimi 50 anni.
Ecco perché è emozionante quest'epoca.
È importante ricordare che tutto ciò che usiamo al computer
è stato creato da un essere umano.
Si può essere una di quelle persone, in realtà, ed è importante diventarlo.
Si può cambiare il mondo in un modo davvero fondamentale.
C'è un mondo che verrà gestito usando l'apprendimento automatico,
i dati e la programmazione tradizionale in modi sempre più disparati.
E come società dobbiamo dire
"Ok, abbiamo questa tecnologia così avanzata
e potrebbe essere fantastica, ma non farà tutto da sola."