Java: rivoluzione nella programmazione

Intervista a Gaetano Tonello – Datatex Senior Project Manager

 

A cura Luigi Torriani

Annunciato ufficialmente nel 1995, Java nasce a partire dalle ricerche effettuate alla Stanford University nei primi anni Novanta da un team di sviluppatori guidati da James Gosling. Come è stata accolta all’epoca la nascita di questo nuovo linguaggio di programmazione? Quando Java ha iniziato ad avere successo?

Capire la storia del successo, ma prima ancora della genesi di Java, con ogni probabilità ci può aiutare – se lo desideriamo, e se ci interessa – a capire meglio che cos’è accaduto negli ultimi decenni e magari perché – con la cosiddetta “Information Technology” – ci troviamo oggi nel punto in cui ci troviamo.

Per quanto posso vedere navigando nel mare magnum di Internet, si è deciso – evitiamo di capire chi e perché ha preso questa decisione, perché è impossibile – che cadesse l’oblio su quasi tutto ciò che è accaduto prima del 1995.

 

Nella seconda metà degli anni ’80 del secolo scorso, si cominciò a parlare compiutamente di “Artificial Intelligence” con un approccio “discernente” ed “economico”.

“Discernente” perché – nonostante il concetto di AI fosse stato ben definito nelle Università Americane già dalla prima metà degli anni ’70 – nessuno aveva capito veramente in quel momento quale fosse il confine tra “elaborazione dei dati” e “Artificial Intelligence”.

“Economico” perché al di là di esercizi puramente accademici e fini a se stessi, l’AI ha consentito di produrre profitti concreti e consistenti solo dopo il 2000.

La storia di Java è – per chi desidera conoscerla veramente – questa che vado a raccontare.

Nella seconda metà degli anni ’80 del secolo scorso la Rank Xerox cominciò a rilasciare sul mercato le prime applicazioni commerciali sviluppate con l’AI.

All’epoca la Xerox era una vera e propria “gallinella dalle uova d’oro”.

Nei laboratori del Xerox PARC (Palo Alto Research Center), che, per chi non li conoscesse, sono stati la culla di innumerevoli sviluppi e innovazioni tecnologiche di svariate tipologie, fu messo a punto il primo vero “environment” di sviluppo di applicazioni AI.

All’epoca il lessico comunemente utilizzato non parlava di “environment”, bensì di “shell” (in Italiano “conchiglia”); il linguaggio di programmazione che stava alla base del Sistema non era “Java” – che non esisteva – ma il “GCLisp” (acronimo di “Golden Common Lisp”), una semplificazione del “Lisp”, linguaggio messo a punto al MIT di Boston nella seconda metà degli anni ’60 del secolo ‘scorso e utilizzato per la prima volta in un “Sistema Esperto” ad uso militare sviluppato dall’IBM.

Si cominciò per la prima volta a parlare diffusamente di “programmazione ad oggetti” (object-oriented programming), di “motore inferenziale” (inference engine), di “Sistema Esperto” (Expert System), di “apprendimento automatico” (machine learning), di “ingegnere della conoscenza” (knowledge engineer) e così via.

Lì per lì il mercato provò a fidarsi della rivoluzionaria “novità”, ma poi, agli inizi degli anni ’90 del secolo ‘scorso, successe qualcosa che nessuno poté prevedere e nessuno riuscì ad inquadrare nella corretta dimensione.

Arrivarono i concorrenti della Xerox, agguerriti più che mai.

Uno dei primi fu la Sun Microsystems, giovane azienda rampante, anch’essa nata agli inizi degli anni ’80 del secolo scorso nella galassia della Silicon Valley, a Santa Clara, che all’epoca si proponeva come l’acerrima avversaria di Palo Alto.

La Sun, tanto per capirci, fu colei che propose/impose al mondo il Sistema Unix e – più in senso lato –  il concetto di “open source”, ma tentò da subito anche la strada dell’AI.

In gran segreto creò una nuova ”shell”, che nelle intenzioni aveva l’ardire di competere con quella della Xerox, e che venne battezzata “Nexpert Object”.

Contrariamente alla Xerox, il progetto non fu mai reso ufficialmente pubblico, né tantomeno produsse prodotti commercializzabili.

Il linguaggio di programmazione che stava alla base di tutto era un’evoluzione dello “Smalltalk”, anch’esso “inventato” nello Xerox PARC.

La Sun strada facendo, constatando che – pur avendo nelle mani un prodotto tecnologicamente superiore – non riusciva a tenere il passo della Xerox, prese alcune decisioni drastiche, che condizionarono irrimediabilmente il futuro dell’AI degli anni successivi.

