James Gosling, il padre di Java, uno dei linguaggi di programmazione più usati al mondo, ha parlato con il ricercatore Lex Fridman delle origini di Java e delle sue motivazioni per creare un linguaggio che sarebbe stato usato su decine di miliardi di dispositivi e diventato centrale per lo sviluppo di Android a Google.
Gosling ha progettato Java 25 anni fa mentre era alla Sun Microsystems. Nel 2009, Java sarebbe stato uno dei motivi principali per cui Oracle ha acquisito Sun. Secondo Oracle, oggi ci sono 51 miliardi di Java Virtual Machines (JVM) attive distribuite a livello globale.
Ma molto prima dell’acquisizione di Sun da parte di Oracle, Gosling ha detto che lui e una squadra a Sun “tipo di preoccupato che c’era roba in corso nell’universo di calcolo che l’industria informatica stava perdendo fuori” – quello che sarebbe diventato l’Internet delle cose di oggi.
SEE: Kit di assunzione: Sviluppatore Python (TechRepublic Premium)
“Era tutto su ciò che stava accadendo in termini di hardware di calcolo, processori e networking che era al di fuori dell’industria informatica,” ha detto.
“Questo era tutto dai primi barlumi di telefoni cellulari che stavano accadendo allora a – si guarda a ascensori e locomotive e sistemi di controllo di processo nelle fabbriche e tutti i tipi di apparecchiature audio e video.
“Avevano tutti dei processori al loro interno, stavano tutti facendo delle cose con loro e si sentiva come se ci fosse qualcosa che stava succedendo che avevamo bisogno di capire”.
In quella fase, C e C++ “possedevano assolutamente l’universo” e tutto veniva scritto in quei linguaggi.
Gosling dice che il suo team ha fatto diversi “viaggi epici” intorno al 1990 per visitare Toshiba, Sharp, Mitsubishi e Sony in Giappone, Samsung e diverse altre aziende sudcoreane, ed è andato “in tutta Europa” per visitare aziende del calibro di Philips, Siemens e Thomson.
“Una delle cose che saltavano all’occhio era che stavano facendo tutte le solite cose da computer che la gente aveva fatto 20 anni prima”, ricorda.
“Stavano reinventando il networking dei computer e stavano facendo tutti gli errori che la gente nell’industria dei computer aveva fatto.
“Dato che ho fatto un sacco di lavoro nell’area del networking, andavamo a visitare l’azienda X che descriveva questa cosa del networking che stavano facendo, e semplicemente senza niente, potevo dire loro come 25 cose che sarebbero state dei completi disastri.”
Scoprire che l’industria al di fuori del mondo dell’informatica tradizionale stava ripetendo gli errori precedenti è stato uno dei motivi chiave per cui Gosling e i suoi colleghi hanno pensato di poter offrire qualcosa di utile in Java.
Tuttavia, si è anche reso conto che l’industria dell’elettronica di consumo e l’industria dei computer avevano una visione molto diversa dei clienti, il che ha contribuito a informare come avrebbe progettato Java.
“In cima alla lista c’era il fatto che consideravano la loro relazione con il cliente come sacra. Non erano mai e poi mai disposti a fare compromessi per la sicurezza. Una delle cose che mi ha sempre reso nervoso nel settore dei computer era che le persone erano disposte a fare compromessi in affidabilità per ottenere prestazioni,” ha detto Gosling.
“Basta capire … come assicurarsi che se si mette un pezzo di pane tostato nel tostapane, non ucciderà il cliente. Non si incendierà e non brucerà la casa”, ha aggiunto.
Dopo quei viaggi su strada, Gosling e l’azienda hanno costruito un prototipo di sistema di controllo in codice C e C++ per beni di elettronica domestica, come una TV e un videoregistratore. La sicurezza era una considerazione chiave nei suoi obiettivi per quello che sarebbe diventato Java.
“All’inizio degli anni ’90 si capiva bene che la fonte numero uno di vulnerabilità di sicurezza erano solo puntatori, erano solo bug, tipo il 50%-60%-70% erano bug e la stragrande maggioranza di essi erano come buffer overflow. Dobbiamo assicurarci che questo non possa accadere. E questa è stata la cosa originale per me: ‘Questo non può continuare'”.
Ma all’inizio di quest’anno, Gosling ha letto una notizia sul team di Chromium che ha scoperto che il 70% dei bug di sicurezza nel codice base di Chrome erano bug di gestione della memoria e di sicurezza.
“Chrome è come un gigantesco pezzo di codice C++. E dal 60% al 70% di tutte le vulnerabilità di sicurezza erano stupidi trucchi per i puntatori. E ho pensato che sono passati 30 anni e siamo ancora lì”, ha detto Gosling.
Oltre alle considerazioni sulla sicurezza per Java, voleva garantire “la velocità dello sviluppatore”.
“Sono diventato molto religioso su questo perché ho passato una quantità spropositata di tempo della mia vita a caccia di bug di puntatori misteriosi. I bug del puntatore misterioso tendono ad essere i più difficili da trovare perché … quelli che fanno male sono una possibilità su un milione”, osserva.
“Quando stai facendo un miliardo di operazioni al secondo, significa che succederà. Sono diventato religioso sul fatto che se qualcosa non funziona, succede immediatamente e visibilmente. Una delle cose che era una vera attrazione di Java per molti negozi di sviluppo era che sappiamo che otteniamo il nostro codice attivo e funzionante due volte più velocemente.”
SEE: Stephen Hawking si sbagliava sull’IA che uccide gli umani (dice il robot)
La programmazione orientata agli oggetti era anche un concetto importante per Java, secondo Gosling.
“Una delle cose che si ottengono dalla programmazione orientata agli oggetti è una metodologia rigorosa su quali sono le interfacce tra le cose e l’essere davvero chiari su come le parti si relazionano tra loro.”
Questo aiuta ad affrontare situazioni in cui uno sviluppatore cerca di “aggirare il lato” e rompe il codice per un altro utente.
Ammette di aver turbato alcune persone impedendo agli sviluppatori di usare backdoor. Era una cosa di “ingegneria sociale”, ma dice che la gente ha scoperto che la restrizione ha fatto la differenza quando si costruiscono grandi e complessi pezzi di software con molti collaboratori in più organizzazioni. Ha dato a questi team chiarezza su come quella roba viene strutturata e “ti salva la vita”.
Ha offerto una breve critica all’ex capo di Android Andy Rubin sulla gestione di Java nello sviluppo di Android. Gosling nel 2011 ha avuto un breve stint a Google dopo l’acquisizione di Sun da parte di Oracle. La causa di Oracle contro Google sull’uso delle API Java non è ancora completamente risolta dopo un decennio di udienze in tribunale.
“Sono felice che l’abbia fatto”, ha detto Gosling, riferendosi al suo uso di Java in Android. “Java ha funzionato sui telefoni cellulari per un bel po’ di anni e ha funzionato davvero, davvero bene. C’erano cose su come l’hanno fatto, in particolare vari modi in cui hanno violato tutti i tipi di contratti”.
“Il tizio che l’ha condotto, Andy Rubin, ha attraversato un sacco di linee. Le linee sono state attraversate che da allora si sono trasformate in casi giudiziari giganteschi. non avevano bisogno di farlo e in effetti sarebbe stato molto più economico per loro non attraversare le linee”, ha aggiunto.
“Sono arrivato a credere che non importava cosa facesse Android, sarebbe esploso. Ho iniziato a pensare come un produttore di bombe.”