Sun innanzi tutto decise di dotarsi di un nuovo linguaggio di programmazione proprietario, che era una sorta di “crasi” tra il “C” (soprattutto) e lo Smalltalk (in minor parte) e per questo lanciò un secondo “progetto segreto”, denominato “Oak”.

Ma l’aspetto più innovativo del progetto era la presenza per la prima volta di una cosiddetta “virtual machine”, un qualcosa che avrebbe garantito la possibilità di eseguire i programmi compilati tramite Oak in qualsiasi Sistema Operativo (o per lo meno in qualsiasi SO supportato dalla tecnologia di Sun).

Il target del compilatore Oak non era più il Sistema Operativo della macchina “host”, ma la virtual machine installata su di esso.

Prendeva vita, per la prima volta, il principio “Write once, run everywhere” (Scrivilo una volta e fallo girare ovunque).

Questa scelta fu una spallata micidiale alla Xerox, che a sua volta aveva scelto di implementare e sviluppare tutta la propria tecnologia AI su una macchina “ad hoc”, la “1186 AI”, una macchina che – tra hardware con processori particolari, sistema operativo dedicato e compilatore – costava quasi 100.000 $ alla fine degli anni ’80 del secolo ‘scorso.

Anche se “Java” nasce ufficialmente da una costola di Oak a metà degli anni ’90 del secolo scorso, la seconda metà di quel decennio vide completamente sparire il termine “Artificial Intelligence”.

Termine che rientrò prepotentemente nell’immaginario collettivo non tanto per qualche famosa applicazione sviluppata e commercializzata, bensì per un famoso Film di Spielberg, intitolato per l’appunto “A.I. Artificial Intelligence” e portato nelle sale nel 2001.

La Sun, che all’epoca deteneva ancora la proprietà di Java prima di cederla alla Oracle, si ridestò, e cominciò a proporre Java come una sorta di “punto di partenza” per fare qualsiasi cosa, in qualsiasi contesto, su qualsiasi tipologia di device.

A dire il vero, questo risveglio fu stimolato, molto più che dalla concorrenza di IBM, dai passi da gigante compiuti dalla robotica (industriale e non) in Giappone, nazione che però da tempo aveva fatto una scelta di campo assai diversa, avvalendosi di tecnologie basate su un linguaggio di programmazione totalmente “altro”, vale a dire il “Prolog”.

Comunque la vogliamo giudicare, la scelta della Sun – dopo quasi vent’anni dalle prime applicazioni “convincenti” in AI – fu la scelta “vincente”, anche se forse un po’ “ritardata”.

P.S.: non sprecate tempo a cercare su Internet conferma indubitabile a quanto ho detto, perché per molti aspetti non la troverete…

 

Anche IBM, nella seconda metà degli Anni Novanta, cercò di promuovere una nuova soluzione “java based” (il cosiddetto framework IBM San Francisco), ma decise poi di accantonare il progetto. Perché? Cosa sarebbe successo se questo progetto fosse stato portato a termine con successo?

La dismissione del Progetto San Francisco è tutt’ora insegnata nelle Università Americane come il paradigma di tutto ciò che “non” si sarebbe dovuto fare in quel contesto storico – a cavallo tra gli anni ’90 del secolo scorso e il primo decennio del nuovo millennio – nell’ambito dell’AI.

Per molti “critici a posteriori” (quelli che, tanto per intenderci con De Andrè, “…danno buoni consigli perché non possono più dare il cattivo esempio…”) il Progetto San Francisco denotava la massima arroganza degli “ideatori” e degli “sviluppatori” che cercavano in tutti i modi di assecondare il loro istinto teso a categorizzare e “tassonomizzare” tutto, ignorando proditoriamente che alcune cose “disordinate” del mondo reale sfidano le soluzioni lineari e “sillogistiche”, tanto più nei processi aziendali complessi.

Per altri il Progetto San Francisco fallì perché in IBM si resero gradualmente conto di un fatto forse semplice e banale, ma che deve comunque far riflettere: non importa quanto duramente gli sviluppatori si impegnassero, non avrebbero potuto mai “distillare” tutto in “proprietà” e “sottoinsiemi granulari”, dai quali sarebbe partito il problema del “regresso infinito”: una serie di proposte/asserzioni che continuavano a fare affidamento su altre proposte/asserzioni, fino ad arrivare all’infinito.

Per chi come me ha scritto software, risulta evidente che il “regresso infinito” prima o poi si manifesta come un – purtroppo fallimentare – tentativo di specificare qualsiasi cosa nel massimo livello di dettaglio: c’è sempre un altro livello di granularità al di sotto di qualsiasi dettaglio esistente.

Oggi con le “Reti Neurali” (Neural Network) si sta cercando di superare questo limite, ma se vogliamo essere onesti a tutt’oggi – inutile “bluffare” – non ci siamo ancora riusciti.

Noi della Datatex abbiamo vissuto l’epopea di San Francisco con il massimo coinvolgimento possibile.

Avevamo creduto e investito – tanto – in quel Progetto.

E alla fine dovemmo leccarci le ferite e ricominciare daccapo…

Io personalmente ho un’idea un po’ diversa da quanto sopra menzionato.

Innanzi tutto il contesto storico di riferimento.

Che era a cavallo di due eventi “informatici” di assoluta rilevanza planetaria, vale a dire il “millenium bug” e il passaggio all’Euro come moneta corrente di 19 Paesi Europei.

In questo contesto, l’attenzione e i “grandi investimenti” delle Aziende produttrici di applicazioni software erano tutte tese alle problematiche connesse a questi due eventi, che niente avevano a che fare con il “lignaggio tecnologico” delle nuove proposte.

In secondo luogo, IBM – abituata fino allo scadere della prima metà degli anni ’90 del secolo scorso a dettare legge nel campo dell’Information Technology – si trovò sostanzialmente “accerchiata”, da un lato dalla Microsoft per quanto concerneva i “micro” – non dimentichiamoci l’altro grande fallimento di IBM, quello del Sistema Operativo per PC “OS/2” – da un altro lato da Oracle per quanto concerneva i “Dbase”, e infine dalla Sun per quanto concerneva Java.

Giudicando a posteriori forse – e sottolineo l’avverbio “forse” – IBM fece con il Progetto San Francisco il “passo più lungo della gamba” e poi – come era capitato pochi anni prima con OS/2 – non ebbe il “coraggio” di credere fino in fondo nelle proprie possibilità.

Perché…?

La verità vera forse la sapremo solo quando chi prese certe decisioni si troverà sul letto di morte e finalmente vuoterà il sacco…

Io, ancora oggi, non l’ho capita…

 

 Oggi Java è uno dei linguaggi di programmazione più diffusi, e viene utilizzato anche dai programmatori di Datatex. Quali sono le caratteristiche e i punti di forza che hanno consentito a Java di dominare il mercato rivoluzionando il mondo della programmazione?

Questa è una domanda a cui non è facile rispondere.

La tentazione sarebbe quella di scegliere come risposta uno sproloquio sterile.

Alla luce di altre situazioni comparabili e sovrapponibili, mi viene spontaneo dire che è tutta una questione di “standard de facto”.

In fondo, se ci pensiamo, il mondo dell’AI – come i PC con Windows, come i dispositivi mobili con Android, come tante altre cose… – anelava ad avere uno “standard di riferimento”.

E con Java questo standard di riferimento l’ha conseguito.

Java non è assolutamente un linguaggio di programmazione “facile”.

Tutt’altro.

Ma Java, contrariamente ad altri “Object-oriented Languages” è diventato il “paradigma”, la maggior parte delle nuove generazioni di programmatori lo conosce, e – last but not least – è davvero molto completo, in grado di dare copertura funzionale alle necessità più disparate.

 

Che futuro vedi per Java? Come pensi che si evolverà il linguaggio nei prossimi anni?

Altra domanda a cui non è per niente facile rispondere.

Mi viene spontaneo dire che se in questo momento avessi tra le mani la sfera di cristallo, mi sentirei più a mio agio.

Le prossime tappe dell’AI saranno improntate alle “reti neurali”, e su questa materia chi oggi è in vantaggio su tutti gli altri è l’IBM.

Java, così per com’è in questo momento storico, secondo me è destinato ad “evolversi”, e pertanto – prima o poi – ad “estinguersi”, lasciando spazio a qualcosa di più “consono” alle esigenze future.

Ma almeno per i prossimi 10/15 anni sarà lo “standard di riferimento”.

È più di vent’anni che Datatex crede in Java, e – nonostante l’impasse iniziale con San Francisco – non ne è rimasta (e non ne rimarrà) delusa. In un futuro lontano – ripeto: tra una decina di anni – anche in Datatex si farà il punto della situazione sull’evoluzione dei linguaggi e si faranno scelte all’altezza e di avanguardia, come è sempre stato nella storia di Datatex.

 

 



Accetta la nostra privacy policy prima di inviare il tuo messaggio. I tuoi dati verranno utilizzati solo per contattarti in merito alla richieste da te effettuate. Più informazioni

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close